Code Staging in GNU Guix

Abstract : GNU Guix is a “functional” package manager that builds upon earlier work on Nix. Guix implements high-level abstractions such as packages and operating system services as domain-specic languages (DSLs) embedded in Scheme. It also implements build actions and operating system orchestration in Scheme. This leads to a multi-tier programming environment where embedded code snippets are staged for eventual execution. This paper presents G-expressions or “gexps”, the staging mechanism we devised for Guix. We explain our journey from traditional Lisp S-expressions to G-expressions, which augment the former with contextual information and ensure hygienic code staging. We discuss the implementation of gexps and report on our experience using them in a variety of operating system use cases—from package build processes to system services. Gexps provide a novel way to cover many aspects of OS configuration in a single, multi-tier language, while facilitating code reuse and code sharing.
Type de document :
Communication dans un congrès
16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE’17), Oct 2017, Vancouver, Canada. 〈http://conf.researchr.org/home/gpce-2017〉. 〈10.1145/3136040.3136045〉
Liste complète des métadonnées

Littérature citée [15 références]  Voir  Masquer  Télécharger

https://hal.inria.fr/hal-01580582
Contributeur : Ludovic Courtès <>
Soumis le : vendredi 1 septembre 2017 - 17:17:03
Dernière modification le : vendredi 8 septembre 2017 - 10:03:56

Fichiers

gpce.pdf
Fichiers produits par l'(les) auteur(s)

Licence


Distributed under a Creative Commons Paternité - Partage selon les Conditions Initiales 4.0 International License

Identifiants

Collections

Citation

Ludovic Courtès. Code Staging in GNU Guix. 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE’17), Oct 2017, Vancouver, Canada. 〈http://conf.researchr.org/home/gpce-2017〉. 〈10.1145/3136040.3136045〉. 〈hal-01580582〉

Partager

Métriques

Consultations de
la notice

10634

Téléchargements du document

729