arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1709.00833cs.PLcs.SE
收藏

GNU Guix中的代码暂存

Code Staging in GNU Guix

Ludovic Courtès

摘要:

GNU Guix是一个“功能性”包管理器,它建立在Nix的早期工作之上。Guix将包和操作系统服务等高级抽象实现为嵌入在Scheme中的特定领域语言(DSL)。它还在Scheme中实现构建操作和操作系统编排。这导致了一个多层编程环境,其中嵌入的代码片段被分级以供最终执行。本文介绍了G-表达式或“gexps“,分期机制,我们设计的Guix。我们解释了从传统Lisp S表达式到G表达式的旅程,G表达式通过上下文信息增强了前者,并确保了健康的代码分期。我们将讨论gexp的实现,并报告我们在各种操作系统用例中使用它们的经验从包构建过程到系统服务。Gexp提供了一种新颖的方法,用一种单一的多层语言涵盖操作系统配置的许多方面,同时促进代码重用和代码共享。

英文摘要:

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 .

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑