vm: Add #:memory-size parameter for 'expression->derivation-in-linux-vm'.
[jackhill/guix/guix.git] / NEWS
... / ...
CommitLineData
1 -*- org -*-
2#+TITLE: Guix NEWS – history of user-visible changes
3#+STARTUP: content hidestars
4
5Copyright © 2013, 2014 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.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
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
87This module provides a generic way to describe the system’s configuration,
88and to instantiate it, regardless of the final medium (QEMU image, etc.)
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
101Bootstrap binaries have been built for that architecture, and several
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
106build from source on this platform.
107
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
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
149*** ‘guix pull’ compiles Guix deterministically and correctly
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)
156*** ‘guix-daemon’ always sets umask to 022
157 (http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00033.html)
158*** Files referenced by environment variables are protected from GC
159*** Yet unbuilt packages get correctly installed (http://bugs.gnu.org/15283)
160*** ‘bootstrap-graph.{png,eps,pdf}’ built in srcdir (http://bugs.gnu.org/15640)
161
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
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
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
263*** Workarounds for Guile 2.0.5 now work on Debian derivatives
264*** The dependency graph image has correct size in PDF output
265*** 'ldd' now works correctly on x86_64
266*** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
267*** module-init-tools now builds (http://bugs.gnu.org/15182, http://bugs.gnu.org/15187)
268*** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
269
270* Changes in 0.3 (since 0.2)
271
272** Package management
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
282*** New ‘--max-silent-time’ option for “guix build” and “guix package”
283
284See the manual for details.
285
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
291*** New ‘--requisites’ option for “guix gc”
292
293See the manual for details.
294
295*** New ‘--key-download’ option for “guix refresh”
296
297See the manual for details.
298
299** Programming interfaces
300
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
311*** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
312
313This improves performance of SHA256 computations.
314
315
316** GNU distribution
317
318*** 33 new packages
319
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
324
325*** 25 package updates
326
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
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
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
367*** Binary substituter gracefully handles lack of network connectivity
368
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
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
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
387* Changes in 0.2 (since 0.1)
388
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
397*** New “guix package --upgrade” option
398
399As the name implies, this option atomically upgrades all the packages
400installed in a profile or the set of packages matching a given regexp.
401See “Invoking guix package” in the manual.
402
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
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
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.
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
434*** Nix daemon code updated
435
436The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
437to current Nix ‘master’.
438
439** Programming interfaces
440
441*** (guix download) now supports HTTPS, using GnuTLS
442
443It allows package source tarballs to be retrieved over HTTPS.
444
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
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
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
498TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
499CHICKEN, Scheme48, Hugs, Python, Lua, Samba.