Now integrated in mainstream languages, Algebraic Data Types (ADTs) have established themselves as a nice way to reason about data structures and their manipulation using \emph{pattern matching}. However, their use in low-level programming remains limited despite efforts, notably from the Rust community. Recently, Ribbit propose to let programmers express the precise memory layout of a given Algebraic Data Type, while still enjoying high-level programming constructs. Their compilation procedure covers efficient pattern matching, but leaves out constructors and struggles with arbitrarily mangled memory layouts.
We extend Ribbit with a new capability: generating arbitrary morphisms between memory representations of ADTs, and use this capability to compile complex code. We extend Ribbit to emit CFG-style programs with explicit memory allocation and full support for recursive types.
Slides (memorphisms.pdf) | 419KiB |
Fri 6 SepDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
11:00 - 12:30 | |||
11:00 45mTalk | Tail Modulo Async/Await FProPer Vivien GACHET LIP, Lyon, France, Gabriel Radanne Inria, Ludovic Henrio University of Lyon - ENS Lyon - UCBL - CNRS - Inria - LIP File Attached | ||
11:45 45mTalk | Ribbit with Memory Morphisms FProPer Thaïs Baudon ENS de Lyon & LIP, Gabriel Radanne Inria, Laure Gonnord Université Grenoble-Alpes - Grenoble INP - LCIS Pre-print Media Attached File Attached |