gnu: pixman: Upgrade to 0.32.4.
[guix.git] / NEWS
blobc1ca2ab54fa6404a616f5ba7c7a2faeaefe41041
1                                                               -*- org -*-
2 #+TITLE: Guix NEWS – history of user-visible changes
3 #+STARTUP: content hidestars
5 Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
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.
11 Please send Guix bug reports to bug-guix@gnu.org.
13 * Changes in 0.4 (since 0.3)
15 ** Package management
17 *** New ‘--list-generations’ and ‘--delete-generations’ options
19 The ‘guix package’ command has these two new options, which make it easier to
20 deal with a profile’s generation.  See “Invoking guix package” in the manual.
22 *** New ‘guix-register’ program
24 This program allows the meta-data of a new store to be initialized, by
25 copying info from an existing store.  It is mostly an internal tool.
27 ** Programming interfaces
29 *** New API to bootstrap Autotools-based packages
31 The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a
32 package object and source directory, and returns a new package object that
33 runs ‘./bootstrap && make dist’ or anything similar.
35 *** ‘derivation’ and related procedures have a #:references-graphs parameter
37 This parameter instructs the build daemon to populate the derivation’s build
38 tree with files containing the list of references of the given store files.
39 This is useful to write code that copies a packages and all its dependencies
40 to another storage device, such as a QEMU disk image.
42 *** Extended API to build a GNU system virtual machine image
44 The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’
45 procedure 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
47 system, has ‘login’ running on several consoles, has a set of installed
48 packages, and where Guix can be used.
50 New (gnu system …) modules have been added to handle the configuration of the
51 various parts of a GNU/Linux system.  For instance, (gnu system dmd) provides
52 support for instantiating dmd services; (gnu system linux) helps with Linux
53 PAM configuration; and so on.
55 *** <derivation> objects supersede .drv file names in the API
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
59 a <derivation> object.  The <derivation> object embeds the corresponding .drv
60 file name.  See “Derivations” in the manual for details.
62 ** GNU distribution
64 *** 60 new packages
66 apr, apr-util, cdparanoia, dbus-glib, dfc, dmd, dvdisaster, exiv2, fetchmail,
67 freefont-ttf, freeglut, geeqie, git, gkrellm, glu, gnome-doc-utils,
68 gst-plugins-base, gstreamer, guile-cairo, guile-lib, guile-xcb, guix, htop,
69 itstool, lame, libextractor, libmicrohttpd, lightning, lzip, mingetty, mutt,
70 net-base, net-tools, ocrad, pspp, python-babel, python-dateutil, python-pytz,
71 python-setuptools, python-simplejson, python-wrapper, python2-babel,
72 python2-dateutil, python2-mechanize, python2-pyicu, python2-pysqlite,
73 python2-pytz, python2-setuptools, python2-simplejson, qemu-system-initrd,
74 qemu-with-multiple-smb-shares, ripperx, shadow, ttf-bitstream-vera, units,
75 valgrind, xmlto, xnee, yasm
77 *** 27 package updates
79 bigloo 4.0b, cairo 1.12.16, ddrescue 1.17, fontconfig 2.10.93, fplll 4.0.4,
80 gcc 4.7.3, gcc 4.7.3, glibc 2.18, glibc 2.18, glibc-stripped-tarball 2.18,
81 gnupg 2.0.21, gnutls 3.2.4, guile 2.0.9, guile 2.0.9, harfbuzz 0.9.21,
82 imagemagick 6.8.6-9, libdrm 2.4.46, libgcrypt 1.5.3, libjpeg 9, libksba 1.3.0,
83 linux-libre 3.11, m4 1.4.17, mpfrcx 0.4.2, pari-gp 2.5.4, python 2.7.5, python
84 3.3.2, texlive 2013
86 *** Fontconfig font search path made more convenient
88 Fontconfig, the library used by many graphical applications, such as those
89 based on GTK+, now knows where to find the default set of fonts.  Additional
90 fonts installed in the user profile are automatically picked up.
92 *** More GUI applications
94 The ‘emacs’ and ‘racket’ packages are now linked against GTK+.  New GTK+
95 applications have been added (see above.)
97 *** Packaging guidelines
99 The documentation of packaging guidelines has been augmented.  See the manual
100 under “GNU Distribution”.
102 *** Support for Python 3 along with Python 2
104 Python 3 has been added to the distribution, and Python packages that support
105 it are now built for both Python 2 and Python 3.  See the “Python Modules”
106 section of the manual for details.
108 ** Internationalization
110 Updated translations: eo.
112 ** Bugs fixed
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)
121 * Changes in 0.3 (since 0.2)
123 ** Package management
125 *** Cross-compilation support
127 Guix can now cross-build packages.  On the command-line, this is achieved with
128 the new ‘--target’ command-line option of ‘guix build’.  At the Scheme level,
129 the guts of this is the ‘package-cross-derivation’ procedure.  Core packages
130 of the distribution can already be cross-compiled.  See the manual for
131 details.
133 *** New ‘--max-silent-time’ option for “guix build” and “guix package”
135 See the manual for details.
137 *** New ‘--fallback’ option for “guix build” and “guix package”
139 This option instructs to fall back to local builds when the substituter fails
140 to download a substitute.
142 *** New ‘--requisites’ option for “guix gc”
144 See the manual for details.
146 *** New ‘--key-download’ option for “guix refresh”
148 See the manual for details.
150 ** Programming interfaces
152 *** New ‘package-cross-derivation’ procedure in (guix derivations)
154 See the manual for details.
156 *** New ‘%current-target-system’ SRFI-39 parameter
158 This parameter is like ‘%current-system’, but for cross-compilation.  It
159 allows code in package definitions (such as in the ‘arguments’ field) to know
160 whether it is being cross-compiled, and what the target system is.
162 *** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
164 This improves performance of SHA256 computations.
167 ** GNU distribution
169 *** 33 new packages
171 alsa-lib, babel, cairo, cvs, gcal, gcc-cross-mips64el-linux-gnuabi64, gd,
172 gdk-pixbuf, graphviz, grue-hunter, gtk+, gts, harfbuzz, imagemagick, iproute2,
173 iptables, libspectre, mpg321, noweb, pango, plotutils, privoxy, pytz, racket,
174 rubber, rush, strace, tk, torsocks, unrtf, vc-dwim, wordnet, xlockmore
176 *** 25 package updates
178 automake 1.14, ed 1.9, freeipmi 1.2.8, gawk 4.1.0, gcc 4.8.1, gettext 0.18.3,
179 glib 2.37.1, gmp 5.1.2, gnutls 3.2.1, gzip 1.6, help2man 1.43.3, libapr 1.4.8,
180 libaprutil 1.5.2, libassuan 2.1.1, libffi 3.0.13, libgc 7.2d, libgpg-error
181 1.12, libidn 1.28, libpng 1.5.17, lout 3.40, lsh 2.1, nettle 2.7.1, qemu
182 1.5.1, tzdata 2013d, xorriso 1.3.0
184 *** Binary packages now available for i686-linux
186 The 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
188 transparently used as substitutes for local builds on these platforms.
190 *** Debug info packages
192 Some 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
194 other outputs of the package.  See “Installing Debugging Files” in the manual.
196 *** Bootstrap binaries can be cross-compiled
198 The distribution can now be ported to new architectures (currently
199 GNU/Linux-only) by cross-compiling the “bootstrap binaries”.  See “Porting”
200 in the manual.
202 *** Bootstrapping documented
204 See “Bootstrapping” in the manual, for information on how the GNU
205 distribution builds “from scratch”.
207 ** Internationalization
209 New translations: eo, pt_BR.
211 ** Bugs fixed
212 *** “guix --help” now works when using Guile 2.0.5
213 *** Binary substituter multi-threading and pipe issues fixed
215 These could lead to random substituter crashes while substituting a binary.
216 See commits 0332386 and 101d9f3 for details.
218 *** Binary substituter gracefully handles lack of network connectivity
220 *** Daemon properly handles rebuilds of multiple-output derivations
222 Previously it would fail when rebuilding a multiple-output derivation when
223 some (but not all) of its outputs were already present.  See
224 http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
225 https://github.com/NixOS/nix/issues/122 .
227 *** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
229 Previously only the ‘out’ output of package ‘foo’ would be kept in the
230 profile.
232 *** Replacement (srfi srfi-37) provided if the user’s one is broken
234 When 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
236 command-line argument processing in some cases.
238 * Changes in 0.2 (since 0.1)
240 ** Package management
242 *** Guix commands are now sub-commands of the “guix” program
244 Instead of typing “guix-package”, one now has to type “guix package”, and so
245 on.  This has allowed us to homogenize the user interface and initial program
246 setup, and to allow commands to be upgradable through “guix pull”.
248 *** New “guix package --upgrade” option
250 As the name implies, this option atomically upgrades all the packages
251 installed in a profile or the set of packages matching a given regexp.
252 See “Invoking guix package” in the manual.
254 *** New “guix package --search” option
256 Performs a full text search in package synopses and descriptions, and returns
257 the matching packages in recutils format.  See “Invoking guix package” in the
258 manual, for details.
260 *** New “guix pull” command
262 The command pulls the latest version of Guix–both the package management
263 modules and the distribution.  See the manual for details.
265 *** New binary substituter
267 The “substituter” mechanism allows pre-built binaries to be transparently
268 downloaded instead of performing a build locally.  Currently binaries are
269 available for x86_64 Linux-based GNU systems from http://hydra.gnu.org.  The
270 distribution is continuously built and binaries are made available from there.
272 See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
273 available binary packages.
275 *** New “guix refresh” command
277 The command is used by Guix maintainers.  It automatically updates the
278 distribution to the latest upstream releases of GNU software.
280 *** New “guix hash” command
282 Convenience command to compute the hash of a file.  See the manual for
283 details.
285 *** Nix daemon code updated
287 The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
288 to current Nix ‘master’.
290 ** Programming interfaces
292 *** (guix download) now supports HTTPS, using GnuTLS
294 It allows package source tarballs to be retrieved over HTTPS.
296 *** New ‘native-search-path’ and ‘search-path’ package fields
298 Packages can define in their ‘native-search-path’ field environment variables
299 that define search paths and need to be set for proper functioning of the
300 package.  For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
301 ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
302 These environment variables are automatically set when building a package that
303 uses one of these.
305 *** Package inputs can be a function of the target system type
307 The ‘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
309 tarballs as inputs, such as GNU/MIT Scheme.
311 *** New build systems
313 The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
314 been added.  They implement the standard build systems for Perl, Python, and
315 CMake packages.
317 *** Tools to build Linux initrds, QEMU images, and more
319 The (gnu packages linux-initrd) module provides a procedure to build a Linux
320 initrd (“initial RAM disk”).  The initrd embeds Guile, which is used to
321 evaluate the given expression.  The example below returns an initrd that
322 mounts the /proc file system and starts a REPL:
324   (expression->initrd
325     '(begin
326        (mkdir "/proc")
327        (mount "none" "/proc" "proc")
328        ((@ (system repl repl) start-repl))))
330 More examples in the linux-initrd.scm file.
332 Experimental 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
335 a QEMU virtual machine running the Linux kernel and Guile.
337 ** GNU distribution
339 Many updates and additions have been made to the distribution.  Here are the
340 highlights.
342 *** Major updates
344 GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
345 Coreutils 8.20, GDB 7.6, Texinfo 5.1.
347 *** Noteworthy new packages
349 TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
350 CHICKEN, Scheme48, Hugs, Python, Lua, Samba.