substitute-binary: Directly replace the global `regexp-exec'.
[jackhill/guix/guix.git] / NEWS
1 -*- org -*-
2 #+TITLE: Guix NEWS – history of user-visible changes
3 #+STARTUP: content hidestars
4
5 Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
6
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.
10
11 Please send Guix bug reports to bug-guix@gnu.org.
12
13
14 * Changes in 0.3 (since 0.2)
15
16 ** Package management
17
18 *** Cross-compilation support
19
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
24 details.
25
26 *** New ‘--max-silent-time’ option for “guix build” and “guix package”
27
28 See the manual for details.
29
30 *** New ‘--fallback’ option for “guix build” and “guix package”
31
32 This option instructs to fall back to local builds when the substituter fails
33 to download a substitute.
34
35 *** New ‘--requisites’ option for “guix gc”
36
37 See the manual for details.
38
39
40 ** Programming interfaces
41
42 *** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
43
44 This improves performance of SHA256 computations.
45
46 ** Bugs fixed
47 *** “guix --help” now works when using Guile 2.0.5
48 *** Binary substituter multi-threading and pipe issues fixed
49
50 These could lead to random substituter crashes while substituting a binary.
51 See commits 0332386 and 101d9f3 for details.
52
53 *** Binary substituter gracefully handles lack of network connectivity
54
55 *** Daemon properly handles rebuilds of multiple-output derivations
56
57 Previously it would fail when rebuilding a multiple-output derivation when
58 some (but not all) of its outputs were already present. See
59 http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
60 https://github.com/NixOS/nix/issues/122 .
61
62 * Changes in 0.2 (since 0.1)
63
64 ** Package management
65
66 *** Guix commands are now sub-commands of the “guix” program
67
68 Instead of typing “guix-package”, one now has to type “guix package”, and so
69 on. This has allowed us to homogenize the user interface and initial program
70 setup, and to allow commands to be upgradable through “guix pull”.
71
72 *** New “guix package --upgrade” option
73
74 As the name implies, this option atomically upgrades all the packages
75 installed in a profile or the set of packages matching a given regexp.
76 See “Invoking guix package” in the manual.
77
78 *** New “guix package --search” option
79
80 Performs a full text search in package synopses and descriptions, and returns
81 the matching packages in recutils format. See “Invoking guix package” in the
82 manual, for details.
83
84 *** New “guix pull” command
85
86 The command pulls the latest version of Guix–both the package management
87 modules and the distribution. See the manual for details.
88
89 *** New binary substituter
90
91 The “substituter” mechanism allows pre-built binaries to be transparently
92 downloaded instead of performing a build locally. Currently binaries are
93 available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
94 distribution is continuously built and binaries are made available from there.
95
96 See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
97 available binary packages.
98
99 *** New “guix refresh” command
100
101 The command is used by Guix maintainers. It automatically updates the
102 distribution to the latest upstream releases of GNU software.
103
104 *** New “guix hash” command
105
106 Convenience command to compute the hash of a file. See the manual for
107 details.
108
109 *** Nix daemon code updated
110
111 The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
112 to current Nix ‘master’.
113
114 ** Programming interfaces
115
116 *** (guix download) now supports HTTPS, using GnuTLS
117
118 It allows package source tarballs to be retrieved over HTTPS.
119
120 *** New ‘native-search-path’ and ‘search-path’ package fields
121
122 Packages can define in their ‘native-search-path’ field environment variables
123 that define search paths and need to be set for proper functioning of the
124 package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
125 ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
126 These environment variables are automatically set when building a package that
127 uses one of these.
128
129 *** Package inputs can be a function of the target system type
130
131 The ‘inputs’ field of a package can now be conditional on the value of
132 (%current-system). This is useful for packages that take system-dependent
133 tarballs as inputs, such as GNU/MIT Scheme.
134
135 *** New build systems
136
137 The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
138 been added. They implement the standard build systems for Perl, Python, and
139 CMake packages.
140
141 *** Tools to build Linux initrds, QEMU images, and more
142
143 The (gnu packages linux-initrd) module provides a procedure to build a Linux
144 initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
145 evaluate the given expression. The example below returns an initrd that
146 mounts the /proc file system and starts a REPL:
147
148 (expression->initrd
149 '(begin
150 (mkdir "/proc")
151 (mount "none" "/proc" "proc")
152 ((@ (system repl repl) start-repl))))
153
154 More examples in the linux-initrd.scm file.
155
156 Experimental interfaces to produce and use QEMU images are provided by the
157 (gnu system vm) module. For instance, the
158 ‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
159 a QEMU virtual machine running the Linux kernel and Guile.
160
161 ** GNU distribution
162
163 Many updates and additions have been made to the distribution. Here are the
164 highlights.
165
166 *** Major updates
167
168 GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
169 Coreutils 8.20, GDB 7.6, Texinfo 5.1.
170
171 *** Noteworthy new packages
172
173 TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
174 CHICKEN, Scheme48, Hugs, Python, Lua, Samba.