231 lines
7.6 KiB
Text
231 lines
7.6 KiB
Text
-*- org -*-
|
||
#+TITLE: Guix NEWS – history of user-visible changes
|
||
#+STARTUP: content hidestars
|
||
|
||
Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Please send Guix bug reports to bug-guix@gnu.org.
|
||
|
||
|
||
* Changes in 0.3 (since 0.2)
|
||
|
||
** Package management
|
||
|
||
*** Cross-compilation support
|
||
|
||
Guix can now cross-build packages. On the command-line, this is achieved with
|
||
the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
|
||
the guts of this is the ‘package-cross-derivation’ procedure. Core packages
|
||
of the distribution can already be cross-compiled. See the manual for
|
||
details.
|
||
|
||
*** New ‘--max-silent-time’ option for “guix build” and “guix package”
|
||
|
||
See the manual for details.
|
||
|
||
*** New ‘--fallback’ option for “guix build” and “guix package”
|
||
|
||
This option instructs to fall back to local builds when the substituter fails
|
||
to download a substitute.
|
||
|
||
*** New ‘--requisites’ option for “guix gc”
|
||
|
||
See the manual for details.
|
||
|
||
*** New ‘--key-download’ option for “guix refresh”
|
||
|
||
See the manual for details.
|
||
|
||
** Programming interfaces
|
||
|
||
*** New ‘package-cross-derivation’ procedure in (guix derivations)
|
||
|
||
See the manual for details.
|
||
|
||
*** New ‘%current-target-system’ SRFI-39 parameter
|
||
|
||
This parameter is like ‘%current-system’, but for cross-compilation. It
|
||
allows code in package definitions (such as in the ‘arguments’ field) to know
|
||
whether it is being cross-compiled, and what the target system is.
|
||
|
||
*** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
|
||
|
||
This improves performance of SHA256 computations.
|
||
|
||
|
||
** GNU distribution
|
||
|
||
*** Major updates
|
||
|
||
FIXME
|
||
|
||
*** Noteworthy new packages
|
||
|
||
FIXME
|
||
|
||
*** Binary packages now available for i686-linux
|
||
|
||
The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
|
||
(i686-linux), in addition to the x86_64-linux binaries. Both can be
|
||
transparently used as substitutes for local builds on these platforms.
|
||
|
||
*** Debug info packages
|
||
|
||
Some packages now have a “debug” output containing debugging information. The
|
||
“debug” output can be used by GDB, and can be installed separately from the
|
||
other outputs of the package. See “Installing Debugging Files” in the manual.
|
||
|
||
*** Bootstrap binaries can be cross-compiled
|
||
|
||
The distribution can now be ported to new architectures (currently
|
||
GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
|
||
in the manual.
|
||
|
||
*** Bootstrapping documented
|
||
|
||
See “Bootstrapping” in the manual, for information on how the GNU
|
||
distribution builds “from scratch”.
|
||
|
||
** Internationalization
|
||
|
||
New translations: eo, pt_BR.
|
||
|
||
** Bugs fixed
|
||
*** “guix --help” now works when using Guile 2.0.5
|
||
*** Binary substituter multi-threading and pipe issues fixed
|
||
|
||
These could lead to random substituter crashes while substituting a binary.
|
||
See commits 0332386 and 101d9f3 for details.
|
||
|
||
*** Binary substituter gracefully handles lack of network connectivity
|
||
|
||
*** Daemon properly handles rebuilds of multiple-output derivations
|
||
|
||
Previously it would fail when rebuilding a multiple-output derivation when
|
||
some (but not all) of its outputs were already present. See
|
||
http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
|
||
https://github.com/NixOS/nix/issues/122 .
|
||
|
||
|
||
*** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
|
||
|
||
Previously only the ‘out’ output of package ‘foo’ would be kept in the
|
||
profile.
|
||
|
||
* Changes in 0.2 (since 0.1)
|
||
|
||
** Package management
|
||
|
||
*** Guix commands are now sub-commands of the “guix” program
|
||
|
||
Instead of typing “guix-package”, one now has to type “guix package”, and so
|
||
on. This has allowed us to homogenize the user interface and initial program
|
||
setup, and to allow commands to be upgradable through “guix pull”.
|
||
|
||
*** New “guix package --upgrade” option
|
||
|
||
As the name implies, this option atomically upgrades all the packages
|
||
installed in a profile or the set of packages matching a given regexp.
|
||
See “Invoking guix package” in the manual.
|
||
|
||
*** New “guix package --search” option
|
||
|
||
Performs a full text search in package synopses and descriptions, and returns
|
||
the matching packages in recutils format. See “Invoking guix package” in the
|
||
manual, for details.
|
||
|
||
*** New “guix pull” command
|
||
|
||
The command pulls the latest version of Guix–both the package management
|
||
modules and the distribution. See the manual for details.
|
||
|
||
*** New binary substituter
|
||
|
||
The “substituter” mechanism allows pre-built binaries to be transparently
|
||
downloaded instead of performing a build locally. Currently binaries are
|
||
available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
|
||
distribution is continuously built and binaries are made available from there.
|
||
|
||
See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
|
||
available binary packages.
|
||
|
||
*** New “guix refresh” command
|
||
|
||
The command is used by Guix maintainers. It automatically updates the
|
||
distribution to the latest upstream releases of GNU software.
|
||
|
||
*** New “guix hash” command
|
||
|
||
Convenience command to compute the hash of a file. See the manual for
|
||
details.
|
||
|
||
*** Nix daemon code updated
|
||
|
||
The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
|
||
to current Nix ‘master’.
|
||
|
||
** Programming interfaces
|
||
|
||
*** (guix download) now supports HTTPS, using GnuTLS
|
||
|
||
It allows package source tarballs to be retrieved over HTTPS.
|
||
|
||
*** New ‘native-search-path’ and ‘search-path’ package fields
|
||
|
||
Packages can define in their ‘native-search-path’ field environment variables
|
||
that define search paths and need to be set for proper functioning of the
|
||
package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
|
||
‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
|
||
These environment variables are automatically set when building a package that
|
||
uses one of these.
|
||
|
||
*** Package inputs can be a function of the target system type
|
||
|
||
The ‘inputs’ field of a package can now be conditional on the value of
|
||
(%current-system). This is useful for packages that take system-dependent
|
||
tarballs as inputs, such as GNU/MIT Scheme.
|
||
|
||
*** New build systems
|
||
|
||
The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
|
||
been added. They implement the standard build systems for Perl, Python, and
|
||
CMake packages.
|
||
|
||
*** Tools to build Linux initrds, QEMU images, and more
|
||
|
||
The (gnu packages linux-initrd) module provides a procedure to build a Linux
|
||
initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
|
||
evaluate the given expression. The example below returns an initrd that
|
||
mounts the /proc file system and starts a REPL:
|
||
|
||
(expression->initrd
|
||
'(begin
|
||
(mkdir "/proc")
|
||
(mount "none" "/proc" "proc")
|
||
((@ (system repl repl) start-repl))))
|
||
|
||
More examples in the linux-initrd.scm file.
|
||
|
||
Experimental interfaces to produce and use QEMU images are provided by the
|
||
(gnu system vm) module. For instance, the
|
||
‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
|
||
a QEMU virtual machine running the Linux kernel and Guile.
|
||
|
||
** GNU distribution
|
||
|
||
Many updates and additions have been made to the distribution. Here are the
|
||
highlights.
|
||
|
||
*** Major updates
|
||
|
||
GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
|
||
Coreutils 8.20, GDB 7.6, Texinfo 5.1.
|
||
|
||
*** Noteworthy new packages
|
||
|
||
TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
|
||
CHICKEN, Scheme48, Hugs, Python, Lua, Samba.
|