Invited Speakers
- Andrew W. Keep (Facebook), on the Nanopass Framework.
- Amr Abdelwahab (tourlane.com), Privilege as a technical debt.
- Daniel Kochmański (Turtleware), on the Embeddable Common Lisp (ECL).
Highlights
Keynote: On ECL, the Embeddable Common Lisp
- Daniel Kochmański Daniel Kochmański https://turtleware.eu TurtleWare (SPEAKER) Poland
Embeddable Common Lisp is a Common Lisp implementation with historical roots dating back to 1985 when Kyoto Common Lisp was released as an open source project by Taichi Yuasa and Masami Hagiya. It is one of the first Common Lisp implementations predating the ANSI standard (CLtL1) and it has influenced its final version. First developed by academia, then by volunteers from the free software community, it still thrives as one of many actively developed Common Lisp implementations. Thanks to a portable and small core it is possible to embed ECL in other applications as a shared library. This property enables Common Lisp programmers to develop their applications and plugins as an extension to existing software and to use Common Lisp software on platforms like Android and iOS. Executables and libraries built with ECL are small and suitable for writing utilities and libraries used by applications outside of the Common Lisp world. Maintaining and improving a Common Lisp implementation is a challenging and fun task with many opportunities to learn about software and compilers. During this presentation I'll talk about the past, the present, and the future of ECL. I'll discuss its heritage, then move to its current architecture with its flaws and advantages, and I will finish with my plans for further development.
Keynote: The Nanopass Framework as a Nanopass Compiler
- Andrew Keep Andrew W. Keep https://andykeep.com Facebook (SPEAKER) USA
The nanopass framework is a domain specific language for defining compilers that provides two basic syntactic forms: define-language and define-pass. The define-language form defines the grammar for an intermediate representation and can either define the full language or extend an existing language. Language forms are represented using Scheme records and a parser and unparser can be constructed from the language definition to move between S-expression and nanopass language form representations. The define-pass form defines procedures for operating over these language forms, based on the specified input and output languages. In addition to these two basic forms, a number of small tools for interacting with languages exist, including tools for extracting the define-language syntactic form for a language, making it easier to see the full language when it was defined as an extension, along with tools for differencing two languages to produce the language extension form, pruning unreachable nonterminals, and defining a procedure for counting nodes in a language form for a given language. These tools are helpful, but we can imagine wanting more tools, for instance a tool to generate a equivalence procedure over language forms or a tool to generate a procedure for computing a histogram of nonterminal node types in a language form. Unfortunately, each tool must be written with knowledge of the internals of the nanopass framework. What if the nanopass framework instead provided an API for writing these extensions? What if the define-language and define-pass forms, were defined as nanopass languages that could be treated like other nanopass languages? How much of the nanopass framework could be written using the nanopass framework? This talk will explore this experiment.
Privilege as a technical debt
- Amr Abdelwahab Amr Abdelwahab tourlane.com (SPEAKER) Germany
Do you believe political correctness and empathy are buzzwords that limit society rather than contribute to its advancement? Do you think talking about topics like diversity quotas and privilege doesn't make much sense and you would rather spend this time talking about the latest in technology? In this talk I would like to take the chance to try and add the missing contexts to such terms and arguments, moreover, I will try to go through various examples on how it can impact your product from a very pragmatic perspective.
Workshop: Mixing Mutability into the Nanopass Framework
- Andrew Keep Andrew W. Keep https://andykeep.com Facebook (SPEAKER) USA
Languages defined using the nanopass framework are represented using immutable Scheme records [1], however, it can be useful to have mutable cells with the terminals of a language form. For instance, the Chez Scheme compiler represents each variable as a single Scheme record instance. This means the binding site and all use sites for a given variable all use the same record instance to represent that variable. The variable record contains mutable fields which allow information from variable uses to be visible at the binding site and vice versa. For instance, variable uses can report whether they are referenced, multiply referenced, or assigned to the variable binding site, or the variable binding site can record information needed at the use sites for a variable without constructing an environment within the pass. This workshop will give a brief introduction to the nanopass framework using an example compiler for a small subset of Scheme, and then look at how this technique is used for converting assigned variables and computing free variable sets in lambda expressions. [1] In addition to immutable records, standard (and hence mutable) Scheme lists are used for for representing lists within a language form, but the expectation is that these lists will not be mutated.
Location
GZ Riesbach email@email.com https://gz-zh.ch/gz-riesbach/ +41 44 387 74 50 (CONFERENCE) Seefeldstrasse 93 8008 Zürich SwitzerlandOrganization
Programme Chair
- Ioanna Dimitriou Ioanna M. Dimitriou https://ioa.re Igalia (PROGRAMME-CHAIR) Bonn Germany
Organizing Chair
- Didier Verna Didier Verna https://www.lrde.epita.fr/~didier/ EPITA / LRE (ORGANIZING-CHAIR) France
Local Chair
- Yukari Hafner Yukari Hafner Shinmera email@email.com https://shinmera.com Shirakumo.org (LOCAL-CHAIR) Switzerland
Committee
- Andy Wingo Andy Wingo Igalia (COMMITTEE) France
- Asumu Takikawa Asumu Takikawa Igalia (COMMITTEE) USA
- Charlotte Herzeel Charlotte Herzeel Imec, ExasSience Lab (COMMITTEE) Belgium
- Christophe Rhodes Christophe Rhodes Google (COMMITTEE) UK
- Irène Durand Irène Durand Université de Bordeaux (COMMITTEE SPEAKER) France
- Jim Newton Jim Newton EPITA Research Lab (COMMITTEE) France
- Kent Pitman Kent Pitman HyperMeta (COMMITTEE) USA
- Leonie Dreschler-Fischer Leonie Dreschler-Fischer University of Hamburg (COMMITTEE) Germany
- Marco Heisig Marco Heisig FAU Erlangen-Nürnberg (COMMITTEE SPEAKER) Germany
- Mark Evenson Mark Evenson email@email.com not.org (COMMITTEE) Austria
- Max Rottenkolber Max Rottenkolber Interstellar Ventures (COMMITTEE SPEAKER) Germany
- Metin Evrim Ulu Metin Evrim Ulu Middle East Technical University (COMMITTEE) Turkey
- Paulo Matos Paulo Matos Igalia (COMMITTEE) Germany
- Robert Goldman Robert Goldman SIFT (COMMITTEE) USA
- Robert Strandh Robert Strandh Université de Bordeaux (COMMITTEE SPEAKER) France
- Sky Hester Sky Hester consultant (COMMITTEE) USA
Programme
Times are local to the conference. You can download the programme in iCalendar format here.April 27th
Broadcast start
Welcome message
Keynote: The Nanopass Framework as a Nanopass Compiler
- Andrew Keep
Coffee Break
Omnipresent and low-overhead application debugging
- Robert Strandh
An R7RS Compatible Module System for Termite Scheme
- Frédéric Hamel
- Marc Feeley
Sealable Metaobjects for Common Lisp
- Marco Heisig
Lunch
Bidirectional leveled enumerators
- Irène Durand
Later Binding: Just-in-Time Compilation of a Younger Dynamic Programming Language
- Max Rottenkolber
Coffee Break
LLVM Code Generation for Open Dylan
- Peter Housel
Indexing Common Lisp with Kythe
- Jonathan Godbout
Lightning Talks
Social Event
April 28th
Broadcast start
Workshop: Mixing Mutability into the Nanopass Framework
- Andrew Keep
Partial Evaluation Based CPS Transformation: An Implementation Case Study
- Rajesh Jayaprakash
Coffee Break
Representing method combinations
- Robert Strandh
Bringing GNU Emacs to native code
- Andrea Corallo
- Luca Nassi
- Nicola Manca
RavenPack in the time of COVID-19
- Andrew Lawson
Lunch
Privilege as a technical debt
- Amr Abdelwahab
Coffee Break
JACL: A Common Lisp for Developing Single-Page Web Applications
- Alan Dipert
Why You Cannot (Yet) Write an "Interval Arithmetic" Library in Common Lisp -- or: Hammering Some Sense into :ieee-floating-point
- Marco Antoniotti
Coffee break
Keynote: On ECL, the Embeddable Common Lisp
- Daniel Kochmański
Lightning Talks