Home Explore Blog CI



nix

1st chunk of `doc/manual/source/release-notes/rl-1.2.md`
deba2dac56147565732ba8671433d373aced3b14e2cd994800000001000008d3
# Release 1.2 (2012-12-06)

This release has the following improvements and changes:

  - Nix has a new binary substituter mechanism: the *binary cache*. A
    binary cache contains pre-built binaries of Nix packages. Whenever
    Nix wants to build a missing Nix store path, it will check a set of
    binary caches to see if any of them has a pre-built binary of that
    path. The configuration setting `binary-caches` contains a list of
    URLs of binary caches. For instance, doing
    
        $ nix-env -i thunderbird --option binary-caches http://cache.nixos.org
    
    will install Thunderbird and its dependencies, using the available
    pre-built binaries in <http://cache.nixos.org>. The main advantage
    over the old “manifest”-based method of getting pre-built binaries
    is that you don’t have to worry about your manifest being in sync
    with the Nix expressions you’re installing from; i.e., you don’t
    need to run `nix-pull` to update your manifest. It’s also more
    scalable because you don’t need to redownload a giant manifest file
    every time.
    
    A Nix channel can provide a binary cache URL that will be used
    automatically if you subscribe to that channel. If you use the
    Nixpkgs or NixOS channels (<http://nixos.org/channels>) you
    automatically get the cache <http://cache.nixos.org>.
    
    Binary caches are created using `nix-push`. For details on the
    operation and format of binary caches, see the `nix-push` manpage.
    More details are provided in [this nix-dev
    posting](https://nixos.org/nix-dev/2012-September/009826.html).

  - Multiple output support should now be usable. A derivation can
    declare that it wants to produce multiple store paths by saying
    something like
    
        outputs = [ "lib" "headers" "doc" ];
    
    This will cause Nix to pass the intended store path of each output
    to the builder through the environment variables `lib`, `headers`
    and `doc`. Other packages can refer to a specific output by
    referring to `pkg.output`, e.g.
    
        buildInputs = [ pkg.lib pkg.headers ];
    
    If you install a package with multiple outputs using `nix-env`, each
    output path will be symlinked into the user environment.

Title: Nix Release 1.2: Binary Caches and Multiple Output Support
Summary
Release 1.2 of Nix introduces binary caches, a new mechanism for obtaining pre-built binaries of Nix packages, eliminating the need for manual manifest synchronization. It also introduces multiple output support, enabling derivations to produce multiple store paths, which can be referenced by other packages and accessed via `nix-env`.