Code Staging in GNU Guix - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Conference Papers Year : 2017

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.
Fichier principal
Vignette du fichier
gpce.pdf (455.11 Ko) Télécharger le fichier
Origin Files produced by the author(s)
Loading...

Dates and versions

hal-01580582 , version 1 (01-09-2017)

Licence

Identifiers

Cite

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. ⟨10.1145/3136040.3136045⟩. ⟨hal-01580582⟩

Collections

INRIA INRIA2
14930 View
2230 Download

Altmetric

Share

Gmail Mastodon Facebook X LinkedIn More