Code Staging in GNU Guix

Autor: Ludovic Courtès
Přispěvatelé: Service Expérimentation et Développement [Bordeaux] (SED), Inria Bordeaux - Sud-Ouest, Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria)
Jazyk: angličtina
Rok vydání: 2017
Předmět:
FOS: Computer and information sciences
Scheme (programming language)
Cover (telecommunications)
Computer science
Functional languages
Code staging
ACM: D.: Software/D.3: PROGRAMMING LANGUAGES/D.3.3: Language Constructs and Features
ACM: D.: Software/D.3: PROGRAMMING LANGUAGES/D.3.2: Language Classifications/D.3.2.0: Applicative (functional) languages
02 engineering and technology
[INFO.INFO-SE]Computer Science [cs]/Software Engineering [cs.SE]
computer.software_genre
Computer Science - Software Engineering
Source code generation
Scheme
020204 information systems
0202 electrical engineering
electronic engineering
information engineering

Code (cryptography)
Software deployment
Lisp
computer.programming_language
System administration
Functional programming
Computer Science - Programming Languages
[INFO.INFO-PL]Computer Science [cs]/Programming Languages [cs.PL]
Programming language
business.industry
ACM: D.: Software/D.4: OPERATING SYSTEMS/D.4.9: Systems Programs and Utilities
Code reuse
Variety (linguistics)
Computer Graphics and Computer-Aided Design
Variety (cybernetics)
Software Engineering (cs.SE)
Operating system
[INFO.INFO-OS]Computer Science [cs]/Operating Systems [cs.OS]
Software engineering
business
computer
Software
ACM: D.: Software/D.2: SOFTWARE ENGINEERING/D.2.9: Management
Programming Languages (cs.PL)
Zdroj: 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE’17)
16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE’17), Oct 2017, Vancouver, Canada. ⟨10.1145/3136040.3136045⟩
GPCE
DOI: 10.1145/3136040.3136045⟩
Popis: 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 .
16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE'17), Oct 2017, Vancouver, Canada
Databáze: OpenAIRE