gnu: Add Mercurial.
[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
8f37bf62
LC
13* Changes in 0.4 (since 0.3)
14
15** Package management
16
17*** New ‘--list-generations’ and ‘--delete-generations’ options
18
19The ‘guix package’ command has these two new options, which make it easier to
20deal with a profile’s generation. See “Invoking guix package” in the manual.
21
22*** New ‘guix-register’ program
23
24This program allows the meta-data of a new store to be initialized, by
25copying info from an existing store. It is mostly an internal tool.
26
27** Programming interfaces
28
29*** New API to bootstrap Autotools-based packages
30
31The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a
32package object and source directory, and returns a new package object that
33runs ‘./bootstrap && make dist’ or anything similar.
34
35*** ‘derivation’ and related procedures have a #:references-graphs parameter
36
37This parameter instructs the build daemon to populate the derivation’s build
38tree with files containing the list of references of the given store files.
39This is useful to write code that copies a packages and all its dependencies
40to another storage device, such as a QEMU disk image.
41
42*** Extended API to build a GNU system virtual machine image
43
44The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’
45procedure can now populate and initialize the image’s store; the new
46‘system-qemu-image’ procedure returns a QEMU image that runs dmd as its init
47system, has ‘login’ running on several consoles, has a set of installed
48packages, and where Guix can be used.
49
50New (gnu system …) modules have been added to handle the configuration of the
51various parts of a GNU/Linux system. For instance, (gnu system dmd) provides
52support for instantiating dmd services; (gnu system linux) helps with Linux
53PAM configuration; and so on.
54
55*** <derivation> objects supersede .drv file names in the API
56
57‘derivation’ and similar procedures no longer return two values (a
58<derivation> and a .drv file name); they now return a single value, which is
59a <derivation> object. The <derivation> object embeds the corresponding .drv
60file name. See “Derivations” in the manual for details.
61
62** GNU distribution
63
6bf3e5f7
LC
64*** 60 new packages
65
66apr, apr-util, cdparanoia, dbus-glib, dfc, dmd, dvdisaster, exiv2, fetchmail,
67freefont-ttf, freeglut, geeqie, git, gkrellm, glu, gnome-doc-utils,
68gst-plugins-base, gstreamer, guile-cairo, guile-lib, guile-xcb, guix, htop,
69itstool, lame, libextractor, libmicrohttpd, lightning, lzip, mingetty, mutt,
70net-base, net-tools, ocrad, pspp, python-babel, python-dateutil, python-pytz,
71python-setuptools, python-simplejson, python-wrapper, python2-babel,
72python2-dateutil, python2-mechanize, python2-pyicu, python2-pysqlite,
73python2-pytz, python2-setuptools, python2-simplejson, qemu-system-initrd,
74qemu-with-multiple-smb-shares, ripperx, shadow, ttf-bitstream-vera, units,
75valgrind, xmlto, xnee, yasm
76
77*** 27 package updates
78
79bigloo 4.0b, cairo 1.12.16, ddrescue 1.17, fontconfig 2.10.93, fplll 4.0.4,
80gcc 4.7.3, gcc 4.7.3, glibc 2.18, glibc 2.18, glibc-stripped-tarball 2.18,
81gnupg 2.0.21, gnutls 3.2.4, guile 2.0.9, guile 2.0.9, harfbuzz 0.9.21,
82imagemagick 6.8.6-9, libdrm 2.4.46, libgcrypt 1.5.3, libjpeg 9, libksba 1.3.0,
83linux-libre 3.11, m4 1.4.17, mpfrcx 0.4.2, pari-gp 2.5.4, python 2.7.5, python
843.3.2, texlive 2013
8f37bf62
LC
85
86*** Fontconfig font search path made more convenient
87
88Fontconfig, the library used by many graphical applications, such as those
89based on GTK+, now knows where to find the default set of fonts. Additional
90fonts installed in the user profile are automatically picked up.
91
92*** More GUI applications
93
94The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+
95applications have been added (see above.)
96
97*** Packaging guidelines
98
99The documentation of packaging guidelines has been augmented. See the manual
100under “GNU Distribution”.
101
102*** Support for Python 3 along with Python 2
103
104Python 3 has been added to the distribution, and Python packages that support
105it are now built for both Python 2 and Python 3. See the “Python Modules”
106section of the manual for details.
107
108** Internationalization
109
110Updated translations: eo.
111
112** Bugs fixed
113
6bf3e5f7 114*** Workarounds for Guile 2.0.5 now work on Debian derivatives
8f37bf62 115*** The dependency graph image has correct size in PDF output
6bf3e5f7 116*** 'ldd' now works correctly on x86_64
8f37bf62 117*** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
bb5f01c5 118*** module-init-tools now builds (http://bugs.gnu.org/15182, http://bugs.gnu.org/15187)
6bf3e5f7 119*** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
85f3a05e 120
d1495831
LC
121* Changes in 0.3 (since 0.2)
122
123** Package management
bdbb6fbb
LC
124
125*** Cross-compilation support
126
127Guix can now cross-build packages. On the command-line, this is achieved with
128the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
129the guts of this is the ‘package-cross-derivation’ procedure. Core packages
130of the distribution can already be cross-compiled. See the manual for
131details.
132
d1495831
LC
133*** New ‘--max-silent-time’ option for “guix build” and “guix package”
134
135See the manual for details.
136
bdbb6fbb
LC
137*** New ‘--fallback’ option for “guix build” and “guix package”
138
139This option instructs to fall back to local builds when the substituter fails
140to download a substitute.
141
8e59fdd5
LC
142*** New ‘--requisites’ option for “guix gc”
143
144See the manual for details.
145
5939006b
LC
146*** New ‘--key-download’ option for “guix refresh”
147
148See the manual for details.
42300254
LC
149
150** Programming interfaces
151
5939006b
LC
152*** New ‘package-cross-derivation’ procedure in (guix derivations)
153
154See the manual for details.
155
156*** New ‘%current-target-system’ SRFI-39 parameter
157
158This parameter is like ‘%current-system’, but for cross-compilation. It
159allows code in package definitions (such as in the ‘arguments’ field) to know
160whether it is being cross-compiled, and what the target system is.
161
42300254
LC
162*** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
163
164This improves performance of SHA256 computations.
165
5939006b
LC
166
167** GNU distribution
168
3253830d 169*** 33 new packages
5939006b 170
3253830d
LC
171alsa-lib, babel, cairo, cvs, gcal, gcc-cross-mips64el-linux-gnuabi64, gd,
172gdk-pixbuf, graphviz, grue-hunter, gtk+, gts, harfbuzz, imagemagick, iproute2,
173iptables, libspectre, mpg321, noweb, pango, plotutils, privoxy, pytz, racket,
174rubber, rush, strace, tk, torsocks, unrtf, vc-dwim, wordnet, xlockmore
5939006b 175
3253830d 176*** 25 package updates
5939006b 177
3253830d
LC
178automake 1.14, ed 1.9, freeipmi 1.2.8, gawk 4.1.0, gcc 4.8.1, gettext 0.18.3,
179glib 2.37.1, gmp 5.1.2, gnutls 3.2.1, gzip 1.6, help2man 1.43.3, libapr 1.4.8,
180libaprutil 1.5.2, libassuan 2.1.1, libffi 3.0.13, libgc 7.2d, libgpg-error
1811.12, libidn 1.28, libpng 1.5.17, lout 3.40, lsh 2.1, nettle 2.7.1, qemu
1821.5.1, tzdata 2013d, xorriso 1.3.0
5939006b
LC
183
184*** Binary packages now available for i686-linux
185
186The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
187(i686-linux), in addition to the x86_64-linux binaries. Both can be
188transparently used as substitutes for local builds on these platforms.
189
190*** Debug info packages
191
192Some packages now have a “debug” output containing debugging information. The
193“debug” output can be used by GDB, and can be installed separately from the
194other outputs of the package. See “Installing Debugging Files” in the manual.
195
196*** Bootstrap binaries can be cross-compiled
197
198The distribution can now be ported to new architectures (currently
199GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
200in the manual.
201
202*** Bootstrapping documented
203
204See “Bootstrapping” in the manual, for information on how the GNU
205distribution builds “from scratch”.
206
207** Internationalization
208
209New translations: eo, pt_BR.
210
d1495831
LC
211** Bugs fixed
212*** “guix --help” now works when using Guile 2.0.5
213*** Binary substituter multi-threading and pipe issues fixed
214
215These could lead to random substituter crashes while substituting a binary.
216See commits 0332386 and 101d9f3 for details.
217
bdbb6fbb
LC
218*** Binary substituter gracefully handles lack of network connectivity
219
16357e8c
LC
220*** Daemon properly handles rebuilds of multiple-output derivations
221
222Previously it would fail when rebuilding a multiple-output derivation when
223some (but not all) of its outputs were already present. See
224http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
225https://github.com/NixOS/nix/issues/122 .
226
5939006b
LC
227*** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
228
229Previously only the ‘out’ output of package ‘foo’ would be kept in the
230profile.
231
3253830d
LC
232*** Replacement (srfi srfi-37) provided if the user’s one is broken
233
234When the user’s (srfi srfi-37) is affected by http://bugs.gnu.org/13176 (Guile
235< 2.0.9), a replacement with the bug fix is provided. This bug would affect
236command-line argument processing in some cases.
237
85f3a05e
LC
238* Changes in 0.2 (since 0.1)
239
4056b828
LC
240** Package management
241
242*** Guix commands are now sub-commands of the “guix” program
243
244Instead of typing “guix-package”, one now has to type “guix package”, and so
245on. This has allowed us to homogenize the user interface and initial program
246setup, and to allow commands to be upgradable through “guix pull”.
247
06504acb
LC
248*** New “guix package --upgrade” option
249
250As the name implies, this option atomically upgrades all the packages
e3729544
LC
251installed in a profile or the set of packages matching a given regexp.
252See “Invoking guix package” in the manual.
06504acb 253
0f241da2
LC
254*** New “guix package --search” option
255
256Performs a full text search in package synopses and descriptions, and returns
257the matching packages in recutils format. See “Invoking guix package” in the
258manual, for details.
259
4056b828
LC
260*** New “guix pull” command
261
262The command pulls the latest version of Guix–both the package management
263modules and the distribution. See the manual for details.
264
265*** New binary substituter
266
267The “substituter” mechanism allows pre-built binaries to be transparently
268downloaded instead of performing a build locally. Currently binaries are
0f241da2
LC
269available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
270distribution is continuously built and binaries are made available from there.
271
272See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
273available binary packages.
4056b828
LC
274
275*** New “guix refresh” command
276
277The command is used by Guix maintainers. It automatically updates the
278distribution to the latest upstream releases of GNU software.
279
280*** New “guix hash” command
281
282Convenience command to compute the hash of a file. See the manual for
283details.
284
0f241da2 285*** Nix daemon code updated
4056b828 286
0f241da2
LC
287The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
288to current Nix ‘master’.
4056b828
LC
289
290** Programming interfaces
291
0f241da2
LC
292*** (guix download) now supports HTTPS, using GnuTLS
293
294It allows package source tarballs to be retrieved over HTTPS.
295
4056b828
LC
296*** New ‘native-search-path’ and ‘search-path’ package fields
297
298Packages can define in their ‘native-search-path’ field environment variables
299that define search paths and need to be set for proper functioning of the
300package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
301‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
302These environment variables are automatically set when building a package that
303uses one of these.
304
305*** Package inputs can be a function of the target system type
306
307The ‘inputs’ field of a package can now be conditional on the value of
308(%current-system). This is useful for packages that take system-dependent
309tarballs as inputs, such as GNU/MIT Scheme.
310
311*** New build systems
312
313The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
314been added. They implement the standard build systems for Perl, Python, and
315CMake packages.
316
47d18810
LC
317*** Tools to build Linux initrds, QEMU images, and more
318
319The (gnu packages linux-initrd) module provides a procedure to build a Linux
320initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
321evaluate the given expression. The example below returns an initrd that
322mounts the /proc file system and starts a REPL:
323
324 (expression->initrd
325 '(begin
326 (mkdir "/proc")
327 (mount "none" "/proc" "proc")
328 ((@ (system repl repl) start-repl))))
329
330More examples in the linux-initrd.scm file.
331
332Experimental interfaces to produce and use QEMU images are provided by the
333(gnu system vm) module. For instance, the
334‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
335a QEMU virtual machine running the Linux kernel and Guile.
336
4056b828
LC
337** GNU distribution
338
339Many updates and additions have been made to the distribution. Here are the
340highlights.
341
342*** Major updates
343
344GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
345Coreutils 8.20, GDB 7.6, Texinfo 5.1.
346
347*** Noteworthy new packages
348
0f241da2
LC
349TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
350CHICKEN, Scheme48, Hugs, Python, Lua, Samba.