Fixed download url for Unison File Syncronizer.
[nixpkgs-libre.git] / doc / release-notes.xml
blobeb870da3a0e3d18d7753fdced546b31bb2870826
1 <?xml version="1.0" encoding="UTF-8"?>
2 <article xmlns="http://docbook.org/ns/docbook"
3          xmlns:xlink="http://www.w3.org/1999/xlink">
5 <title>Nixpkgs Release Notes</title>
8 <section><title>Release 0.12 (April 24, 2009)</title>
10 <para>There are way too many additions to Nixpkgs since the last
11 release to list here: for example, the number of packages on Linux has
12 increased from 1002 to 2159.  However, some specific improvements are
13 worth listing:
15 <itemizedlist>
17   <listitem><para>Nixpkgs now has a manual.  In particular, it
18   describes the standard build environment in
19   detail.</para></listitem>
21   <listitem><para>Major new packages:
23     <itemizedlist>
25       <listitem><para>KDE 4.</para></listitem>
27       <listitem><para>TeXLive.</para></listitem>
29       <listitem><para>VirtualBox.</para></listitem>
31     </itemizedlist>
33     … and many others.
35   </para></listitem>
37   <listitem><para>Important updates:
39     <itemizedlist>
41       <listitem><para>Glibc 2.7.</para></listitem>
42       
43       <listitem><para>GCC 4.2.4.</para></listitem>
45       <listitem><para>Linux 2.6.25 — 2.6.28.</para></listitem>
47       <listitem><para>Firefox 3.</para></listitem>
49       <listitem><para>X.org 7.3.</para></listitem>
51     </itemizedlist>
53   </para></listitem>
55   <listitem><para>Support for building derivations in a virtual
56   machine, including RPM and Debian builds in automatically generated
57   VM images.  See
58   <filename>pkgs/build-support/vm.default.nix</filename> for
59   details.</para></listitem>
61   <listitem><para>Improved support for building Haskell
62   packages.</para></listitem>
63   
64 </itemizedlist>
66 </para>
68 <para>The following people contributed to this release:
70 Andres Löh,
71 Arie Middelkoop,
72 Armijn Hemel,
73 Eelco Dolstra,
74 Lluís Batlle,
75 Ludovic Courtès,
76 Marc Weber,
77 Mart Kolthof,
78 Martin Bravenboer,
79 Michael Raskin,
80 Nicolas Pierron,
81 Peter Simons,
82 Pjotr Prins,
83 Rob Vermaas,
84 Sander van der Burg,
85 Tobias Hammerschmidt,
86 Valentin David,
87 Wouter den Breejen and
88 Yury G. Kudryashov.
90 In addition, several people contributed patches on the
91 <literal>nix-dev</literal> mailing list.</para>
93 </section>
94   
96 <section><title>Release 0.11 (September 11, 2007)</title>
98 <para>This release has the following improvements:
100 <itemizedlist>
102   
103   <listitem><para>The standard build environment
104   (<literal>stdenv</literal>) is now pure on the
105   <literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
106   platforms, just as on <literal>i686-linux</literal>.  (Purity means
107   that building and using the standard environment has no dependencies
108   outside of the Nix store.  For instance, it doesn’t require an
109   external C compiler such as <filename>/usr/bin/gcc</filename>.)
110   Also, the statically linked binaries used in the bootstrap process
111   are now automatically reproducible, making it easy to update the
112   bootstrap tools and to add support for other Linux platforms.  See
113   <filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
114   details.</para></listitem>
116   
117   <listitem><para>Hook variables in the generic builder are now
118   executed using the <function>eval</function> shell command.  This
119   has a major advantage: you can write hooks directly in Nix
120   expressions.  For instance, rather than writing a builder like this:
122 <programlisting>
123 source $stdenv/setup
125 postInstall=postInstall
126 postInstall() {
127     ln -sf gzip $out/bin/gunzip
128     ln -sf gzip $out/bin/zcat
131 genericBuild</programlisting>
133   (the <literal>gzip</literal> builder), you can just add this
134   attribute to the derivation:
136 <programlisting>
137 postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
139   and so a separate build script becomes unnecessary.  This should
140   allow us to get rid of most builders in Nixpkgs.</para></listitem>
143   <listitem><para>It is now possible to have the generic builder pass
144   arguments to <command>configure</command> and
145   <command>make</command> that contain whitespace.  Previously, for
146   example, you could say in a builder,
148 <programlisting>
149 configureFlags="CFLAGS=-O0"</programlisting>
151   but not
153 <programlisting>
154 configureFlags="CFLAGS=-O0 -g"</programlisting>
156   since the <literal>-g</literal> would be interpreted as a separate
157   argument to <command>configure</command>.  Now you can say
159 <programlisting>
160 configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
162   or similarly
164 <programlisting>
165 configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
167   which does the right thing.  Idem for <literal>makeFlags</literal>,
168   <literal>installFlags</literal>, <literal>checkFlags</literal> and
169   <literal>distFlags</literal>.</para>
171   <para>Unfortunately you can't pass arrays to Bash through the
172   environment, so you can't put the array above in a Nix expression,
173   e.g.,
175 <programlisting>
176 configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
178   since it would just be flattened to a since string.  However, you
179   <emphasis>can</emphasis> use the inline hooks described above:
181 <programlisting>
182 preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
184   </para></listitem>
187   <listitem><para>The function <function>fetchurl</function> now has
188   support for two different kinds of mirroring of files.  First, it
189   has support for <emphasis>content-addressable mirrors</emphasis>.
190   For example, given the <function>fetchurl</function> call
192 <programlisting>
193 fetchurl {
194   url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2;
195   sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
196 }</programlisting>
198   <function>fetchurl</function> will first try to download this file
199   from <link
200   xlink:href="http://nixos.org/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
201   If that file doesn’t exist, it will try the original URL.  In
202   general, the “content-addressed” location is
203   <replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
204   There is currently only one content-addressable mirror (<link
205   xlink:href="http://nixos.org/tarballs"/>), but more can be
206   specified in the <varname>hashedMirrors</varname> attribute in
207   <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
208   setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
209   to a whitespace-separated list of URLs.</para>
211   <para>Second, <function>fetchurl</function> has support for
212   widely-mirrored distribution sites such as SourceForge or the Linux
213   kernel archives.  Given a URL of the form
214   <literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>,
215   it will try to download <replaceable>path</replaceable> from a
216   configurable list of mirrors for <replaceable>site</replaceable>.
217   (This idea was borrowed from Gentoo Linux.)  Example:
218 <programlisting>
219 fetchurl {
220   url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
221   sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
222 }</programlisting>
223   Currently <replaceable>site</replaceable> can be
224   <literal>sourceforge</literal>, <literal>gnu</literal> and
225   <literal>kernel</literal>.  The list of mirrors is defined in
226   <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>.  You
227   can override the list of mirrors for a particular site by setting
228   the environment variable
229   <envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g.
230 <programlisting>
231 export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting>
232   </para>
234   </listitem>
237   <listitem><para>Important updates:
239     <itemizedlist>
241       <listitem><para>Glibc 2.5.</para></listitem>
242       
243       <listitem><para>GCC 4.1.2.</para></listitem>
244       
245       <listitem><para>Gnome 2.16.3.</para></listitem>
246       
247       <listitem><para>X11R7.2.</para></listitem>
248       
249       <listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem>
250       
251       <listitem><para>Emacs 22.1.</para></listitem>
252       
253     </itemizedlist>
255   </para></listitem>
257   
258   <listitem><para>Major new packages:
260     <itemizedlist>
262       <listitem><para>KDE 3.5.6 Base.</para></listitem>
263       
264       <listitem><para>Wine 0.9.43.</para></listitem>
265       
266       <listitem><para>OpenOffice 2.2.1.</para></listitem>
267       
268       <listitem><para>Many Linux system packages to support
269       NixOS.</para></listitem>
270       
271     </itemizedlist>
273   </para></listitem>
275 </itemizedlist>
277 </para>
279 <para>The following people contributed to this release:
281   Andres Löh,
282   Arie Middelkoop,
283   Armijn Hemel,
284   Eelco Dolstra,
285   Marc Weber,
286   Mart Kolthof,
287   Martin Bravenboer,
288   Michael Raskin,
289   Wouter den Breejen and
290   Yury G. Kudryashov.
292 </para>
293   
294 </section>
297 <section><title>Release 0.10 (October 12, 2006)</title>
299 <note><para>This release of Nixpkgs requires <link
300 xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
301 0.10</link> or higher.</para></note>
303 <para>This release has the following improvements:</para>
305 <itemizedlist>
307   <listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
308   is gone, we now just have
309   <filename>pkgs/top-level/all-packages.nix</filename> that contains
310   all available packages.  This should cause much less confusion with
311   users.  <filename>all-packages.nix</filename> is a function that by
312   default returns packages for the current platform, but you can
313   override this by specifying a different <varname>system</varname>
314   argument.</para></listitem>
316   <listitem><para>Certain packages in Nixpkgs are now
317   user-configurable through a configuration file, i.e., without having
318   to edit the Nix expressions in Nixpkgs.  For instance, the Firefox
319   provided in the Nixpkgs channel is built without the RealPlayer
320   plugin (for legal reasons).  Previously, you could easily enable
321   RealPlayer support by editing the call to the Firefox function in
322   <filename>all-packages.nix</filename>, but such changes are not
323   respected when Firefox is subsequently updated through the Nixpkgs
324   channel.</para>
326   <para>The Nixpkgs configuration file (found in
327   <filename>~/.nixpkgs/config.nix</filename> or through the
328   <envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
329   set that contains configuration options that
330   <filename>all-packages.nix</filename> reads and uses for certain
331   packages.  For instance, the following configuration file:
333 <programlisting>
335   firefox = {
336     enableRealPlayer = true;
337   };
338 }</programlisting>
340   persistently enables RealPlayer support in the Firefox
341   build.</para>
343   <para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
344   <emphasis>only</emphasis> configuration option currently available,
345   but more are sure to be added.)</para></listitem>
347   <listitem><para>Support for new platforms:
349     <itemizedlist>
351       <listitem><para><literal>i686-cygwin</literal>, i.e., Windows
352       (using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
353       The standard environment on <literal>i686-cygwin</literal> by
354       default builds binaries for the Cygwin environment (i.e., it
355       uses Cygwin tools and produces executables that use the Cygwin
356       library).  However, there is also a standard environment that
357       produces binaries that use <link
358       xlink:href="http://www.mingw.org/">MinGW</link>.  You can use it
359       by calling <filename>all-package.nix</filename> with the
360       <varname>stdenvType</varname> argument set to
361       <literal>"i686-mingw"</literal>.</para></listitem>
363       <listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
364       on Intel CPUs.</para></listitem>
366       <listitem><para><literal>powerpc-linux</literal>.</para></listitem>
368       <listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
369       64-bit AMD/Intel CPUs.  Unlike <literal>i686-linux</literal>,
370       this platform doesn’t have a pure <literal>stdenv</literal>
371       yet.</para></listitem>
373     </itemizedlist>
375     </para>
377   </listitem>
378         
379   <listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
381   <listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
383   <listitem><para>Notable new packages:
385     <itemizedlist>
387       <listitem><para>Opera.</para></listitem>
389       <listitem><para>Microsoft Visual C++ 2005 Express Edition and
390       the Windows SDK.</para></listitem>
392     </itemizedlist>
394     In total there are now around 809 packages in Nixpkgs.</para>
396   </listitem>
398   
399   <listitem><para>It is now <emphasis>much</emphasis> easier to
400   override the default C compiler and other tools in
401   <literal>stdenv</literal> for specific packages.
402   <filename>all-packages.nix</filename> provides two utility
403   functions for this purpose: <function>overrideGCC</function> and
404   <function>overrideInStdenv</function>.  Both take a
405   <literal>stdenv</literal> and return an augmented
406   <literal>stdenv</literal>; the formed changes the C compiler, and
407   the latter adds additional packages to the front of
408   <literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
409   tools to be overriden.</para>
411   <para>For instance, the package <varname>strategoxt</varname>
412   doesn’t build with the GNU Make in <literal>stdenv</literal>
413   (version 3.81), so we call it with an augmented
414   <literal>stdenv</literal> that uses GNU Make 3.80:
416 <programlisting>
417 strategoxt = (import ../development/compilers/strategoxt) {
418   inherit fetchurl pkgconfig sdf aterm;
419   stdenv = overrideInStdenv stdenv [gnumake380];
422 gnumake380 = <replaceable>...</replaceable>;</programlisting>
424   Likewise, there are many packages that don’t compile with the
425   default GCC (4.1.1), but that’s easily fixed:
427 <programlisting>
428 exult = import ../games/exult {
429   inherit fetchurl SDL SDL_mixer zlib libpng unzip;
430   stdenv = overrideGCC stdenv gcc34;
431 };</programlisting>
433   </para></listitem>
436   <listitem><para>It has also become much easier to experiment with
437   changes to the <literal>stdenv</literal> setup script (which notably
438   contains the generic builder).  Since edits to
439   <filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
440   of <emphasis>everything</emphasis>, this was formerly quite painful.
441   But now <literal>stdenv</literal> contains a function to
442   “regenerate” <literal>stdenv</literal> with a different setup
443   script, allowing the use of a different setup script for specific
444   packages:
446 <programlisting>
447 pkg = import <replaceable>...</replaceable> {
448   stdenv = stdenv.regenerate ./my-setup.sh;
449   <replaceable>...</replaceable>
450 }</programlisting>
452   </para></listitem>
455   <listitem><para>Packages can now have a human-readable
456   <emphasis>description</emphasis> field.  Package descriptions are
457   shown by <literal>nix-env -qa --description</literal>.  In addition,
458   they’re shown on the Nixpkgs release page.  A description can be
459   added to a package as follows:
461 <programlisting>
462 stdenv.mkDerivation {
463   name = "exult-1.2";
464   <replaceable>...</replaceable>
465   meta = {
466     description = "A reimplementation of the Ultima VII game engine";
467   };
468 }</programlisting>
470   The <varname>meta</varname> attribute is not passed to the builder,
471   so changes to the description do not trigger a rebuild.  Additional
472   <varname>meta</varname> attributes may be defined in the future
473   (such as the URL of the package’s homepage, the license,
474   etc.).</para></listitem>
475   
476 </itemizedlist>
479 <para>The following people contributed to this release:
481   Andres Löh,
482   Armijn Hemel,
483   Christof Douma,
484   Eelco Dolstra,
485   Eelco Visser,
486   Mart Kolthof,
487   Martin Bravenboer,
488   Merijn de Jonge,
489   Rob Vermaas and
490   Roy van den Broek.
492 </para>
493   
494 </section>
497 <section><title>Release 0.9 (January 31, 2006)</title>
499 <para>There have been zillions of changes since the last release of
500 Nixpkgs.  Many packages have been added or updated.  The following are
501 some of the more notable changes:</para>
503 <itemizedlist>
505   <listitem><para>Distribution files have been moved to <link
506   xlink:href="http://nixos.org/" />.</para></listitem>
508   <listitem><para>The C library on Linux, Glibc, has been updated to
509   version 2.3.6.</para></listitem>
511   <listitem><para>The default compiler is now GCC 3.4.5.  GCC 4.0.2 is
512   also available.</para></listitem>
514   <listitem><para>The old, unofficial Xlibs has been replaced by the
515   official modularised X11 distribution from X.org, i.e., X11R7.0.
516   X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
517   though not all have been tested.  It is now possible to build a
518   working X server (previously we only had X client libraries).  We
519   use a fully Nixified X server on NixOS.</para></listitem>
521   <listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
522   require any non-Nix components such as
523   <filename>/lib/ld-linux.so.2</filename>.  This means that Java
524   applications such as Eclipse and Azureus can run on
525   NixOS.</para></listitem>
527   <listitem><para>Hardware-accelerated OpenGL support, used by games
528   like Quake 3 (which is now built from source).</para></listitem>
530   <listitem><para>Improved support for FreeBSD on
531   x86.</para></listitem>
533   <listitem><para>Improved Haskell support; e.g., the GHC build is now
534   pure.</para></listitem>
536   <listitem><para>Some support for cross-compilation: cross-compiling
537   builds of GCC and Binutils, and cross-compiled builds of the C
538   library uClibc.</para></listitem>
540   <listitem><para>Notable new packages:
542     <itemizedlist>
544       <listitem><para>teTeX, including support for building LaTeX
545       documents using Nix (with automatic dependency
546       determination).</para></listitem>
547       
548       <listitem><para>Ruby.</para></listitem>
550       <listitem><para>System-level packages to support NixOS,
551       e.g. Grub, GNU <literal>parted</literal> and so
552       on.</para></listitem>
554       <listitem><para><literal>ecj</literal>, the Eclipse Compiler for
555       Java, so we finally have a freely distributable compiler that
556       supports Java 5.0.</para></listitem>
558       <listitem><para><literal>php</literal>.</para></listitem>
560       <listitem><para>The GIMP.</para></listitem>
562       <listitem><para>Inkscape.</para></listitem>
564       <listitem><para>GAIM.</para></listitem>
566       <listitem><para><literal>kdelibs</literal>.  This allows us to
567       add KDE-based packages (such as
568       <literal>kcachegrind</literal>).</para></listitem>
570     </itemizedlist>
572   </para></listitem>
574 </itemizedlist>
576 <para>The following people contributed to this release:
578   Andres Löh,
579   Armijn Hemel,
580   Bogdan Dumitriu,
581   Christof Douma,
582   Eelco Dolstra,
583   Eelco Visser,
584   Mart Kolthof,
585   Martin Bravenboer,
586   Rob Vermaas and
587   Roy van den Broek.
589 </para>
591 </section>
594 <section><title>Release 0.8 (April 11, 2005)</title>
596 <para>This release is mostly to remain synchronised with the changed
597 hashing scheme in Nix 0.8.</para>
599 <para>Notable updates:
601 <itemizedlist>
603   <listitem><para>Adobe Reader 7.0</para></listitem>
605   <listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
607 </itemizedlist>
609 </para>
611 </section>
614 <section><title>Release 0.7 (March 14, 2005)</title>
616 <itemizedlist>
618 <listitem>
620   <para>The bootstrap process for the standard build
621   environment on Linux (stdenv-linux) has been improved.  It is no
622   longer dependent in its initial bootstrap stages on the system
623   Glibc, GCC, and other tools.  Rather, Nixpkgs contains a statically
624   linked bash and curl, and uses that to download other statically
625   linked tools.  These are then used to build a Glibc and dynamically
626   linked versions of all other tools.</para>
628   <para>This change also makes the bootstrap process faster.  For
629   instance, GCC is built only once instead of three times.</para>
631   <para>(Contributed by Armijn Hemel.)</para>
633 </listitem>
635 <listitem>
637   <para>Tarballs used by Nixpkgs are now obtained from the same server
638   that hosts Nixpkgs (<link
639   xlink:href="http://catamaran.labs.cs.uu.nl/" />).  This reduces the
640   risk of packages being unbuildable due to moved or deleted files on
641   various servers.</para>
643 </listitem>
645 <listitem>
647   <para>There now is a generic mechanism for building Perl modules.
648   See the various Perl modules defined in
649   pkgs/system/all-packages-generic.nix.</para>
651 </listitem>
653 <listitem>
655   <para>Notable new packages:
657   <itemizedlist>
659     <listitem><para>Qt 3</para></listitem>
660     <listitem><para>MySQL</para></listitem>
661     <listitem><para>MythTV</para></listitem>
662     <listitem><para>Mono</para></listitem>
663     <listitem><para>MonoDevelop (alpha)</para></listitem>
664     <listitem><para>Xine</para></listitem>
666   </itemizedlist>
668   </para>
670 </listitem>
672 <listitem>
674   <para>Notable updates:
676   <itemizedlist>
678     <listitem><para>GCC 3.4.3</para></listitem>
679     <listitem><para>Glibc 2.3.4</para></listitem>
680     <listitem><para>GTK 2.6</para></listitem>
682   </itemizedlist>
684   </para>
686 </listitem>
688 </itemizedlist>
690 </section>
692   
693 </article>