GNU Guix 1.1.0 released
We are pleased to announce the release of GNU Guix version 1.1.0!
The release comes with ISO-9660 installation
images,
a virtual machine
image,
and with tarballs to install the package manager on top of your
GNU/Linux distro, either from
source or
from
binaries.
Guix users can update by running guix pull
.
If you wonder what installing Guix System is like, this video gives an overview of the guided installation process:
There are more “getting started” videos.
It’s been 11 months since the previous release, during which 201 people
contributed code and packages. This is a long time for a release, which
is in part due to the fact that bug fixes and new features are
continuously delivered to our users via guix pull
. However, a
number of improvements, in particular in the installer, will greatly
improve the experience of first-time users.
It’s hard to summarize more than 14,000 commits! Here are some highlights as far as tooling is concerned:
- The new
guix deploy
tool allows you to deploy several machines at once, be it remote machines over SSH or machines at a virtual private server (VPS). - Channel authors can now write news entries for their users, which
are readily readable using
guix pull --news
. As a result, if you were already using Guix, you’ve probably already read these news! - The new
guix system describe
command tells you which commits of which channels were used to deploy your system, and also contains a link to your operating system configuration file. Precise provenance tracking that gives users and admins the ability to know exactly what changed between two different system instances! This feature builds upon the newprovenance
service. guix pack
has improved support for generating Singularity and Docker images, notably with the--entry-point
option.- There’s a new
guix time-machine
command that does what you would expect :-), and it nicely benefits from improved Software Heritage integration throughguix lint
. guix challenge
can now show diffs on the fly—one of the outcomes of the recent Reproducible Build Summit.- Guix can now publish and download lzip-compressed substitutes, which significantly reduces bandwidth requirement.
guix system
supports a--target
option providing some support for the cross-compilation of complete systems. More on that in this FOSDEM talk.- Guix now runs on Guile 3, which improves performance.
- The manual now includes a "cookbook" that contains tutorials and explorations of topics not covered by the manual alone.
On the distro side:
- The big change is that the package dependency graph is rooted in a reduced set of “binary seeds”—a huge step towards a fully auditable bootstrap. There’s more to come soon!
- The graphical installer for Guix System benefited from many bug fixes and improvements. Following the bugs found in 1.0.0, we developed an automated testing framework for the installer itself. Continuous integration runs automated tests of the installer for different configurations (encrypted root, non-encrypted root, with or without a desktop environment, etc.).
- 3,514 packages were added, for a total of more than 13K packages. 3,368 packages were upgraded. The distribution comes with GNU libc 2.29, GCC 9.3, GNOME 3.32, MATE 1.24.0, Xfce 4.14.0, Linux-libre 5.4.28, and LibreOffice 6.4.2.2 to name a few.
- 19 new services were added, notably providing support for running NFS servers, configuring the nftables firewall, or even a high-level Web service like Patchwork.
- Build systems for Node, Julia, and Qt were added, making it easier to
write package definitions for these ecosystems. In addition there is a
new
copy-build-system
that does what you might expect.
At the programming interface level and under the hood, many things changed as well, notably:
- The new
with-build-handler
form allows us to better support dynamic dependencies as introduced by grafts. More on that in a future post, but suffice to say that it fixes a longstanding user interface and performance issue. - The
remote-eval
procedure in(guix remote)
supports remote execution of Scheme code as G-expressions after having first built and deployed any code it relies on. This capability was key to allowing code sharing betweenguix deploy
, which operates on remote hosts, andguix system reconfigure
. Similarly, there’s a neweval/container
procedure to run code in an automatically-provisioned container. - The new
lower-gexp
procedure returns a low-level intermediate representation of a G-expression.remote-eval
,eval/container
, andgexp->derivation
are expressed in terms oflower-gexp
. - The
with-parameters
form allows you, for instance, to pin objects such as packages to a specific system or cross-compilation target. - Performance was improved for common low-level operations.
That’s a long list! The NEWS
file
lists additional noteworthy changes and bug fixes you may be interested
in.
Enjoy!
About GNU Guix
GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the kernel Linux, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.
In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.
Unless otherwise stated, blog posts on this site are copyrighted by their respective authors and published under the terms of the CC-BY-SA 4.0 license and those of the GNU Free Documentation License (version 1.3 or later, with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts).