DeepAI AI Chat
Log In Sign Up

Code Staging in GNU Guix

09/04/2017
by   Ludovic Courtès, et al.
0

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 .

READ FULL TEXT

page 1

page 2

page 3

page 4

03/06/2020

SpellBound: Defending Against Package Typosquatting

Package managers for software repositories based on a single programming...
08/30/2016

Devito: automated fast finite difference computation

Domain specific languages have successfully been used in a variety of fi...
03/06/2019

Security Issues in Language-based Sofware Ecosystems

Language-based ecosystems (LBE), i.e., software ecosystems based on a si...
02/11/2021

The vote Package: Single Transferable Vote and Other Electoral Systems in R

We describe the vote package in R, which implements the plurality (or fi...
11/22/2011

Evolution of a Modular Software Network

"Evolution behaves like a tinkerer" (Francois Jacob, Science, 1977). Sof...
09/14/2017

Extending Functional Languages with High-Level Exception Handling

We extend functional languages with high-level exception handling. To be...
05/09/2021

Generative Mechanisms: The mechanisms that implement codes

The purpose of this paper is to abstractly describe the notion of a gene...