Code Staging in GNU Guix - Archive ouverte HAL Access content directly
Conference Papers Year :

Code Staging in GNU Guix

(1)
1

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

Attribution - ShareAlike - CC BY 4.0

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
14407 View
1982 Download

Altmetric

Share

Gmail Facebook Twitter LinkedIn More