aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/src/release-notes/rl-0.9.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manual/src/release-notes/rl-0.9.md')
-rw-r--r--doc/manual/src/release-notes/rl-0.9.md72
1 files changed, 72 insertions, 0 deletions
diff --git a/doc/manual/src/release-notes/rl-0.9.md b/doc/manual/src/release-notes/rl-0.9.md
new file mode 100644
index 000000000..8c3e1b28e
--- /dev/null
+++ b/doc/manual/src/release-notes/rl-0.9.md
@@ -0,0 +1,72 @@
+# Release 0.9 (2005-09-16)
+
+NOTE: this version of Nix uses Berkeley DB 4.3 instead of 4.2. The
+database is upgraded automatically, but you should be careful not to use
+old versions of Nix that still use Berkeley DB 4.2. In particular, if
+you use a Nix installed through Nix, you should run
+
+ $ nix-store --clear-substitutes
+
+first.
+
+ - Unpacking of patch sequences is much faster now since we no longer
+ do redundant unpacking and repacking of intermediate paths.
+
+ - Nix now uses Berkeley DB 4.3.
+
+ - The `derivation` primitive is lazier. Attributes of dependent
+ derivations can mutually refer to each other (as long as there are
+ no data dependencies on the `outPath` and `drvPath` attributes
+ computed by `derivation`).
+
+ For example, the expression `derivation
+ attrs` now evaluates to (essentially)
+
+ attrs // {
+ type = "derivation";
+ outPath = derivation! attrs;
+ drvPath = derivation! attrs;
+ }
+
+ where `derivation!` is a primop that does the actual derivation
+ instantiation (i.e., it does what `derivation` used to do). The
+ advantage is that it allows commands such as `nix-env -qa` and
+ `nix-env -i` to be much faster since they no longer need to
+ instantiate all derivations, just the `name` attribute.
+
+ Also, it allows derivations to cyclically reference each other, for
+ example,
+
+ webServer = derivation {
+ ...
+ hostName = "svn.cs.uu.nl";
+ services = [svnService];
+ };
+
+ svnService = derivation {
+ ...
+ hostName = webServer.hostName;
+ };
+
+ Previously, this would yield a black hole (infinite recursion).
+
+ - `nix-build` now defaults to using `./default.nix` if no Nix
+ expression is specified.
+
+ - `nix-instantiate`, when applied to a Nix expression that evaluates
+ to a function, will call the function automatically if all its
+ arguments have defaults.
+
+ - Nix now uses libtool to build dynamic libraries. This reduces the
+ size of executables.
+
+ - A new list concatenation operator `++`. For example, `[1 2 3] ++
+ [4 5
+ 6]` evaluates to `[1 2 3 4 5
+ 6]`.
+
+ - Some currently undocumented primops to support low-level build
+ management using Nix (i.e., using Nix as a Make replacement). See
+ the commit messages for `r3578` and `r3580`.
+
+ - Various bug fixes and performance improvements.