Update NEWS.
[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 *** New ‘--key-download’ option for “guix refresh”
40
41 See the manual for details.
42
43 ** Programming interfaces
44
45 *** New ‘package-cross-derivation’ procedure in (guix derivations)
46
47 See the manual for details.
48
49 *** New ‘%current-target-system’ SRFI-39 parameter
50
51 This parameter is like ‘%current-system’, but for cross-compilation. It
52 allows code in package definitions (such as in the ‘arguments’ field) to know
53 whether it is being cross-compiled, and what the target system is.
54
55 *** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
56
57 This improves performance of SHA256 computations.
58
59
60 ** GNU distribution
61
62 *** Major updates
63
64 FIXME
65
66 *** Noteworthy new packages
67
68 FIXME
69
70 *** Binary packages now available for i686-linux
71
72 The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
73 (i686-linux), in addition to the x86_64-linux binaries. Both can be
74 transparently used as substitutes for local builds on these platforms.
75
76 *** Debug info packages
77
78 Some packages now have a “debug” output containing debugging information. The
79 “debug” output can be used by GDB, and can be installed separately from the
80 other outputs of the package. See “Installing Debugging Files” in the manual.
81
82 *** Bootstrap binaries can be cross-compiled
83
84 The distribution can now be ported to new architectures (currently
85 GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
86 in the manual.
87
88 *** Bootstrapping documented
89
90 See “Bootstrapping” in the manual, for information on how the GNU
91 distribution builds “from scratch”.
92
93 ** Internationalization
94
95 New translations: eo, pt_BR.
96
97 ** Bugs fixed
98 *** “guix --help” now works when using Guile 2.0.5
99 *** Binary substituter multi-threading and pipe issues fixed
100
101 These could lead to random substituter crashes while substituting a binary.
102 See commits 0332386 and 101d9f3 for details.
103
104 *** Binary substituter gracefully handles lack of network connectivity
105
106 *** Daemon properly handles rebuilds of multiple-output derivations
107
108 Previously it would fail when rebuilding a multiple-output derivation when
109 some (but not all) of its outputs were already present. See
110 http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
111 https://github.com/NixOS/nix/issues/122 .
112
113
114 *** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
115
116 Previously only the ‘out’ output of package ‘foo’ would be kept in the
117 profile.
118
119 * Changes in 0.2 (since 0.1)
120
121 ** Package management
122
123 *** Guix commands are now sub-commands of the “guix” program
124
125 Instead of typing “guix-package”, one now has to type “guix package”, and so
126 on. This has allowed us to homogenize the user interface and initial program
127 setup, and to allow commands to be upgradable through “guix pull”.
128
129 *** New “guix package --upgrade” option
130
131 As the name implies, this option atomically upgrades all the packages
132 installed in a profile or the set of packages matching a given regexp.
133 See “Invoking guix package” in the manual.
134
135 *** New “guix package --search” option
136
137 Performs a full text search in package synopses and descriptions, and returns
138 the matching packages in recutils format. See “Invoking guix package” in the
139 manual, for details.
140
141 *** New “guix pull” command
142
143 The command pulls the latest version of Guix–both the package management
144 modules and the distribution. See the manual for details.
145
146 *** New binary substituter
147
148 The “substituter” mechanism allows pre-built binaries to be transparently
149 downloaded instead of performing a build locally. Currently binaries are
150 available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
151 distribution is continuously built and binaries are made available from there.
152
153 See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
154 available binary packages.
155
156 *** New “guix refresh” command
157
158 The command is used by Guix maintainers. It automatically updates the
159 distribution to the latest upstream releases of GNU software.
160
161 *** New “guix hash” command
162
163 Convenience command to compute the hash of a file. See the manual for
164 details.
165
166 *** Nix daemon code updated
167
168 The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
169 to current Nix ‘master’.
170
171 ** Programming interfaces
172
173 *** (guix download) now supports HTTPS, using GnuTLS
174
175 It allows package source tarballs to be retrieved over HTTPS.
176
177 *** New ‘native-search-path’ and ‘search-path’ package fields
178
179 Packages can define in their ‘native-search-path’ field environment variables
180 that define search paths and need to be set for proper functioning of the
181 package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
182 ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
183 These environment variables are automatically set when building a package that
184 uses one of these.
185
186 *** Package inputs can be a function of the target system type
187
188 The ‘inputs’ field of a package can now be conditional on the value of
189 (%current-system). This is useful for packages that take system-dependent
190 tarballs as inputs, such as GNU/MIT Scheme.
191
192 *** New build systems
193
194 The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
195 been added. They implement the standard build systems for Perl, Python, and
196 CMake packages.
197
198 *** Tools to build Linux initrds, QEMU images, and more
199
200 The (gnu packages linux-initrd) module provides a procedure to build a Linux
201 initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
202 evaluate the given expression. The example below returns an initrd that
203 mounts the /proc file system and starts a REPL:
204
205 (expression->initrd
206 '(begin
207 (mkdir "/proc")
208 (mount "none" "/proc" "proc")
209 ((@ (system repl repl) start-repl))))
210
211 More examples in the linux-initrd.scm file.
212
213 Experimental interfaces to produce and use QEMU images are provided by the
214 (gnu system vm) module. For instance, the
215 ‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
216 a QEMU virtual machine running the Linux kernel and Guile.
217
218 ** GNU distribution
219
220 Many updates and additions have been made to the distribution. Here are the
221 highlights.
222
223 *** Major updates
224
225 GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
226 Coreutils 8.20, GDB 7.6, Texinfo 5.1.
227
228 *** Noteworthy new packages
229
230 TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
231 CHICKEN, Scheme48, Hugs, Python, Lua, Samba.