PLSESep 4, 2017

Code Staging in GNU Guix

arXiv:1709.00833v13 citations
Originality Incremental advance
AI Analysis

This work provides a novel approach for operating system configuration in GNU Guix, facilitating code management and reuse, but it is incremental as it builds upon existing functional package management concepts.

The paper introduces G-expressions (gexps) as a staging mechanism in GNU Guix to handle embedded code snippets for execution, addressing the need for hygienic code staging in a multi-tier programming environment. It reports on their implementation and experience in various operating system use cases, such as package builds and system services, enabling code reuse and sharing.

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 connguration in a single, multi-tier language, while facilitating code reuse and code sharing .

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes