New macro gl_CANONICALIZE_LGPL_SEPARATE.
[gnulib.git] / README
diff --git a/README b/README
index 54cc04e..ba838e2 100644 (file)
--- a/README
+++ b/README
@@ -4,7 +4,9 @@ Gnulib
 Gnulib is intended to be the canonical source for most of the important
 "portability" and/or common files for GNU projects.  These are files
 intended to be shared at the source level; Gnulib is not a library meant
-to be installed and linked against.
+to be installed and linked against.  Unlike most projects, Gnulib does
+not normally generate a source tarball distribution; instead, developers
+should just grab modules directly from the repository.
 
 While portability across operating systems is not one of GNU's primary
 goals, it has helped introduce many people to the GNU system, and is
@@ -57,6 +59,12 @@ How to add a new module
 * If the module needs configure-time checks, write an autoconf
   macro for it in m4/<module>.m4. See m4/README for details.
 * Write a module description modules/<module>, based on modules/TEMPLATE.
+* If the module contributes a section to the end-user documentation,
+  put this documentation in doc/<module>.texi and add it to the "Files"
+  section of modules/<module>.  Most modules don't do this; they have only
+  documentation for the programmer (= gnulib user).  Such documentation
+  usually goes into the lib/ source files.  It may also go into doc/;
+  but don't add it to the module description in this case.
 * Add the module to the list in MODULES.html.sh.
 
 You can test that a module builds correctly with:
@@ -133,10 +141,30 @@ than 'long'.  POSIX 1003.1-2001 and the GNU coding standards both
 require 'int' to be at least 32 bits wide, so Gnulib code assumes this
 as well.  Gnulib code makes the following additional assumptions:
 
- * Signed integer arithmetic is two's complement, without runtime
-   overflow checking.  This is the traditional behavior, and is
-   supported by C99 implementations that conform to ISO/IEC 10967-1
-   (LIA-1) and that define signed integer types as being modulo.
+ * With one exception noted below, signed integer arithmetic is two's
+   complement, without runtime overflow checking.  This is the
+   traditional behavior, and is supported by C99 implementations that
+   conform to ISO/IEC 10967-1 (LIA-1) and that define signed integer
+   types as being modulo.
+
+   The exception is signed loop indexes.  Here, the behavior is
+   undefined if any signed expression derived from the loop index
+   overflows.  For example, the following code contains two such
+   overflows (the "i++" and the "i + 1") and therefore has undefined
+   behavior:
+
+     int i;
+     for (i = INT_MAX - 10; i <= INT_MAX; i++)
+       if (i + 1 < 0)
+        {
+          report_overflow ();
+          break;
+        }
+
+   This exception is a concession to modern optimizing compilers,
+   which can turn the above loop into code that executes the loop body
+   11 times, even though wraparound arithmetic would cause the loop to
+   iterate forever.
 
  * There are no "holes" in integer values: all the bits of an integer
    contribute to its value in the usual way.
@@ -187,15 +215,29 @@ Gnulib is available for anonymous checkout.  In any Bourne-shell the
 following should work:
 
 $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib login
-(Just hit Enter or Return when prompt for a password)
+(Just hit Enter or Return when prompted for a password)
 $ cvs -d :pserver:anoncvs@cvs.gnu.org:/cvsroot/gnulib checkout gnulib
 
 Gnulib is hosted on savannah.gnu.org.  The project page is
 http://savannah.gnu.org/projects/gnulib.
 
+Keeping Up-to-date
+==================
+
+The best way to work with Gnulib is to check it out of CVS.
+Subscribing to the bug-gnulib@gnu.org mailing list will help you to
+plan when to update your local copy of Gnulib (which you use to
+maintain your software) from CVS.  You can use "cvs update -dP" to
+synchronize.
+
+Sometimes, using an updated version of Gnulib will require you to use
+newer versions of GNU Automake or Autoconf.  You may find it helpful
+to join the autotools-announce mailing list to be advised of such
+changes.
+
 
 -----
-Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
+Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by