guix package: Show which generation is the current one.
[jackhill/guix/guix.git] / NEWS
CommitLineData
06504acb
LC
1 -*- org -*-
2#+TITLE: Guix NEWS – history of user-visible changes
3#+STARTUP: content hidestars
4056b828
LC
4
5Copyright © 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
11Please send Guix bug reports to bug-guix@gnu.org.
12
85f3a05e 13
d1495831
LC
14* Changes in 0.3 (since 0.2)
15
16** Package management
bdbb6fbb
LC
17
18*** Cross-compilation support
19
20Guix can now cross-build packages. On the command-line, this is achieved with
21the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
22the guts of this is the ‘package-cross-derivation’ procedure. Core packages
23of the distribution can already be cross-compiled. See the manual for
24details.
25
d1495831
LC
26*** New ‘--max-silent-time’ option for “guix build” and “guix package”
27
28See the manual for details.
29
bdbb6fbb
LC
30*** New ‘--fallback’ option for “guix build” and “guix package”
31
32This option instructs to fall back to local builds when the substituter fails
33to download a substitute.
34
8e59fdd5
LC
35*** New ‘--requisites’ option for “guix gc”
36
37See the manual for details.
38
5939006b
LC
39*** New ‘--key-download’ option for “guix refresh”
40
41See the manual for details.
42300254
LC
42
43** Programming interfaces
44
5939006b
LC
45*** New ‘package-cross-derivation’ procedure in (guix derivations)
46
47See the manual for details.
48
49*** New ‘%current-target-system’ SRFI-39 parameter
50
51This parameter is like ‘%current-system’, but for cross-compilation. It
52allows code in package definitions (such as in the ‘arguments’ field) to know
53whether it is being cross-compiled, and what the target system is.
54
42300254
LC
55*** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
56
57This improves performance of SHA256 computations.
58
5939006b
LC
59
60** GNU distribution
61
3253830d 62*** 33 new packages
5939006b 63
3253830d
LC
64alsa-lib, babel, cairo, cvs, gcal, gcc-cross-mips64el-linux-gnuabi64, gd,
65gdk-pixbuf, graphviz, grue-hunter, gtk+, gts, harfbuzz, imagemagick, iproute2,
66iptables, libspectre, mpg321, noweb, pango, plotutils, privoxy, pytz, racket,
67rubber, rush, strace, tk, torsocks, unrtf, vc-dwim, wordnet, xlockmore
5939006b 68
3253830d 69*** 25 package updates
5939006b 70
3253830d
LC
71automake 1.14, ed 1.9, freeipmi 1.2.8, gawk 4.1.0, gcc 4.8.1, gettext 0.18.3,
72glib 2.37.1, gmp 5.1.2, gnutls 3.2.1, gzip 1.6, help2man 1.43.3, libapr 1.4.8,
73libaprutil 1.5.2, libassuan 2.1.1, libffi 3.0.13, libgc 7.2d, libgpg-error
741.12, libidn 1.28, libpng 1.5.17, lout 3.40, lsh 2.1, nettle 2.7.1, qemu
751.5.1, tzdata 2013d, xorriso 1.3.0
5939006b
LC
76
77*** Binary packages now available for i686-linux
78
79The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
80(i686-linux), in addition to the x86_64-linux binaries. Both can be
81transparently used as substitutes for local builds on these platforms.
82
83*** Debug info packages
84
85Some packages now have a “debug” output containing debugging information. The
86“debug” output can be used by GDB, and can be installed separately from the
87other outputs of the package. See “Installing Debugging Files” in the manual.
88
89*** Bootstrap binaries can be cross-compiled
90
91The distribution can now be ported to new architectures (currently
92GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
93in the manual.
94
95*** Bootstrapping documented
96
97See “Bootstrapping” in the manual, for information on how the GNU
98distribution builds “from scratch”.
99
100** Internationalization
101
102New translations: eo, pt_BR.
103
d1495831
LC
104** Bugs fixed
105*** “guix --help” now works when using Guile 2.0.5
106*** Binary substituter multi-threading and pipe issues fixed
107
108These could lead to random substituter crashes while substituting a binary.
109See commits 0332386 and 101d9f3 for details.
110
bdbb6fbb
LC
111*** Binary substituter gracefully handles lack of network connectivity
112
16357e8c
LC
113*** Daemon properly handles rebuilds of multiple-output derivations
114
115Previously it would fail when rebuilding a multiple-output derivation when
116some (but not all) of its outputs were already present. See
117http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
118https://github.com/NixOS/nix/issues/122 .
119
5939006b
LC
120*** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
121
122Previously only the ‘out’ output of package ‘foo’ would be kept in the
123profile.
124
3253830d
LC
125*** Replacement (srfi srfi-37) provided if the user’s one is broken
126
127When the user’s (srfi srfi-37) is affected by http://bugs.gnu.org/13176 (Guile
128< 2.0.9), a replacement with the bug fix is provided. This bug would affect
129command-line argument processing in some cases.
130
85f3a05e
LC
131* Changes in 0.2 (since 0.1)
132
4056b828
LC
133** Package management
134
135*** Guix commands are now sub-commands of the “guix” program
136
137Instead of typing “guix-package”, one now has to type “guix package”, and so
138on. This has allowed us to homogenize the user interface and initial program
139setup, and to allow commands to be upgradable through “guix pull”.
140
06504acb
LC
141*** New “guix package --upgrade” option
142
143As the name implies, this option atomically upgrades all the packages
e3729544
LC
144installed in a profile or the set of packages matching a given regexp.
145See “Invoking guix package” in the manual.
06504acb 146
0f241da2
LC
147*** New “guix package --search” option
148
149Performs a full text search in package synopses and descriptions, and returns
150the matching packages in recutils format. See “Invoking guix package” in the
151manual, for details.
152
4056b828
LC
153*** New “guix pull” command
154
155The command pulls the latest version of Guix–both the package management
156modules and the distribution. See the manual for details.
157
158*** New binary substituter
159
160The “substituter” mechanism allows pre-built binaries to be transparently
161downloaded instead of performing a build locally. Currently binaries are
0f241da2
LC
162available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
163distribution is continuously built and binaries are made available from there.
164
165See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
166available binary packages.
4056b828
LC
167
168*** New “guix refresh” command
169
170The command is used by Guix maintainers. It automatically updates the
171distribution to the latest upstream releases of GNU software.
172
173*** New “guix hash” command
174
175Convenience command to compute the hash of a file. See the manual for
176details.
177
0f241da2 178*** Nix daemon code updated
4056b828 179
0f241da2
LC
180The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
181to current Nix ‘master’.
4056b828
LC
182
183** Programming interfaces
184
0f241da2
LC
185*** (guix download) now supports HTTPS, using GnuTLS
186
187It allows package source tarballs to be retrieved over HTTPS.
188
4056b828
LC
189*** New ‘native-search-path’ and ‘search-path’ package fields
190
191Packages can define in their ‘native-search-path’ field environment variables
192that define search paths and need to be set for proper functioning of the
193package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
194‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
195These environment variables are automatically set when building a package that
196uses one of these.
197
198*** Package inputs can be a function of the target system type
199
200The ‘inputs’ field of a package can now be conditional on the value of
201(%current-system). This is useful for packages that take system-dependent
202tarballs as inputs, such as GNU/MIT Scheme.
203
204*** New build systems
205
206The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
207been added. They implement the standard build systems for Perl, Python, and
208CMake packages.
209
47d18810
LC
210*** Tools to build Linux initrds, QEMU images, and more
211
212The (gnu packages linux-initrd) module provides a procedure to build a Linux
213initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
214evaluate the given expression. The example below returns an initrd that
215mounts the /proc file system and starts a REPL:
216
217 (expression->initrd
218 '(begin
219 (mkdir "/proc")
220 (mount "none" "/proc" "proc")
221 ((@ (system repl repl) start-repl))))
222
223More examples in the linux-initrd.scm file.
224
225Experimental interfaces to produce and use QEMU images are provided by the
226(gnu system vm) module. For instance, the
227‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
228a QEMU virtual machine running the Linux kernel and Guile.
229
4056b828
LC
230** GNU distribution
231
232Many updates and additions have been made to the distribution. Here are the
233highlights.
234
235*** Major updates
236
237GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
238Coreutils 8.20, GDB 7.6, Texinfo 5.1.
239
240*** Noteworthy new packages
241
0f241da2
LC
242TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
243CHICKEN, Scheme48, Hugs, Python, Lua, Samba.