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