2 #+TITLE: Guix NEWS – history of user-visible changes
3 #+STARTUP: content hidestars
5 Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
7 Copying and distribution of this file, with or without modification,
8 are permitted in any medium without royalty provided the copyright
9 notice and this notice are preserved.
11 Please send Guix bug reports to bug-guix@gnu.org.
14 * Changes in 0.3 (since 0.2)
18 *** Cross-compilation support
20 Guix can now cross-build packages. On the command-line, this is achieved with
21 the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
22 the guts of this is the ‘package-cross-derivation’ procedure. Core packages
23 of the distribution can already be cross-compiled. See the manual for
26 *** New ‘--max-silent-time’ option for “guix build” and “guix package”
28 See the manual for details.
30 *** New ‘--fallback’ option for “guix build” and “guix package”
32 This option instructs to fall back to local builds when the substituter fails
33 to download a substitute.
35 *** New ‘--requisites’ option for “guix gc”
37 See the manual for details.
40 *** “guix --help” now works when using Guile 2.0.5
41 *** Binary substituter multi-threading and pipe issues fixed
43 These could lead to random substituter crashes while substituting a binary.
44 See commits 0332386 and 101d9f3 for details.
46 *** Binary substituter gracefully handles lack of network connectivity
48 * Changes in 0.2 (since 0.1)
52 *** Guix commands are now sub-commands of the “guix” program
54 Instead of typing “guix-package”, one now has to type “guix package”, and so
55 on. This has allowed us to homogenize the user interface and initial program
56 setup, and to allow commands to be upgradable through “guix pull”.
58 *** New “guix package --upgrade” option
60 As the name implies, this option atomically upgrades all the packages
61 installed in a profile or the set of packages matching a given regexp.
62 See “Invoking guix package” in the manual.
64 *** New “guix package --search” option
66 Performs a full text search in package synopses and descriptions, and returns
67 the matching packages in recutils format. See “Invoking guix package” in the
70 *** New “guix pull” command
72 The command pulls the latest version of Guix–both the package management
73 modules and the distribution. See the manual for details.
75 *** New binary substituter
77 The “substituter” mechanism allows pre-built binaries to be transparently
78 downloaded instead of performing a build locally. Currently binaries are
79 available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
80 distribution is continuously built and binaries are made available from there.
82 See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
83 available binary packages.
85 *** New “guix refresh” command
87 The command is used by Guix maintainers. It automatically updates the
88 distribution to the latest upstream releases of GNU software.
90 *** New “guix hash” command
92 Convenience command to compute the hash of a file. See the manual for
95 *** Nix daemon code updated
97 The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
98 to current Nix ‘master’.
100 ** Programming interfaces
102 *** (guix download) now supports HTTPS, using GnuTLS
104 It allows package source tarballs to be retrieved over HTTPS.
106 *** New ‘native-search-path’ and ‘search-path’ package fields
108 Packages can define in their ‘native-search-path’ field environment variables
109 that define search paths and need to be set for proper functioning of the
110 package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
111 ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
112 These environment variables are automatically set when building a package that
115 *** Package inputs can be a function of the target system type
117 The ‘inputs’ field of a package can now be conditional on the value of
118 (%current-system). This is useful for packages that take system-dependent
119 tarballs as inputs, such as GNU/MIT Scheme.
121 *** New build systems
123 The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
124 been added. They implement the standard build systems for Perl, Python, and
127 *** Tools to build Linux initrds, QEMU images, and more
129 The (gnu packages linux-initrd) module provides a procedure to build a Linux
130 initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
131 evaluate the given expression. The example below returns an initrd that
132 mounts the /proc file system and starts a REPL:
137 (mount "none" "/proc" "proc")
138 ((@ (system repl repl) start-repl))))
140 More examples in the linux-initrd.scm file.
142 Experimental interfaces to produce and use QEMU images are provided by the
143 (gnu system vm) module. For instance, the
144 ‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
145 a QEMU virtual machine running the Linux kernel and Guile.
149 Many updates and additions have been made to the distribution. Here are the
154 GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
155 Coreutils 8.20, GDB 7.6, Texinfo 5.1.
157 *** Noteworthy new packages
159 TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
160 CHICKEN, Scheme48, Hugs, Python, Lua, Samba.