Researchers have presented numerous frameworks for mechanizing the definition of programming languages. Ott takes a language definition in ASCII notation as input and generates various versions of the definition, including LaTeX, Coq, and Isabelle/HOL. K generates tools such as interpreters, model checkers, and verifiers, from language definitions encoded in K’s term rewriting system. PLT Redex supports the specification and debugging of language semantics using randomized test generation. Skeletal Semantics describes and manipulates language semantics and can generate OCaml interpreters and Coq formalizations. Some frameworks are more specialized. Sail supports processor instruction set architecture definitions, generates SMT encodings, theorem prover definitions, and LaTeX document fragments. ESMeta generates mechanized JavaScript semantics and various tools from prose specifications of JavaScript. SpecTec generates a typeset specification, including formal definitions and prose descriptions, and a meta-level interpreter from a SpecTec definition of the WebAssembly semantics.
Some of these tools have been applied to mechanize the definition of real-world programming languages and have been adopted by language standardization organizations to verify or generate normative language specifications. Sail supports the complete ISA specifications for several Arm architectures, automatically translated from the Arm-internal ASL reference (as used in the Arm reference manual). ESMeta is integrated into the CI systems of ECMA-262, the JavaScript language specification, and Test262, the JavaScript test suite. The WebAssembly Community Group has agreed to adopt SpecTec as a toolchain for WebAssembly specifications (when it is ready). Inspired by these achievements, researchers are applying similar techniques to other languages such as P4 and Rust. In this workshop, we will discuss different approaches to mechanizing the definition and implementation of real-world programming languages.
Tue 17 JunDisplayed time zone: Seoul change
| 09:00 - 10:10 | |||
| 09:1525m Talk | Programming Languages Must Have Formal Semantics. Period. RPLS Xiaohong Chen University of Illinois at Urbana-ChampaignFile Attached | ||
| 09:4025m Talk | Lightweight Semantics Engineering with Redex RPLS Matthew Flatt University of UtahFile Attached | ||
| 10:30 - 12:00 | |||
| 10:3025m Talk | SpecTec, a Single Source of Truth RPLS Sukyoung Ryu KAISTFile Attached | ||
| 10:5525m Talk | Trusted JavaScript Language Environments with ESMeta RPLS Jihyeok Park Korea UniversityFile Attached | ||
| 11:2025m Talk | The Software Supporting the JavaScript Language Specification RPLSFile Attached | ||
| 14:00 - 15:20 | |||
| 14:0525m Talk | Lightweight Hypervisor Verification: Putting the Hardware Burger on a DietRemote RPLS Nate Foster Cornell University; Jane StreetFile Attached | ||
| 14:3025m Talk | P4-Based Automated Reasoning (P4-BAR) using Symbolic Execution at Google RPLS Jonathan DiLorenzo GoogleFile Attached | ||
| 14:5525m Talk | Verification of WebAssembly Features RPLS | ||
| 15:40 - 17:30 | |||
| 15:4025m Talk | MiniRust: A Core Language for Specifying Rust RPLS Ralf Jung ETH ZurichFile Attached | ||
| 16:0525m Talk | Production Language Specification - Requirements for Multiple UsagesRemote RPLS Peter Sewell University of Cambridge | ||
| 16:3060m Panel | Panel: Mechanized Specifications for Real-World Programming Languages RPLS M: Sukyoung Ryu KAIST, P: Xiaohong Chen University of Illinois at Urbana-Champaign, P: Jonathan DiLorenzo Google, P: Michael Ficarra F5, P: Ralf Jung ETH Zurich | ||
Talks and Panels
Call for Participants
This workshop will be centered around a small number of invited talks on the development, use, and maintenance of real-world programming language specifications, interspersed with panel discussions and broader discussion among the attendees.



