Compositional Flexible Memory Representations for Algebraic Data Types - Archive ouverte HAL
Rapport (Rapport De Recherche) Année : 2022

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
Vignette du fichier
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)

Dates et versions

hal-03940742 , version 1 (21-08-2024)

Licence

Identifiants

  • HAL Id : hal-03940742 , version 1

Citer

Thaïs Baudon, Gabriel Radanne, Laure Gonnord. Compositional Flexible Memory Representations for Algebraic Data Types. 9495, Inria. 2022. ⟨hal-03940742⟩
65 Consultations
65 Téléchargements

Partager

More