warzone2100: New nixpkg.
[nixpkgs-libre.git] / doc / release-notes.xml
blob82a43c2887b603416703b53ef84260fe3c935190
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.13 (February 5, 2010)</title>
10 <para>As always, there are many changes.  Some of the most important
11 updates are:
13 <itemizedlist>
15   <listitem><para>Glibc 2.9.</para></listitem>
17   <listitem><para>GCC 4.3.3.</para></listitem>
19   <listitem><para>Linux 2.6.32.</para></listitem>
21   <listitem><para>X.org 7.5.</para></listitem>
23   <listitem><para>KDE 4.3.4.</para></listitem>
25 </itemizedlist>
27 </para>
30 </section>
33 <section><title>Release 0.12 (April 24, 2009)</title>
35 <para>There are way too many additions to Nixpkgs since the last
36 release to list here: for example, the number of packages on Linux has
37 increased from 1002 to 2159.  However, some specific improvements are
38 worth listing:
40 <itemizedlist>
42   <listitem><para>Nixpkgs now has a manual.  In particular, it
43   describes the standard build environment in
44   detail.</para></listitem>
46   <listitem><para>Major new packages:
48     <itemizedlist>
50       <listitem><para>KDE 4.</para></listitem>
52       <listitem><para>TeXLive.</para></listitem>
54       <listitem><para>VirtualBox.</para></listitem>
56     </itemizedlist>
58     … and many others.
60   </para></listitem>
62   <listitem><para>Important updates:
64     <itemizedlist>
66       <listitem><para>Glibc 2.7.</para></listitem>
67       
68       <listitem><para>GCC 4.2.4.</para></listitem>
70       <listitem><para>Linux 2.6.25 — 2.6.28.</para></listitem>
72       <listitem><para>Firefox 3.</para></listitem>
74       <listitem><para>X.org 7.3.</para></listitem>
76     </itemizedlist>
78   </para></listitem>
80   <listitem><para>Support for building derivations in a virtual
81   machine, including RPM and Debian builds in automatically generated
82   VM images.  See
83   <filename>pkgs/build-support/vm.default.nix</filename> for
84   details.</para></listitem>
86   <listitem><para>Improved support for building Haskell
87   packages.</para></listitem>
88   
89 </itemizedlist>
91 </para>
93 <para>The following people contributed to this release:
95 Andres Löh,
96 Arie Middelkoop,
97 Armijn Hemel,
98 Eelco Dolstra,
99 Lluís Batlle,
100 Ludovic Courtès,
101 Marc Weber,
102 Mart Kolthof,
103 Martin Bravenboer,
104 Michael Raskin,
105 Nicolas Pierron,
106 Peter Simons,
107 Pjotr Prins,
108 Rob Vermaas,
109 Sander van der Burg,
110 Tobias Hammerschmidt,
111 Valentin David,
112 Wouter den Breejen and
113 Yury G. Kudryashov.
115 In addition, several people contributed patches on the
116 <literal>nix-dev</literal> mailing list.</para>
118 </section>
119   
121 <section><title>Release 0.11 (September 11, 2007)</title>
123 <para>This release has the following improvements:
125 <itemizedlist>
127   
128   <listitem><para>The standard build environment
129   (<literal>stdenv</literal>) is now pure on the
130   <literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
131   platforms, just as on <literal>i686-linux</literal>.  (Purity means
132   that building and using the standard environment has no dependencies
133   outside of the Nix store.  For instance, it doesn’t require an
134   external C compiler such as <filename>/usr/bin/gcc</filename>.)
135   Also, the statically linked binaries used in the bootstrap process
136   are now automatically reproducible, making it easy to update the
137   bootstrap tools and to add support for other Linux platforms.  See
138   <filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
139   details.</para></listitem>
141   
142   <listitem><para>Hook variables in the generic builder are now
143   executed using the <function>eval</function> shell command.  This
144   has a major advantage: you can write hooks directly in Nix
145   expressions.  For instance, rather than writing a builder like this:
147 <programlisting>
148 source $stdenv/setup
150 postInstall=postInstall
151 postInstall() {
152     ln -sf gzip $out/bin/gunzip
153     ln -sf gzip $out/bin/zcat
156 genericBuild</programlisting>
158   (the <literal>gzip</literal> builder), you can just add this
159   attribute to the derivation:
161 <programlisting>
162 postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
164   and so a separate build script becomes unnecessary.  This should
165   allow us to get rid of most builders in Nixpkgs.</para></listitem>
168   <listitem><para>It is now possible to have the generic builder pass
169   arguments to <command>configure</command> and
170   <command>make</command> that contain whitespace.  Previously, for
171   example, you could say in a builder,
173 <programlisting>
174 configureFlags="CFLAGS=-O0"</programlisting>
176   but not
178 <programlisting>
179 configureFlags="CFLAGS=-O0 -g"</programlisting>
181   since the <literal>-g</literal> would be interpreted as a separate
182   argument to <command>configure</command>.  Now you can say
184 <programlisting>
185 configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
187   or similarly
189 <programlisting>
190 configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
192   which does the right thing.  Idem for <literal>makeFlags</literal>,
193   <literal>installFlags</literal>, <literal>checkFlags</literal> and
194   <literal>distFlags</literal>.</para>
196   <para>Unfortunately you can't pass arrays to Bash through the
197   environment, so you can't put the array above in a Nix expression,
198   e.g.,
200 <programlisting>
201 configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
203   since it would just be flattened to a since string.  However, you
204   <emphasis>can</emphasis> use the inline hooks described above:
206 <programlisting>
207 preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
209   </para></listitem>
212   <listitem><para>The function <function>fetchurl</function> now has
213   support for two different kinds of mirroring of files.  First, it
214   has support for <emphasis>content-addressable mirrors</emphasis>.
215   For example, given the <function>fetchurl</function> call
217 <programlisting>
218 fetchurl {
219   url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2;
220   sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
221 }</programlisting>
223   <function>fetchurl</function> will first try to download this file
224   from <link
225   xlink:href="http://nixos.org/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
226   If that file doesn’t exist, it will try the original URL.  In
227   general, the “content-addressed” location is
228   <replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
229   There is currently only one content-addressable mirror (<link
230   xlink:href="http://nixos.org/tarballs"/>), but more can be
231   specified in the <varname>hashedMirrors</varname> attribute in
232   <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
233   setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
234   to a whitespace-separated list of URLs.</para>
236   <para>Second, <function>fetchurl</function> has support for
237   widely-mirrored distribution sites such as SourceForge or the Linux
238   kernel archives.  Given a URL of the form
239   <literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>,
240   it will try to download <replaceable>path</replaceable> from a
241   configurable list of mirrors for <replaceable>site</replaceable>.
242   (This idea was borrowed from Gentoo Linux.)  Example:
243 <programlisting>
244 fetchurl {
245   url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
246   sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
247 }</programlisting>
248   Currently <replaceable>site</replaceable> can be
249   <literal>sourceforge</literal>, <literal>gnu</literal> and
250   <literal>kernel</literal>.  The list of mirrors is defined in
251   <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>.  You
252   can override the list of mirrors for a particular site by setting
253   the environment variable
254   <envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g.
255 <programlisting>
256 export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting>
257   </para>
259   </listitem>
262   <listitem><para>Important updates:
264     <itemizedlist>
266       <listitem><para>Glibc 2.5.</para></listitem>
267       
268       <listitem><para>GCC 4.1.2.</para></listitem>
269       
270       <listitem><para>Gnome 2.16.3.</para></listitem>
271       
272       <listitem><para>X11R7.2.</para></listitem>
273       
274       <listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem>
275       
276       <listitem><para>Emacs 22.1.</para></listitem>
277       
278     </itemizedlist>
280   </para></listitem>
282   
283   <listitem><para>Major new packages:
285     <itemizedlist>
287       <listitem><para>KDE 3.5.6 Base.</para></listitem>
288       
289       <listitem><para>Wine 0.9.43.</para></listitem>
290       
291       <listitem><para>OpenOffice 2.2.1.</para></listitem>
292       
293       <listitem><para>Many Linux system packages to support
294       NixOS.</para></listitem>
295       
296     </itemizedlist>
298   </para></listitem>
300 </itemizedlist>
302 </para>
304 <para>The following people contributed to this release:
306   Andres Löh,
307   Arie Middelkoop,
308   Armijn Hemel,
309   Eelco Dolstra,
310   Marc Weber,
311   Mart Kolthof,
312   Martin Bravenboer,
313   Michael Raskin,
314   Wouter den Breejen and
315   Yury G. Kudryashov.
317 </para>
318   
319 </section>
322 <section><title>Release 0.10 (October 12, 2006)</title>
324 <note><para>This release of Nixpkgs requires <link
325 xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
326 0.10</link> or higher.</para></note>
328 <para>This release has the following improvements:</para>
330 <itemizedlist>
332   <listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
333   is gone, we now just have
334   <filename>pkgs/top-level/all-packages.nix</filename> that contains
335   all available packages.  This should cause much less confusion with
336   users.  <filename>all-packages.nix</filename> is a function that by
337   default returns packages for the current platform, but you can
338   override this by specifying a different <varname>system</varname>
339   argument.</para></listitem>
341   <listitem><para>Certain packages in Nixpkgs are now
342   user-configurable through a configuration file, i.e., without having
343   to edit the Nix expressions in Nixpkgs.  For instance, the Firefox
344   provided in the Nixpkgs channel is built without the RealPlayer
345   plugin (for legal reasons).  Previously, you could easily enable
346   RealPlayer support by editing the call to the Firefox function in
347   <filename>all-packages.nix</filename>, but such changes are not
348   respected when Firefox is subsequently updated through the Nixpkgs
349   channel.</para>
351   <para>The Nixpkgs configuration file (found in
352   <filename>~/.nixpkgs/config.nix</filename> or through the
353   <envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
354   set that contains configuration options that
355   <filename>all-packages.nix</filename> reads and uses for certain
356   packages.  For instance, the following configuration file:
358 <programlisting>
360   firefox = {
361     enableRealPlayer = true;
362   };
363 }</programlisting>
365   persistently enables RealPlayer support in the Firefox
366   build.</para>
368   <para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
369   <emphasis>only</emphasis> configuration option currently available,
370   but more are sure to be added.)</para></listitem>
372   <listitem><para>Support for new platforms:
374     <itemizedlist>
376       <listitem><para><literal>i686-cygwin</literal>, i.e., Windows
377       (using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
378       The standard environment on <literal>i686-cygwin</literal> by
379       default builds binaries for the Cygwin environment (i.e., it
380       uses Cygwin tools and produces executables that use the Cygwin
381       library).  However, there is also a standard environment that
382       produces binaries that use <link
383       xlink:href="http://www.mingw.org/">MinGW</link>.  You can use it
384       by calling <filename>all-package.nix</filename> with the
385       <varname>stdenvType</varname> argument set to
386       <literal>"i686-mingw"</literal>.</para></listitem>
388       <listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
389       on Intel CPUs.</para></listitem>
391       <listitem><para><literal>powerpc-linux</literal>.</para></listitem>
393       <listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
394       64-bit AMD/Intel CPUs.  Unlike <literal>i686-linux</literal>,
395       this platform doesn’t have a pure <literal>stdenv</literal>
396       yet.</para></listitem>
398     </itemizedlist>
400     </para>
402   </listitem>
403         
404   <listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
406   <listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
408   <listitem><para>Notable new packages:
410     <itemizedlist>
412       <listitem><para>Opera.</para></listitem>
414       <listitem><para>Microsoft Visual C++ 2005 Express Edition and
415       the Windows SDK.</para></listitem>
417     </itemizedlist>
419     In total there are now around 809 packages in Nixpkgs.</para>
421   </listitem>
423   
424   <listitem><para>It is now <emphasis>much</emphasis> easier to
425   override the default C compiler and other tools in
426   <literal>stdenv</literal> for specific packages.
427   <filename>all-packages.nix</filename> provides two utility
428   functions for this purpose: <function>overrideGCC</function> and
429   <function>overrideInStdenv</function>.  Both take a
430   <literal>stdenv</literal> and return an augmented
431   <literal>stdenv</literal>; the formed changes the C compiler, and
432   the latter adds additional packages to the front of
433   <literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
434   tools to be overriden.</para>
436   <para>For instance, the package <varname>strategoxt</varname>
437   doesn’t build with the GNU Make in <literal>stdenv</literal>
438   (version 3.81), so we call it with an augmented
439   <literal>stdenv</literal> that uses GNU Make 3.80:
441 <programlisting>
442 strategoxt = (import ../development/compilers/strategoxt) {
443   inherit fetchurl pkgconfig sdf aterm;
444   stdenv = overrideInStdenv stdenv [gnumake380];
447 gnumake380 = <replaceable>...</replaceable>;</programlisting>
449   Likewise, there are many packages that don’t compile with the
450   default GCC (4.1.1), but that’s easily fixed:
452 <programlisting>
453 exult = import ../games/exult {
454   inherit fetchurl SDL SDL_mixer zlib libpng unzip;
455   stdenv = overrideGCC stdenv gcc34;
456 };</programlisting>
458   </para></listitem>
461   <listitem><para>It has also become much easier to experiment with
462   changes to the <literal>stdenv</literal> setup script (which notably
463   contains the generic builder).  Since edits to
464   <filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
465   of <emphasis>everything</emphasis>, this was formerly quite painful.
466   But now <literal>stdenv</literal> contains a function to
467   “regenerate” <literal>stdenv</literal> with a different setup
468   script, allowing the use of a different setup script for specific
469   packages:
471 <programlisting>
472 pkg = import <replaceable>...</replaceable> {
473   stdenv = stdenv.regenerate ./my-setup.sh;
474   <replaceable>...</replaceable>
475 }</programlisting>
477   </para></listitem>
480   <listitem><para>Packages can now have a human-readable
481   <emphasis>description</emphasis> field.  Package descriptions are
482   shown by <literal>nix-env -qa --description</literal>.  In addition,
483   they’re shown on the Nixpkgs release page.  A description can be
484   added to a package as follows:
486 <programlisting>
487 stdenv.mkDerivation {
488   name = "exult-1.2";
489   <replaceable>...</replaceable>
490   meta = {
491     description = "A reimplementation of the Ultima VII game engine";
492   };
493 }</programlisting>
495   The <varname>meta</varname> attribute is not passed to the builder,
496   so changes to the description do not trigger a rebuild.  Additional
497   <varname>meta</varname> attributes may be defined in the future
498   (such as the URL of the package’s homepage, the license,
499   etc.).</para></listitem>
500   
501 </itemizedlist>
504 <para>The following people contributed to this release:
506   Andres Löh,
507   Armijn Hemel,
508   Christof Douma,
509   Eelco Dolstra,
510   Eelco Visser,
511   Mart Kolthof,
512   Martin Bravenboer,
513   Merijn de Jonge,
514   Rob Vermaas and
515   Roy van den Broek.
517 </para>
518   
519 </section>
522 <section><title>Release 0.9 (January 31, 2006)</title>
524 <para>There have been zillions of changes since the last release of
525 Nixpkgs.  Many packages have been added or updated.  The following are
526 some of the more notable changes:</para>
528 <itemizedlist>
530   <listitem><para>Distribution files have been moved to <link
531   xlink:href="http://nixos.org/" />.</para></listitem>
533   <listitem><para>The C library on Linux, Glibc, has been updated to
534   version 2.3.6.</para></listitem>
536   <listitem><para>The default compiler is now GCC 3.4.5.  GCC 4.0.2 is
537   also available.</para></listitem>
539   <listitem><para>The old, unofficial Xlibs has been replaced by the
540   official modularised X11 distribution from X.org, i.e., X11R7.0.
541   X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
542   though not all have been tested.  It is now possible to build a
543   working X server (previously we only had X client libraries).  We
544   use a fully Nixified X server on NixOS.</para></listitem>
546   <listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
547   require any non-Nix components such as
548   <filename>/lib/ld-linux.so.2</filename>.  This means that Java
549   applications such as Eclipse and Azureus can run on
550   NixOS.</para></listitem>
552   <listitem><para>Hardware-accelerated OpenGL support, used by games
553   like Quake 3 (which is now built from source).</para></listitem>
555   <listitem><para>Improved support for FreeBSD on
556   x86.</para></listitem>
558   <listitem><para>Improved Haskell support; e.g., the GHC build is now
559   pure.</para></listitem>
561   <listitem><para>Some support for cross-compilation: cross-compiling
562   builds of GCC and Binutils, and cross-compiled builds of the C
563   library uClibc.</para></listitem>
565   <listitem><para>Notable new packages:
567     <itemizedlist>
569       <listitem><para>teTeX, including support for building LaTeX
570       documents using Nix (with automatic dependency
571       determination).</para></listitem>
572       
573       <listitem><para>Ruby.</para></listitem>
575       <listitem><para>System-level packages to support NixOS,
576       e.g. Grub, GNU <literal>parted</literal> and so
577       on.</para></listitem>
579       <listitem><para><literal>ecj</literal>, the Eclipse Compiler for
580       Java, so we finally have a freely distributable compiler that
581       supports Java 5.0.</para></listitem>
583       <listitem><para><literal>php</literal>.</para></listitem>
585       <listitem><para>The GIMP.</para></listitem>
587       <listitem><para>Inkscape.</para></listitem>
589       <listitem><para>GAIM.</para></listitem>
591       <listitem><para><literal>kdelibs</literal>.  This allows us to
592       add KDE-based packages (such as
593       <literal>kcachegrind</literal>).</para></listitem>
595     </itemizedlist>
597   </para></listitem>
599 </itemizedlist>
601 <para>The following people contributed to this release:
603   Andres Löh,
604   Armijn Hemel,
605   Bogdan Dumitriu,
606   Christof Douma,
607   Eelco Dolstra,
608   Eelco Visser,
609   Mart Kolthof,
610   Martin Bravenboer,
611   Rob Vermaas and
612   Roy van den Broek.
614 </para>
616 </section>
619 <section><title>Release 0.8 (April 11, 2005)</title>
621 <para>This release is mostly to remain synchronised with the changed
622 hashing scheme in Nix 0.8.</para>
624 <para>Notable updates:
626 <itemizedlist>
628   <listitem><para>Adobe Reader 7.0</para></listitem>
630   <listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
632 </itemizedlist>
634 </para>
636 </section>
639 <section><title>Release 0.7 (March 14, 2005)</title>
641 <itemizedlist>
643 <listitem>
645   <para>The bootstrap process for the standard build
646   environment on Linux (stdenv-linux) has been improved.  It is no
647   longer dependent in its initial bootstrap stages on the system
648   Glibc, GCC, and other tools.  Rather, Nixpkgs contains a statically
649   linked bash and curl, and uses that to download other statically
650   linked tools.  These are then used to build a Glibc and dynamically
651   linked versions of all other tools.</para>
653   <para>This change also makes the bootstrap process faster.  For
654   instance, GCC is built only once instead of three times.</para>
656   <para>(Contributed by Armijn Hemel.)</para>
658 </listitem>
660 <listitem>
662   <para>Tarballs used by Nixpkgs are now obtained from the same server
663   that hosts Nixpkgs (<link
664   xlink:href="http://catamaran.labs.cs.uu.nl/" />).  This reduces the
665   risk of packages being unbuildable due to moved or deleted files on
666   various servers.</para>
668 </listitem>
670 <listitem>
672   <para>There now is a generic mechanism for building Perl modules.
673   See the various Perl modules defined in
674   pkgs/system/all-packages-generic.nix.</para>
676 </listitem>
678 <listitem>
680   <para>Notable new packages:
682   <itemizedlist>
684     <listitem><para>Qt 3</para></listitem>
685     <listitem><para>MySQL</para></listitem>
686     <listitem><para>MythTV</para></listitem>
687     <listitem><para>Mono</para></listitem>
688     <listitem><para>MonoDevelop (alpha)</para></listitem>
689     <listitem><para>Xine</para></listitem>
691   </itemizedlist>
693   </para>
695 </listitem>
697 <listitem>
699   <para>Notable updates:
701   <itemizedlist>
703     <listitem><para>GCC 3.4.3</para></listitem>
704     <listitem><para>Glibc 2.3.4</para></listitem>
705     <listitem><para>GTK 2.6</para></listitem>
707   </itemizedlist>
709   </para>
711 </listitem>
713 </itemizedlist>
715 </section>
717   
718 </article>