中文

GNU Guix 中的代码分级

编程语言 2017-09-05 v1 软件工程

摘要

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

关键词

引用

@article{arxiv.1709.00833,
  title  = {Code Staging in GNU Guix},
  author = {Ludovic Courtès},
  journal= {arXiv preprint arXiv:1709.00833},
  year   = {2017}
}

备注

16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE'17), Oct 2017, Vancouver, Canada