Richard Gabriel, who attended some of the working group meetings, recalled in a personal com- munication a not uncommon interaction during these meetings. Guy Steele would ask a question about some edge-case feature behavior. Sometimes Brendan Eich would say “I don’t know,” and sometimes Eich and Shon Katzenberger would be unsure or disagree; in such cases, they would each turn to their respective implementation and try a test case. If they got the same answer, that became the specified behavior. If there were a difference, they would discuss the issue until they reached an agreement.
Academic Papers Invited to TC39
After receiving many bug reports frequently, an editor of ECMA-262 said:
Can I ask, are you using some automated tooling to find these, or just checking manually?
and invited the ESMeta team to a TC39 meeting to present the work to the committee. The presentation received the following quotes:
Yeah, first of all, I want to, I can hardly express how amazing this work is, this is really impressive. I sat through the presentation with my mouth open the whole time. So thank you very much.
First, this is truly amazing work. My mind is blown. I tried to get screenshots, just to remember the slides and then was just taking screenshots of every slide. So I stopped.
I think this was an excellent presentation. In terms of committee feedback, what you’re hearing here, this is the committee in ecstatic mode. This is, this is the maximum that I’ve heard in terms of positive feedback for a presentation. So, so thank you very much.
ESMeta in the CI System of ECMA-262 and Test262
After the first meeting with the ECMA-262 editors on November 24, 2021, the ESMeta team gave a presentation at the TC39 meeting on January 27, 2022. Then, ESMeta was integrated into the continuous integration (CI) system of ECMA-262 on November 3, 20222, and Test262 on November 25, 2022. Now, each ECMA-262 pull request (PR) will execute the ESMeta type checker, and any new or changed tests in a Test262 PR will be executed using the ESMeta interpreter.
Even after the mutually exciting meetings with the ESMeta team and the TC39 committee, it took about one year to integrate ESMeta into the CI system of both ECMA-262 and Test262. Because the existing JISET, JEST, JSTAR, and JSAVER were prototype implementations to see their feasibility in academic publications, the ESMeta team reimplemented the tools and branded them as ESMeta to be practically usable by every PR in the ECMA-262 and Test262 repositories.
Designing and implementing real-world programming languages are challenging tasks. The ability to reason about program behaviors often comes from formal specifications of language semantics, and labor-intensive efforts in formalizing the semantics often fall behind its actual implementations. In this blog post, we presented our story of applying various ideas in academic papers into the continuous design and implementation process of the most widely-used programming language, which guarantees the conformance of the language semantics and its implementations in tandem. As one of the reviewers of JISET stated, we believe that:
the standards committee can use your (our) model to design new versions of the language. I (the reviewer) believe that this is the right order to design and document languages: first the semantics, then the implementation and documentation, ideally generated from the semantics.
Bio: Sukyoung Ryu is a Full Professor of the School of Computing at the Korea Advanced Institute of Science and Technology (KAIST), where she leads the Programming Languages Research Group (PLRG). Her current research interests are language design and program analysis and their applications. Jihyeok Park is currently a post-doctoral researcher at Oracle Labs, Australia. He will join the Department of Computer Science and Engineering at Korea University as an Assistant Professor from March 2023.
Acknowledgments: We thank all the members of the Programming Language Research Group (PLRG) at KAIST for their collaboration and insightful feedback.
Disclaimer: These posts are written by individual contributors to share their thoughts on the SIGPLAN blog for the benefit of the community. Any views or opinions represented in this blog are personal, belong solely to the blog author and do not represent those of ACM SIGPLAN or its parent organization, ACM.