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