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