Code Staging in GNU Guix
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 orchestratio...
Gespeichert in:
Veröffentlicht in: | arXiv.org 2017-09 |
---|---|
1. Verfasser: | |
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | |
---|---|
container_issue | |
container_start_page | |
container_title | arXiv.org |
container_volume | |
creator | Courtès, Ludovic |
description | 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 . |
doi_str_mv | 10.48550/arxiv.1709.00833 |
format | Article |
fullrecord | <record><control><sourceid>proquest_arxiv</sourceid><recordid>TN_cdi_arxiv_primary_1709_00833</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>2075666951</sourcerecordid><originalsourceid>FETCH-LOGICAL-a521-3ac76122dfcb1531883de915955b797d6014c527a3188da55345dc630111fb5f3</originalsourceid><addsrcrecordid>eNotjkFLw0AQhRdBsNTe9WTAc-LMTmZ3c5SgqVD0YD0vm2xStmhSk0bqvzdtPb3D-3jvE-IWIUkNMzy4_hB-EtSQJQCG6ELMJBHGJpXySiyGYQsAUmnJTDNxk3e-jt73bhPaTRTaqHj9iIoxHK7FZeM-h3rxn3Oxfn5a58t49Va85I-r2LHEmFylFUrpm6pEJjSGfJ0hZ8ylzrRXgGnFUrtj5d10mbKvFAEiNiU3NBd359mTtt314cv1v_aob0_6E3F_JnZ99z3Ww95uu7FvJycrQbNSKmOkPxXfQ7E</addsrcrecordid><sourcetype>Open Access Repository</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2075666951</pqid></control><display><type>article</type><title>Code Staging in GNU Guix</title><source>arXiv.org</source><source>Free E- Journals</source><creator>Courtès, Ludovic</creator><creatorcontrib>Courtès, Ludovic</creatorcontrib><description>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 .</description><identifier>EISSN: 2331-8422</identifier><identifier>DOI: 10.48550/arxiv.1709.00833</identifier><language>eng</language><publisher>Ithaca: Cornell University Library, arXiv.org</publisher><subject>Code reuse ; Computer Science - Programming Languages ; Computer Science - Software Engineering ; Embedded systems ; LISP (programming language) ; Programming environments</subject><ispartof>arXiv.org, 2017-09</ispartof><rights>2017. This work is published under http://arxiv.org/licenses/nonexclusive-distrib/1.0/ (the “License”). Notwithstanding the ProQuest Terms and Conditions, you may use this content in accordance with the terms of the License.</rights><rights>http://arxiv.org/licenses/nonexclusive-distrib/1.0</rights><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>228,230,776,780,881,27902</link.rule.ids><backlink>$$Uhttps://doi.org/10.48550/arXiv.1709.00833$$DView paper in arXiv$$Hfree_for_read</backlink><backlink>$$Uhttps://doi.org/10.1145/3136040.3136045$$DView published paper (Access to full text may be restricted)$$Hfree_for_read</backlink></links><search><creatorcontrib>Courtès, Ludovic</creatorcontrib><title>Code Staging in GNU Guix</title><title>arXiv.org</title><description>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 .</description><subject>Code reuse</subject><subject>Computer Science - Programming Languages</subject><subject>Computer Science - Software Engineering</subject><subject>Embedded systems</subject><subject>LISP (programming language)</subject><subject>Programming environments</subject><issn>2331-8422</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2017</creationdate><recordtype>article</recordtype><sourceid>BENPR</sourceid><sourceid>GOX</sourceid><recordid>eNotjkFLw0AQhRdBsNTe9WTAc-LMTmZ3c5SgqVD0YD0vm2xStmhSk0bqvzdtPb3D-3jvE-IWIUkNMzy4_hB-EtSQJQCG6ELMJBHGJpXySiyGYQsAUmnJTDNxk3e-jt73bhPaTRTaqHj9iIoxHK7FZeM-h3rxn3Oxfn5a58t49Va85I-r2LHEmFylFUrpm6pEJjSGfJ0hZ8ylzrRXgGnFUrtj5d10mbKvFAEiNiU3NBd359mTtt314cv1v_aob0_6E3F_JnZ99z3Ww95uu7FvJycrQbNSKmOkPxXfQ7E</recordid><startdate>20170904</startdate><enddate>20170904</enddate><creator>Courtès, Ludovic</creator><general>Cornell University Library, arXiv.org</general><scope>8FE</scope><scope>8FG</scope><scope>ABJCF</scope><scope>ABUWG</scope><scope>AFKRA</scope><scope>AZQEC</scope><scope>BENPR</scope><scope>BGLVJ</scope><scope>CCPQU</scope><scope>DWQXO</scope><scope>HCIFZ</scope><scope>L6V</scope><scope>M7S</scope><scope>PIMPY</scope><scope>PQEST</scope><scope>PQQKQ</scope><scope>PQUKI</scope><scope>PRINS</scope><scope>PTHSS</scope><scope>AKY</scope><scope>GOX</scope></search><sort><creationdate>20170904</creationdate><title>Code Staging in GNU Guix</title><author>Courtès, Ludovic</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-a521-3ac76122dfcb1531883de915955b797d6014c527a3188da55345dc630111fb5f3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2017</creationdate><topic>Code reuse</topic><topic>Computer Science - Programming Languages</topic><topic>Computer Science - Software Engineering</topic><topic>Embedded systems</topic><topic>LISP (programming language)</topic><topic>Programming environments</topic><toplevel>online_resources</toplevel><creatorcontrib>Courtès, Ludovic</creatorcontrib><collection>ProQuest SciTech Collection</collection><collection>ProQuest Technology Collection</collection><collection>Materials Science & Engineering Collection</collection><collection>ProQuest Central (Alumni Edition)</collection><collection>ProQuest Central UK/Ireland</collection><collection>ProQuest Central Essentials</collection><collection>ProQuest Central</collection><collection>Technology Collection</collection><collection>ProQuest One Community College</collection><collection>ProQuest Central Korea</collection><collection>SciTech Premium Collection</collection><collection>ProQuest Engineering Collection</collection><collection>Engineering Database</collection><collection>Publicly Available Content Database</collection><collection>ProQuest One Academic Eastern Edition (DO NOT USE)</collection><collection>ProQuest One Academic</collection><collection>ProQuest One Academic UKI Edition</collection><collection>ProQuest Central China</collection><collection>Engineering Collection</collection><collection>arXiv Computer Science</collection><collection>arXiv.org</collection><jtitle>arXiv.org</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Courtès, Ludovic</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Code Staging in GNU Guix</atitle><jtitle>arXiv.org</jtitle><date>2017-09-04</date><risdate>2017</risdate><eissn>2331-8422</eissn><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 connguration in a single, multi-tier language, while facilitating code reuse and code sharing .</abstract><cop>Ithaca</cop><pub>Cornell University Library, arXiv.org</pub><doi>10.48550/arxiv.1709.00833</doi><oa>free_for_read</oa></addata></record> |
fulltext | fulltext |
identifier | EISSN: 2331-8422 |
ispartof | arXiv.org, 2017-09 |
issn | 2331-8422 |
language | eng |
recordid | cdi_arxiv_primary_1709_00833 |
source | arXiv.org; Free E- Journals |
subjects | Code reuse Computer Science - Programming Languages Computer Science - Software Engineering Embedded systems LISP (programming language) Programming environments |
title | Code Staging in GNU Guix |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-02-08T12%3A30%3A53IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_arxiv&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Code%20Staging%20in%20GNU%20Guix&rft.jtitle=arXiv.org&rft.au=Court%C3%A8s,%20Ludovic&rft.date=2017-09-04&rft.eissn=2331-8422&rft_id=info:doi/10.48550/arxiv.1709.00833&rft_dat=%3Cproquest_arxiv%3E2075666951%3C/proquest_arxiv%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=2075666951&rft_id=info:pmid/&rfr_iscdi=true |