[Nix-dev] GNU Guix 0.1 released (alpha)
Ludovic Courtès
ludo at gnu.org
Sun Jan 20 23:46:02 CET 2013
Hi Marc,
Marc Weber <marco-oweber at gmx.de> skribis:
> - why you go this way. One reason I can think of is because scheme might
> be more powerful than nix language. Are there more reasons?
Technically, I believe an EDSL has more to offer than a DSL with its own
implementation: tooling (compiler, debugger, REPL, editor support,
etc.), libraries (SRFI-1, etc.), general-purpose features (data
structures, i18n, networking, etc.), and integration with other tools &
libraries written in that language. Scheme makes it easy to define
EDSLs, through macros.
A nice thing is that Scheme can be used both on the “host” side (as a
replacement of the Nix language), and on the build side (a nice
replacement of Bash...).
Philosophically, I’m also interested in making a free software, and a
“GNU” distro.
I’ve always been disappointed that Nixpkgs includes non-free software,
and that even proposals to just move them in a separate directory were
rejected.
> - in which way you're going to utilize the new "power" of scheme first
> applying to what problems?
On the build side, it nicely replaces Bash, and also Coreutils,
Findutils, sed, and cURL. :-)
On the host side, it facilitates the implementation of new tools. For
instance, listing the available packages, searching them, using l10n’d
package descriptions, etc. is easy and fast. The auto-updater that’s in
the works, based on Nixpkgs’s gnupdate, is going to be both easier to
implement and faster (no need to parse several MiBs of a low-level XML
representation!).
Guix provides access to several levels of API: store RPCs, low-level
derivations, Scheme derivations, and high-level package descriptions.
That opens up a wide range of possibilities, I think. Again, this is
the typical advantage of using a single language.
There’s also a clearer separation of concerns: for instance,
env. vars. are not abused as arguments to the ‘derivation’ primitive.
> - how exactly you reuse existing "nix*" software. You should describe
> this.
It reuses the daemon, and thus libstore, as described in ‘README’.
> - what would be the advantages of your system - eg will you keep the
> lazy feature? If you build 150 packages its not a big problem.
Of course it’s lazy, it doesn’t try to build every package as soon as
you fire it. :-)
More details can be found in the manual, ‘README’, and in my GHM talk
linked from the web site.
Hope this clarifies things!
Ludo’.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : http://lists.science.uu.nl/pipermail/nix-dev/attachments/20130120/cddc2be5/attachment.bin
More information about the nix-dev
mailing list