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 |
Externí odkaz: |