
TL;DR
This paper introduces G-expressions, a staging mechanism for GNU Guix that enhances code reuse, sharing, and hygienic execution in a multi-tier programming environment for OS configuration.
Contribution
It presents G-expressions as a novel staging technique that extends Lisp S-expressions with contextual info, improving OS configuration in Guix.
Findings
Gexps enable hygienic code staging in Guix.
They facilitate code reuse and sharing across OS configuration tasks.
Gexps support diverse use cases from package building to system services.
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
