gnu: Add Mercurial.
[jackhill/guix/guix.git] / NEWS
... / ...
CommitLineData
1 -*- org -*-
2#+TITLE: Guix NEWS – history of user-visible changes
3#+STARTUP: content hidestars
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
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
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
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
114*** Workarounds for Guile 2.0.5 now work on Debian derivatives
115*** The dependency graph image has correct size in PDF output
116*** 'ldd' now works correctly on x86_64
117*** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
118*** module-init-tools now builds (http://bugs.gnu.org/15182, http://bugs.gnu.org/15187)
119*** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
120
121* Changes in 0.3 (since 0.2)
122
123** Package management
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
133*** New ‘--max-silent-time’ option for “guix build” and “guix package”
134
135See the manual for details.
136
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
142*** New ‘--requisites’ option for “guix gc”
143
144See the manual for details.
145
146*** New ‘--key-download’ option for “guix refresh”
147
148See the manual for details.
149
150** Programming interfaces
151
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
162*** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
163
164This improves performance of SHA256 computations.
165
166
167** GNU distribution
168
169*** 33 new packages
170
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
175
176*** 25 package updates
177
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
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
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
218*** Binary substituter gracefully handles lack of network connectivity
219
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
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
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
238* Changes in 0.2 (since 0.1)
239
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
248*** New “guix package --upgrade” option
249
250As the name implies, this option atomically upgrades all the packages
251installed in a profile or the set of packages matching a given regexp.
252See “Invoking guix package” in the manual.
253
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
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
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.
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
285*** Nix daemon code updated
286
287The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
288to current Nix ‘master’.
289
290** Programming interfaces
291
292*** (guix download) now supports HTTPS, using GnuTLS
293
294It allows package source tarballs to be retrieved over HTTPS.
295
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
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
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
349TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
350CHICKEN, Scheme48, Hugs, Python, Lua, Samba.