From b376565b86717c4da2bdea5ee0bc73978ff9bc78 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Mar 2005 13:21:32 +0000 Subject: [PATCH] * Manual updates. --- doc/manual/bugs.xml | 59 ------------------------------- doc/manual/introduction.xml | 12 +++---- doc/manual/manual.xml | 1 + doc/manual/package-management.xml | 12 +++---- 4 files changed, 13 insertions(+), 71 deletions(-) diff --git a/doc/manual/bugs.xml b/doc/manual/bugs.xml index 6097b2aa0..8a56a28c5 100644 --- a/doc/manual/bugs.xml +++ b/doc/manual/bugs.xml @@ -18,25 +18,6 @@ - - - Unify the concepts of successors and substitutes into a - general notion of equivalent expressions. - Expressions are equivalent if they have the same target paths - with the same identifiers. However, even though they are - functionally equivalent, they may differ stronly with respect - to their performance characteristics. - For example, realising a closure expression is more efficient - that realising the derivation expression from which it was - produced. On the other hand, distributing sources may be more - efficient (storage- or bandwidth-wise) than distributing - binaries. So we need to be able to attach weigths or - priorities or performance annotations to expressions; Nix can - then choose the most efficient expression dependent on the - context. - - - Build management. In principle it is already @@ -52,41 +33,6 @@ - - - There are race conditions between the garbage collector and - other Nix tools. For instance, when we run - nix-env to build and install a derivation - and run the garbage collector at the same time, the garbage - collector may kick in exactly between the build and - installation steps, i.e., before the newly built derivation - has become reachable from a root of the garbage collector. - - - - One solution would be for these programs to properly register - temporary roots for the collector. Another would be to use - stop-the-world garbage collection: if any tool is running, the - garbage collector blocks, and vice versa. These solutions do - not solve the situation where multiple tools are involved, - e.g., - - -$ nix-store -r $(nix-instantiate foo.nix) - - since even if nix-instantiate where to - register a temporary root, it would be released by the time - nix-store is started. A solution would be - to write the intermediate value to a file that is used as a - root to the collector, e.g., - - -$ nix-instantiate foo.nix > /nix/var/nix/roots/bla -$ nix-store -r $(cat /nix/var/nix/roots/bla) - - - - For security, nix-push manifests should be digitally signed, and nix-pull should verify the signatures. The actual NAR archives in the cache do not @@ -94,11 +40,6 @@ need to be signed, since the manifest contains cryptographic hashes of these files (and fetchurl.nix checks them). -We should switch away from MD5, since it has been -more-or-less cracked. We don't currently depend very much on the -collision-resistance of MD5, but we will once we start sharing build -results between users. - It would be useful to have an option in nix-env --delete-generations to remove non-current generations older than a certain age. diff --git a/doc/manual/introduction.xml b/doc/manual/introduction.xml index 5eb43f3d7..9f94b2d53 100644 --- a/doc/manual/introduction.xml +++ b/doc/manual/introduction.xml @@ -130,11 +130,7 @@ collection. It also discusses some advanced topics, such as setting up a Nix-based build farm, and doing service deployment using Nix. -This manual is a work in progress. It's quite likely -to be incomplete, inconsistent with the current implementation, or -simply wrong. - -Some background information on Nix can be found in two +Some background information on Nix can be found in three papers. The ICSE 2004 paper Imposing a Memory Management Discipline on Software @@ -145,6 +141,10 @@ different versions and variants of packages. The LISA 2004 paper url='http://www.cs.uu.nl/~eelco/pubs/nspfssd-lisa2004-final.pdf'>Nix: A Safe and Policy-Free System for Software Deployment gives a more general discussion of Nix -from a system-administration perspective. +from a system-administration perspective. The CBSE 2005 paper Efficient +Upgrading in a Purely Functional Component Deployment Model + is about transparent patch deployment in +Nix. diff --git a/doc/manual/manual.xml b/doc/manual/manual.xml index 9ff13d9df..645afa5e6 100644 --- a/doc/manual/manual.xml +++ b/doc/manual/manual.xml @@ -36,6 +36,7 @@ 2004 + 2005 Eelco Dolstra diff --git a/doc/manual/package-management.xml b/doc/manual/package-management.xml index 4e86b2601..53773be5c 100644 --- a/doc/manual/package-management.xml +++ b/doc/manual/package-management.xml @@ -189,12 +189,12 @@ of the Subversion component might be stored in a directory while another version might be stored in /nix/store/58823d558a6a...-subversion-0.34/. The long hexadecimal numbers prefixed to the directory names are -cryptographic hashes128 bit MD5 hashes, to be -precise. of all inputs involved -in building the component — sources, dependencies, compiler flags, and -so on. So if two components differ in any way, they end up in -different locations in the file system, so they don't interfere with -each other. 160-bit truncations of SHA-256 +hashes, to be precise. of all +inputs involved in building the component — sources, dependencies, +compiler flags, and so on. So if two components differ in any way, +they end up in different locations in the file system, so they don't +interfere with each other. TODO: the figure isn't entirely up to date. It should show multiple profiles and ~/.nix-profile. shows a part of