tests: Simplify 'substitute-binary' tests; reduce use of global variables.
[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
a043ac04
LC
13* Changes in 0.5 (since 0.4)
14** Package management
15*** GNU package descriptions synchronized with the ‘gnumaint’ repository
16
17In addition to synopses, descriptions of GNU packages are now kept in sync
18with the ‘gnumaint’ repository, which is the canonical place for GNU package
19meta-data.
20
21** Programming interfaces
22*** Patches are now listed as part of ‘origin’
23
24The ‘origin’ form supports two new fields: ‘patches’ (list of patches), and
25‘snippet’ (code snippet to modify the source.) These are applied when running
26‘guix build --source’. See “Defining Packages” in the manual.
27
28*** New (guix monads) monadic interface to operate on the store
29
30See “The Store Monad” in the manual. The (gnu system …) modules have been
31rewritten to use this monadic interface.
32
33*** New (guix profiles) module
34
35It provides an API for dealing with profiles, as with the ‘guix package’
36command.
37
38*** New (gnu system) module
39
4a8c5617
AE
40This module provides a generic way to describe the system’s configuration,
41and to instantiate it, regardless of the final medium (QEMU image, etc.)
a043ac04
LC
42See “System Configuration” in the manual.
43
44This is work in progress. Send feedback to guix-devel@gnu.org!
45
46*** ‘build-expression->derivation’ uses more parameters
47
48Some positional parameters have been changed to keyword parameters.
49See “Derivations” in the manual.
50
51** GNU distribution
52*** New port to the Loongson MIPS64 processors, n32 ABI (‘mips64el-linux’)
53
4a8c5617 54Bootstrap binaries have been built for that architecture, and several
a043ac04
LC
55Loongson-specific patches not yet available upstream have been applied to core
56packages. See “GNU Distribution” and “Porting” in the manual.
57
58Pre-built binaries are not yet available via hydra.gnu.org, so Guix will
4a8c5617 59build from source on this platform.
a043ac04 60
5d6dbd29
LC
61*** 110 new packages
62
63acct, alive, alsa-utils, apl, at-spi2-atk, at-spi2-core, atkmm, autogen,
64automoc4, brasero, bridge-utils, cairomm, catkin, complexity, evince, ffmpeg,
65fftw, ftgl, gcc-objc, gcc-objc++, gccgo, gcl, gfortran, glibmm, glpk,
66gnome-icon-theme, gnu-pw-mgr, gp2c, gpgme, gsettings-desktop-schemas, gtkmm,
67gtksourceview, guile-ssh, guile-wm, gvpe, hicolor-icon-theme, httpd, icecat,
68icon-naming-utils, json-c, lapack, libcanberra, libcap, libgnome-keyring,
69libmikmod, libnl, libnotify, libsamplerate, libsigc++, libsndfile, libssh,
70libtheora, libxkbcommon, mercurial, mtools, netcat, pangomm, parallel,
71pavucontrol, pciutils, pem, perl-encode-locale, perl-file-list,
72perl-file-listing, perl-html-parser, perl-html-tagset, perl-http-cookies,
73perl-http-daemon, perl-http-date, perl-http-message, perl-http-negotiate,
74perl-io-html, perl-libwww, perl-libxml, perl-lwp-mediatypes, perl-net-http,
75perl-uri, perl-www-robotrules, perl-xml-dom, perl-xml-regexp, perl-xml-simple,
76phonon, powertop, pulseaudio, python2-dogtail, python2-empy, qemu-headless,
77qt, qt, raptor2, scons, sdl, sdl-gfx, sdl-image, sdl-mixer, sdl-net, sdl-ttf,
78sdl2, serveez, shared-mime-info, sharutils, skribilo, slim, soprano, swig,
79xcb-util, xcb-util-image, xcb-util-keysyms, xcb-util-renderutil, xcb-util-wm
80
81*** 47 package updates
82
83atk 2.10.0, bison 3.0.2, cmake 2.8.12, dmd 0.1, freeipmi 1.3.3, gcc 4.8.2,
84gcc 4.8.2, gcc-cross-mips64el-linux-gnuabi64 4.8.2, gcc-stripped-tarball 4.8.2,
85gdb 7.6.2, gettext 0.18.3.1, glib 2.38.0, global 6.2.9, gmp 5.1.3,
86gnupg 2.0.22, gobject-introspection 1.38.0, grep 2.15, gsl 1.16,
87gtk+ 2.24.21, gtk+ 3.10.1, guile 2.0.9, guile 2.0.9, guile-xcb 1.2,
88harfbuzz 0.9.22, hello 2.9, iproute2 3.12.0, libdrm 2.4.46,
89libextractor 1.2, libjpeg 9, libmicrohttpd 0.9.32, lightning 2.0.2,
90linux-libre 3.12, lzip 1.15, make 4.0, mit-krb5 1.11.3, pari-gp 2.5.5,
91pixman 0.32.4, python 3.3.2, qemu 1.6.1,
92qemu-with-multiple-smb-shares 1.6.1, rcs 5.9.2, recutils 1.6, rsync 3.1.0,
93tar 1.27.1, texinfo 5.2, units 2.02, xorriso 1.3.2
a043ac04
LC
94
95*** Packages are now built with GCC 4.8.2 by default (was 4.7.3)
96
97** Native language support
98*** New ‘sr’ (Serbian) translation
99*** New ‘vi’ (Vietnamese) translation
100*** Updated ‘pt_BR’ (Brazilian Portuguese) translation
101** Bugs fixed
4a8c5617 102*** ‘guix pull’ compiles Guix deterministically and correctly
a043ac04
LC
103
104Previously, the build environment was not cleared in between ‘compile-file’
105calls, leading to build errors due to Guile bug http://bugs.gnu.org/15602 .
106
107*** ‘guix package’ allows removal of a specific package output
108 (http://bugs.gnu.org/15756)
5d6dbd29
LC
109*** ‘guix-daemon’ always sets umask to 022
110 (http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00033.html)
a043ac04 111*** Files referenced by environment variables are protected from GC
5d6dbd29 112*** Yet unbuilt packages get correctly installed (http://bugs.gnu.org/15283)
a043ac04
LC
113*** ‘bootstrap-graph.{png,eps,pdf}’ built in srcdir (http://bugs.gnu.org/15640)
114
8f37bf62
LC
115* Changes in 0.4 (since 0.3)
116
117** Package management
118
119*** New ‘--list-generations’ and ‘--delete-generations’ options
120
121The ‘guix package’ command has these two new options, which make it easier to
122deal with a profile’s generation. See “Invoking guix package” in the manual.
123
124*** New ‘guix-register’ program
125
126This program allows the meta-data of a new store to be initialized, by
127copying info from an existing store. It is mostly an internal tool.
128
129** Programming interfaces
130
131*** New API to bootstrap Autotools-based packages
132
133The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a
134package object and source directory, and returns a new package object that
135runs ‘./bootstrap && make dist’ or anything similar.
136
137*** ‘derivation’ and related procedures have a #:references-graphs parameter
138
139This parameter instructs the build daemon to populate the derivation’s build
140tree with files containing the list of references of the given store files.
141This is useful to write code that copies a packages and all its dependencies
142to another storage device, such as a QEMU disk image.
143
144*** Extended API to build a GNU system virtual machine image
145
146The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’
147procedure can now populate and initialize the image’s store; the new
148‘system-qemu-image’ procedure returns a QEMU image that runs dmd as its init
149system, has ‘login’ running on several consoles, has a set of installed
150packages, and where Guix can be used.
151
152New (gnu system …) modules have been added to handle the configuration of the
153various parts of a GNU/Linux system. For instance, (gnu system dmd) provides
154support for instantiating dmd services; (gnu system linux) helps with Linux
155PAM configuration; and so on.
156
157*** <derivation> objects supersede .drv file names in the API
158
159‘derivation’ and similar procedures no longer return two values (a
160<derivation> and a .drv file name); they now return a single value, which is
161a <derivation> object. The <derivation> object embeds the corresponding .drv
162file name. See “Derivations” in the manual for details.
163
164** GNU distribution
165
6bf3e5f7
LC
166*** 60 new packages
167
168apr, apr-util, cdparanoia, dbus-glib, dfc, dmd, dvdisaster, exiv2, fetchmail,
169freefont-ttf, freeglut, geeqie, git, gkrellm, glu, gnome-doc-utils,
170gst-plugins-base, gstreamer, guile-cairo, guile-lib, guile-xcb, guix, htop,
171itstool, lame, libextractor, libmicrohttpd, lightning, lzip, mingetty, mutt,
172net-base, net-tools, ocrad, pspp, python-babel, python-dateutil, python-pytz,
173python-setuptools, python-simplejson, python-wrapper, python2-babel,
174python2-dateutil, python2-mechanize, python2-pyicu, python2-pysqlite,
175python2-pytz, python2-setuptools, python2-simplejson, qemu-system-initrd,
176qemu-with-multiple-smb-shares, ripperx, shadow, ttf-bitstream-vera, units,
177valgrind, xmlto, xnee, yasm
178
179*** 27 package updates
180
181bigloo 4.0b, cairo 1.12.16, ddrescue 1.17, fontconfig 2.10.93, fplll 4.0.4,
182gcc 4.7.3, gcc 4.7.3, glibc 2.18, glibc 2.18, glibc-stripped-tarball 2.18,
183gnupg 2.0.21, gnutls 3.2.4, guile 2.0.9, guile 2.0.9, harfbuzz 0.9.21,
184imagemagick 6.8.6-9, libdrm 2.4.46, libgcrypt 1.5.3, libjpeg 9, libksba 1.3.0,
185linux-libre 3.11, m4 1.4.17, mpfrcx 0.4.2, pari-gp 2.5.4, python 2.7.5, python
1863.3.2, texlive 2013
8f37bf62
LC
187
188*** Fontconfig font search path made more convenient
189
190Fontconfig, the library used by many graphical applications, such as those
191based on GTK+, now knows where to find the default set of fonts. Additional
192fonts installed in the user profile are automatically picked up.
193
194*** More GUI applications
195
196The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+
197applications have been added (see above.)
198
199*** Packaging guidelines
200
201The documentation of packaging guidelines has been augmented. See the manual
202under “GNU Distribution”.
203
204*** Support for Python 3 along with Python 2
205
206Python 3 has been added to the distribution, and Python packages that support
207it are now built for both Python 2 and Python 3. See the “Python Modules”
208section of the manual for details.
209
210** Internationalization
211
212Updated translations: eo.
213
214** Bugs fixed
215
6bf3e5f7 216*** Workarounds for Guile 2.0.5 now work on Debian derivatives
8f37bf62 217*** The dependency graph image has correct size in PDF output
6bf3e5f7 218*** 'ldd' now works correctly on x86_64
8f37bf62 219*** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
bb5f01c5 220*** module-init-tools now builds (http://bugs.gnu.org/15182, http://bugs.gnu.org/15187)
6bf3e5f7 221*** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
85f3a05e 222
d1495831
LC
223* Changes in 0.3 (since 0.2)
224
225** Package management
bdbb6fbb
LC
226
227*** Cross-compilation support
228
229Guix can now cross-build packages. On the command-line, this is achieved with
230the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
231the guts of this is the ‘package-cross-derivation’ procedure. Core packages
232of the distribution can already be cross-compiled. See the manual for
233details.
234
d1495831
LC
235*** New ‘--max-silent-time’ option for “guix build” and “guix package”
236
237See the manual for details.
238
bdbb6fbb
LC
239*** New ‘--fallback’ option for “guix build” and “guix package”
240
241This option instructs to fall back to local builds when the substituter fails
242to download a substitute.
243
8e59fdd5
LC
244*** New ‘--requisites’ option for “guix gc”
245
246See the manual for details.
247
5939006b
LC
248*** New ‘--key-download’ option for “guix refresh”
249
250See the manual for details.
42300254
LC
251
252** Programming interfaces
253
5939006b
LC
254*** New ‘package-cross-derivation’ procedure in (guix derivations)
255
256See the manual for details.
257
258*** New ‘%current-target-system’ SRFI-39 parameter
259
260This parameter is like ‘%current-system’, but for cross-compilation. It
261allows code in package definitions (such as in the ‘arguments’ field) to know
262whether it is being cross-compiled, and what the target system is.
263
42300254
LC
264*** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
265
266This improves performance of SHA256 computations.
267
5939006b
LC
268
269** GNU distribution
270
3253830d 271*** 33 new packages
5939006b 272
3253830d
LC
273alsa-lib, babel, cairo, cvs, gcal, gcc-cross-mips64el-linux-gnuabi64, gd,
274gdk-pixbuf, graphviz, grue-hunter, gtk+, gts, harfbuzz, imagemagick, iproute2,
275iptables, libspectre, mpg321, noweb, pango, plotutils, privoxy, pytz, racket,
276rubber, rush, strace, tk, torsocks, unrtf, vc-dwim, wordnet, xlockmore
5939006b 277
3253830d 278*** 25 package updates
5939006b 279
3253830d
LC
280automake 1.14, ed 1.9, freeipmi 1.2.8, gawk 4.1.0, gcc 4.8.1, gettext 0.18.3,
281glib 2.37.1, gmp 5.1.2, gnutls 3.2.1, gzip 1.6, help2man 1.43.3, libapr 1.4.8,
282libaprutil 1.5.2, libassuan 2.1.1, libffi 3.0.13, libgc 7.2d, libgpg-error
2831.12, libidn 1.28, libpng 1.5.17, lout 3.40, lsh 2.1, nettle 2.7.1, qemu
2841.5.1, tzdata 2013d, xorriso 1.3.0
5939006b
LC
285
286*** Binary packages now available for i686-linux
287
288The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
289(i686-linux), in addition to the x86_64-linux binaries. Both can be
290transparently used as substitutes for local builds on these platforms.
291
292*** Debug info packages
293
294Some packages now have a “debug” output containing debugging information. The
295“debug” output can be used by GDB, and can be installed separately from the
296other outputs of the package. See “Installing Debugging Files” in the manual.
297
298*** Bootstrap binaries can be cross-compiled
299
300The distribution can now be ported to new architectures (currently
301GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
302in the manual.
303
304*** Bootstrapping documented
305
306See “Bootstrapping” in the manual, for information on how the GNU
307distribution builds “from scratch”.
308
309** Internationalization
310
311New translations: eo, pt_BR.
312
d1495831
LC
313** Bugs fixed
314*** “guix --help” now works when using Guile 2.0.5
315*** Binary substituter multi-threading and pipe issues fixed
316
317These could lead to random substituter crashes while substituting a binary.
318See commits 0332386 and 101d9f3 for details.
319
bdbb6fbb
LC
320*** Binary substituter gracefully handles lack of network connectivity
321
16357e8c
LC
322*** Daemon properly handles rebuilds of multiple-output derivations
323
324Previously it would fail when rebuilding a multiple-output derivation when
325some (but not all) of its outputs were already present. See
326http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
327https://github.com/NixOS/nix/issues/122 .
328
5939006b
LC
329*** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
330
331Previously only the ‘out’ output of package ‘foo’ would be kept in the
332profile.
333
3253830d
LC
334*** Replacement (srfi srfi-37) provided if the user’s one is broken
335
336When the user’s (srfi srfi-37) is affected by http://bugs.gnu.org/13176 (Guile
337< 2.0.9), a replacement with the bug fix is provided. This bug would affect
338command-line argument processing in some cases.
339
85f3a05e
LC
340* Changes in 0.2 (since 0.1)
341
4056b828
LC
342** Package management
343
344*** Guix commands are now sub-commands of the “guix” program
345
346Instead of typing “guix-package”, one now has to type “guix package”, and so
347on. This has allowed us to homogenize the user interface and initial program
348setup, and to allow commands to be upgradable through “guix pull”.
349
06504acb
LC
350*** New “guix package --upgrade” option
351
352As the name implies, this option atomically upgrades all the packages
e3729544
LC
353installed in a profile or the set of packages matching a given regexp.
354See “Invoking guix package” in the manual.
06504acb 355
0f241da2
LC
356*** New “guix package --search” option
357
358Performs a full text search in package synopses and descriptions, and returns
359the matching packages in recutils format. See “Invoking guix package” in the
360manual, for details.
361
4056b828
LC
362*** New “guix pull” command
363
364The command pulls the latest version of Guix–both the package management
365modules and the distribution. See the manual for details.
366
367*** New binary substituter
368
369The “substituter” mechanism allows pre-built binaries to be transparently
370downloaded instead of performing a build locally. Currently binaries are
0f241da2
LC
371available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
372distribution is continuously built and binaries are made available from there.
373
374See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
375available binary packages.
4056b828
LC
376
377*** New “guix refresh” command
378
379The command is used by Guix maintainers. It automatically updates the
380distribution to the latest upstream releases of GNU software.
381
382*** New “guix hash” command
383
384Convenience command to compute the hash of a file. See the manual for
385details.
386
0f241da2 387*** Nix daemon code updated
4056b828 388
0f241da2
LC
389The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
390to current Nix ‘master’.
4056b828
LC
391
392** Programming interfaces
393
0f241da2
LC
394*** (guix download) now supports HTTPS, using GnuTLS
395
396It allows package source tarballs to be retrieved over HTTPS.
397
4056b828
LC
398*** New ‘native-search-path’ and ‘search-path’ package fields
399
400Packages can define in their ‘native-search-path’ field environment variables
401that define search paths and need to be set for proper functioning of the
402package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
403‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
404These environment variables are automatically set when building a package that
405uses one of these.
406
407*** Package inputs can be a function of the target system type
408
409The ‘inputs’ field of a package can now be conditional on the value of
410(%current-system). This is useful for packages that take system-dependent
411tarballs as inputs, such as GNU/MIT Scheme.
412
413*** New build systems
414
415The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
416been added. They implement the standard build systems for Perl, Python, and
417CMake packages.
418
47d18810
LC
419*** Tools to build Linux initrds, QEMU images, and more
420
421The (gnu packages linux-initrd) module provides a procedure to build a Linux
422initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
423evaluate the given expression. The example below returns an initrd that
424mounts the /proc file system and starts a REPL:
425
426 (expression->initrd
427 '(begin
428 (mkdir "/proc")
429 (mount "none" "/proc" "proc")
430 ((@ (system repl repl) start-repl))))
431
432More examples in the linux-initrd.scm file.
433
434Experimental interfaces to produce and use QEMU images are provided by the
435(gnu system vm) module. For instance, the
436‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
437a QEMU virtual machine running the Linux kernel and Guile.
438
4056b828
LC
439** GNU distribution
440
441Many updates and additions have been made to the distribution. Here are the
442highlights.
443
444*** Major updates
445
446GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
447Coreutils 8.20, GDB 7.6, Texinfo 5.1.
448
449*** Noteworthy new packages
450
0f241da2
LC
451TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
452CHICKEN, Scheme48, Hugs, Python, Lua, Samba.