4 ms·
I have read about half of Eelco Dolstra's Ph.D. thesis [1]. I wish all distros worked like this. I had never heard of Guix before and was about to ask how it re
by random778 11y ago
I have read about half of Eelco Dolstra's Ph.D. thesis [1]. I wish all distros worked like this.
I had never heard of Guix before and was about to ask how it relates to / differs from Nix, so if anyone else is wondering:
Guix:
Specializes in providing exclusively free software.
Based on Nix [2].
Implementation differences, quoted from section 2.3 in [3]:
"Our main contribution with GNU Guix is the use of Scheme for both the composition and description of build processes, and the implementation of build scripts. In other words, Guix builds upon the build and deployment primitives of Nix, but replaces the Nix language by Scheme with embedded domain-specific languages (EDSLs), and promotes Scheme as a replacement for Bash in build scripts. Guix is implemented using GNU Guile 2.0 2 , a rich implementation of Scheme based on a compiler and bytecode interpreter that supports the R5RS and R6RS standards. It reuses the build primitives of Nix by making remote procedure calls (RPCs) to the Nix build daemon.
We claim that using an embedded DSL has numerous practical benefits over an independent DSL: tooling (use of Guile’s compiler, debugger, and REPL, Unicode support, etc.), libraries (SRFIs, internationalization support, etc.), and seamless integration in larger programs. To illustrate this last point, consider an application that traverses the list of available packages and processes it—for instance to filter packages whose name matches a pattern, or to render it as HTML. A Scheme program can readily and efficiently do it with Guix, where packages are first-class Scheme objects; conversely, writing such an implementation with an external DSL such as Nix requires either extending the language implementa- tion with the necessary functionality, or interfacing with it via an external representation such as XML, which is often inefficient and lossy.
We show that use of Scheme in build scripts is natural, andcan achieve conciseness comparable to that of shell scripts, but with improved expressivity and clearer semantics."
From my limited view, Nix has a very strong theoretical base. Do you expect any developments at that level, and do you think these hypothetical developments will be integrated by the developers of Guix, or might it at some point start ignoring improvements in the theory?
[1] http://nixos.org/~eelco/pubs/phd-thesis.pdf http://nixos.org/~eelco/pubs/phd-thesis.pdf
[2] https://en.wikipedia.org/wiki/Nix_package_manager https://en.wikipedia.org/wiki/Nix_package_manager
[3] http://arxiv.org/abs/1305.4584 http://arxiv.org/abs/1305.4584
- davexunit 11y ago>From my limited view, Nix has a very strong theoretical base. Do you expect any developments at that level, and do you think these hypothetical developments will be integrated by the developers of Guix, or might it at some point start ignoring improvements in the theory? I don't anticipate any major changes in the theory, but if there were improvements made, Guix would surely want to implement them. In general, we take things like build reproducibility further than Nix does. There are many packages in nixpkgs that use pre-built binaries rather than building from source. Guix also has tools to allow users to publish their own binaries for others, and also provides a tool to compare locally built binaries to remote binaries to detect non-determinism or security compromise.