Functional Package Management with Guix
Résumé
We describe the design and implementation of GNU Guix, a purely functional package manager designed to support a complete GNU/Linux distribution. Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. It builds upon the low-level build and deployment layer of the Nix package manager. Guix uses Scheme as its programming interface. In particular, we devise an embedded domain-specific language (EDSL) to describe and compose packages. We demonstrate how it allows us to benefit from the host general-purpose programming language while not compromising on expressiveness. Second, we show the use of Scheme to write build programs, leading to "two-tier'' programming system.
Nous présentons la conception et la mise en œuvre de GNU Guix, un gestionnaire de paquets purement fonctionnel pour distribution GNU/Linux. Guix permet les mises à jour et retours en arrière transactionnels, la gestion de paquets sans privilèges, des profiles par utilisateur et le ramasse-miettes. Il s'appuie sur les mécanismes de bas niveau de l'outil Nix pour la construction et le déploiement de paquets. Guix utilise le langage Scheme pour son interface de programmation. En particulier, nous définissons un sous-langage de programmation spécifique plongé dans le langage Scheme pour la définition et la composition de paquets. Nous démontrons comment cela nous permet de bénéficier du langage de programmation généraliste hôte, sans pour autant compromettre l'expressivité. Enfin, nous montrons l'utilisation de Scheme pour les programmes de construction de paquets, produisant ainsi un système de programmation à deux niveaux.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...