Compositional Flexible Memory Representations for Algebraic Data Types
Résumé
Initially present only in functional languages such as OCaml and Haskell, Algebraic
Data Types have now become pervasive in mainstream languages, providing nice data abstractions
and an elegant way to express functions through pattern matching. Numerous approaches have been
designed to compile rich pattern matching to cleverly designed, efficient decision trees. However,
these approaches are specific to a choice of memory representation which must accommodate
garbage collection and polymorphism.
ADTs now appear in languages more liberal in their memory representation. Notably, Rust is now
introducing more and more memory optimisations. As memory representation and compilation
are interdependent, it raises the question of pattern matching compilation for highly customised
layouts.
We propose to ease the experimentation of new, custom layouts in the early stages of compiler
development by providing specification tools and a complete synthesis chain to generate pattern
matching compilation procedures.
In this report, we present a novel way to specify compositional memory layouts, for which we automatically synthesise elementary builders and accessors, yielding a correct representation-specific
compilation algorithm. This approach is implemented in a prototype tool ribbit.
Initialement présents dans les langages fonctionnels comme Ocaml et Haskell, les types algébriques sont maintenant de plus en plus présents dans les langages mainstream comme Rust. Ils permettent
une abstraction commode des données et une façon élégante de décrire des fonctions via le filtrage de motifs
(pattern-matching).
Ce rapport de recherche présente un framework facilitant la création et l'experimentation de nouvelles représentations mémoire en fournissant un outil de specification pour les représentations, et une chaine de synthèse complète pour générer les procedures de compilation attenante. La correction de l'algorithme est prouvée sous une hypothèse de _validité_ de la représentation. L'algorithme est implémenté dans l'outil ribbit.
Fichier principal
rr-9495.pdf (1.06 Mo)
Télécharger le fichier
rr-9495 (1).pdf (1.07 Mo)
Télécharger le fichier
Origine | Fichiers produits par l'(les) auteur(s) |
---|