gnu: Honor the operating system's locale and timezone.
[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.4 (since 0.3)
14
15 ** Package management
16
17 *** New ‘--list-generations’ and ‘--delete-generations’ options
18
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.
21
22 *** New ‘guix-register’ program
23
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.
26
27 ** Programming interfaces
28
29 *** New API to bootstrap Autotools-based packages
30
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.
34
35 *** ‘derivation’ and related procedures have a #:references-graphs parameter
36
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.
41
42 *** Extended API to build a GNU system virtual machine image
43
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.
49
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.
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
59 a <derivation> object. The <derivation> object embeds the corresponding .drv
60 file name. See “Derivations” in the manual for details.
61
62 ** GNU distribution
63
64 *** 60 new packages
65
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
76
77 *** 27 package updates
78
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
85
86 *** Fontconfig font search path made more convenient
87
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.
91
92 *** More GUI applications
93
94 The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+
95 applications have been added (see above.)
96
97 *** Packaging guidelines
98
99 The documentation of packaging guidelines has been augmented. See the manual
100 under “GNU Distribution”.
101
102 *** Support for Python 3 along with Python 2
103
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.
107
108 ** Internationalization
109
110 Updated 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
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.
132
133 *** New ‘--max-silent-time’ option for “guix build” and “guix package”
134
135 See the manual for details.
136
137 *** New ‘--fallback’ option for “guix build” and “guix package”
138
139 This option instructs to fall back to local builds when the substituter fails
140 to download a substitute.
141
142 *** New ‘--requisites’ option for “guix gc”
143
144 See the manual for details.
145
146 *** New ‘--key-download’ option for “guix refresh”
147
148 See the manual for details.
149
150 ** Programming interfaces
151
152 *** New ‘package-cross-derivation’ procedure in (guix derivations)
153
154 See the manual for details.
155
156 *** New ‘%current-target-system’ SRFI-39 parameter
157
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.
161
162 *** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
163
164 This improves performance of SHA256 computations.
165
166
167 ** GNU distribution
168
169 *** 33 new packages
170
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
175
176 *** 25 package updates
177
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
183
184 *** Binary packages now available for i686-linux
185
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.
189
190 *** Debug info packages
191
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.
195
196 *** Bootstrap binaries can be cross-compiled
197
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.
201
202 *** Bootstrapping documented
203
204 See “Bootstrapping” in the manual, for information on how the GNU
205 distribution builds “from scratch”.
206
207 ** Internationalization
208
209 New 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
215 These could lead to random substituter crashes while substituting a binary.
216 See 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
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 .
226
227 *** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
228
229 Previously only the ‘out’ output of package ‘foo’ would be kept in the
230 profile.
231
232 *** Replacement (srfi srfi-37) provided if the user’s one is broken
233
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.
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
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”.
247
248 *** New “guix package --upgrade” option
249
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.
253
254 *** New “guix package --search” option
255
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.
259
260 *** New “guix pull” command
261
262 The command pulls the latest version of Guix–both the package management
263 modules and the distribution. See the manual for details.
264
265 *** New binary substituter
266
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.
271
272 See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
273 available binary packages.
274
275 *** New “guix refresh” command
276
277 The command is used by Guix maintainers. It automatically updates the
278 distribution to the latest upstream releases of GNU software.
279
280 *** New “guix hash” command
281
282 Convenience command to compute the hash of a file. See the manual for
283 details.
284
285 *** Nix daemon code updated
286
287 The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
288 to current Nix ‘master’.
289
290 ** Programming interfaces
291
292 *** (guix download) now supports HTTPS, using GnuTLS
293
294 It allows package source tarballs to be retrieved over HTTPS.
295
296 *** New ‘native-search-path’ and ‘search-path’ package fields
297
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.
304
305 *** Package inputs can be a function of the target system type
306
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.
310
311 *** New build systems
312
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.
316
317 *** Tools to build Linux initrds, QEMU images, and more
318
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:
323
324 (expression->initrd
325 '(begin
326 (mkdir "/proc")
327 (mount "none" "/proc" "proc")
328 ((@ (system repl repl) start-repl))))
329
330 More examples in the linux-initrd.scm file.
331
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.
336
337 ** GNU distribution
338
339 Many updates and additions have been made to the distribution. Here are the
340 highlights.
341
342 *** Major updates
343
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.
346
347 *** Noteworthy new packages
348
349 TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
350 CHICKEN, Scheme48, Hugs, Python, Lua, Samba.