guix gc: Add `--requisites'.
[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
14 * Changes in 0.3 (since 0.2)
15
16 ** Package management
17
18 *** Cross-compilation support
19
20 Guix can now cross-build packages. On the command-line, this is achieved with
21 the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
22 the guts of this is the ‘package-cross-derivation’ procedure. Core packages
23 of the distribution can already be cross-compiled. See the manual for
24 details.
25
26 *** New ‘--max-silent-time’ option for “guix build” and “guix package”
27
28 See the manual for details.
29
30 *** New ‘--fallback’ option for “guix build” and “guix package”
31
32 This option instructs to fall back to local builds when the substituter fails
33 to download a substitute.
34
35 *** New ‘--requisites’ option for “guix gc”
36
37 See the manual for details.
38
39 ** Bugs fixed
40 *** “guix --help” now works when using Guile 2.0.5
41 *** Binary substituter multi-threading and pipe issues fixed
42
43 These could lead to random substituter crashes while substituting a binary.
44 See commits 0332386 and 101d9f3 for details.
45
46 *** Binary substituter gracefully handles lack of network connectivity
47
48 * Changes in 0.2 (since 0.1)
49
50 ** Package management
51
52 *** Guix commands are now sub-commands of the “guix” program
53
54 Instead of typing “guix-package”, one now has to type “guix package”, and so
55 on. This has allowed us to homogenize the user interface and initial program
56 setup, and to allow commands to be upgradable through “guix pull”.
57
58 *** New “guix package --upgrade” option
59
60 As the name implies, this option atomically upgrades all the packages
61 installed in a profile or the set of packages matching a given regexp.
62 See “Invoking guix package” in the manual.
63
64 *** New “guix package --search” option
65
66 Performs a full text search in package synopses and descriptions, and returns
67 the matching packages in recutils format. See “Invoking guix package” in the
68 manual, for details.
69
70 *** New “guix pull” command
71
72 The command pulls the latest version of Guix–both the package management
73 modules and the distribution. See the manual for details.
74
75 *** New binary substituter
76
77 The “substituter” mechanism allows pre-built binaries to be transparently
78 downloaded instead of performing a build locally. Currently binaries are
79 available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
80 distribution is continuously built and binaries are made available from there.
81
82 See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
83 available binary packages.
84
85 *** New “guix refresh” command
86
87 The command is used by Guix maintainers. It automatically updates the
88 distribution to the latest upstream releases of GNU software.
89
90 *** New “guix hash” command
91
92 Convenience command to compute the hash of a file. See the manual for
93 details.
94
95 *** Nix daemon code updated
96
97 The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
98 to current Nix ‘master’.
99
100 ** Programming interfaces
101
102 *** (guix download) now supports HTTPS, using GnuTLS
103
104 It allows package source tarballs to be retrieved over HTTPS.
105
106 *** New ‘native-search-path’ and ‘search-path’ package fields
107
108 Packages can define in their ‘native-search-path’ field environment variables
109 that define search paths and need to be set for proper functioning of the
110 package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
111 ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
112 These environment variables are automatically set when building a package that
113 uses one of these.
114
115 *** Package inputs can be a function of the target system type
116
117 The ‘inputs’ field of a package can now be conditional on the value of
118 (%current-system). This is useful for packages that take system-dependent
119 tarballs as inputs, such as GNU/MIT Scheme.
120
121 *** New build systems
122
123 The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
124 been added. They implement the standard build systems for Perl, Python, and
125 CMake packages.
126
127 *** Tools to build Linux initrds, QEMU images, and more
128
129 The (gnu packages linux-initrd) module provides a procedure to build a Linux
130 initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
131 evaluate the given expression. The example below returns an initrd that
132 mounts the /proc file system and starts a REPL:
133
134 (expression->initrd
135 '(begin
136 (mkdir "/proc")
137 (mount "none" "/proc" "proc")
138 ((@ (system repl repl) start-repl))))
139
140 More examples in the linux-initrd.scm file.
141
142 Experimental interfaces to produce and use QEMU images are provided by the
143 (gnu system vm) module. For instance, the
144 ‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
145 a QEMU virtual machine running the Linux kernel and Guile.
146
147 ** GNU distribution
148
149 Many updates and additions have been made to the distribution. Here are the
150 highlights.
151
152 *** Major updates
153
154 GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
155 Coreutils 8.20, GDB 7.6, Texinfo 5.1.
156
157 *** Noteworthy new packages
158
159 TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
160 CHICKEN, Scheme48, Hugs, Python, Lua, Samba.