Linux Today: Linux News On Internet Time.

More on LinuxToday

Release Digest: GNU, October 8, 2002

Oct 09, 2002, 05:00 (1 Talkback[s])


Desktop-as-a-Service Designed for Any Cloud ? Nutanix Frame

GNU sed 3.95

GNU sed 3.95 has been released.  This is an alpha release for the upcoming
GNU sed 4.0 release.

GNU sed 3.95 merges most of the changes in the free-software super-sed
project.  In particular:

* Can customize line wrap width on single `l' commands

* `L' command formats and reflows paragraphs like `fmt' does.

* The test suite makefiles are better organized (this change is transparent

* Compiles and bootstraps out-of-the-box under MinGW32 and Cygwin.

* Optimizes cases when pattern space is truncated at its start or at its end
by `D' or by a substitution command with an empty RHS. For example scripts
like this,

    seq 1 10000 | tr \\n \  | ./sed ':a; s/^[0-9][0-9]* //; ta'

whose behavior was quadratic with previous versions of sed, have now linear

* Bug fix: Made the behavior of s/A*/x/g (i.e. `s' command with a
possibly empty LHS) more consistent:

       pattern               GNU sed 3.x       GNU sed 4.x
        B                      xBx               xBx
        BC                     xBxCx             xBxCx
        BAC                    xBxxCx            xBxCx
        BAAC                   xBxxCx            xBxCx

* Check for invalid backreferences in the RHS of the `s' command (e.g.

* Support for \[lLuUE] in the RHS of the `s' command like in Perl.

* New regular expression matcher

* Bug fix: if a file was redirected to be stdin, sed did not consume it.  So
      (sed d; sed G) < TESTFILE

double-spaced TESTFILE, while the equivalent `useless use of cat'
      cat TESTFILE | (sed d; sed G)

printed nothing (which is the correct behavior).  A test for this bug was
added to the test suite.

* The documentation is now much better, with a few examples provided, and a
thorough description of regular expressions.

* New option -i, to support in-place editing a la Perl.  Usually one had to
use ed or, for more complex tasks, resort to Perl; this is not necessary

* Added new command-line options:
  -u, --unbuffered
    Do not attempt to read-ahead more than required; do not buffer stdout.
  -l N, --line-length=N
    Specify the desired line-wrap length for the `l' command.
    A length of "0" means "never wrap".

* Documented command-line option:
  -r, --regexp-extended
    Use extended regexps -- e.g. (abc+) instead of \(abc\+\)

* Added feature to the `w' command and to the `w' option of the `s' command:
if the file name is /dev/stderr, it means the standard error (inspired by
awk); and similarly for /dev/stdout.  This is disabled if POSIXLY_CORRECT is

* Added `m' and `M' modifiers to `s' command for multi-line matching
(Perl-style); in addresses, only `M' works.

* New option `e' to pass the output of the `s' command through the Bourne
shell and get the result into pattern space.

* Added `e' commnad to pipe the output of a command into the output of sed.

* Added `Q' command for `silent quit'; added ability to pass an exit code
from a sed script to the caller.

* Added `R' command to read a single line from a file.

* Added `W' command to write first line of pattern space to a file

* Added `T' command for `branch if failed'.

* Added `v' command, which is a do-nothing intended to fail on seds that do
not support super-sed's extensions.

* New internationalization translations added: fr ru de it el sk pt_BR sv
(some of them need updating)

* The s/// command now understands the following escapes (in both halves):
 \a an "alert" (BEL)
 \f a form-feed
 \n a newline
 \r a carriage-return
 \t a horizontal tab
 \v a vertical tab
 \oNNN a character with the octal value NNN
 \dNNN a character with the decimal value NNN
 \xNN a character with the hexadecimal value NN
This behavior is disabled if POSIXLY_CORRECT is set, at least for the time
being (until I can be convinced that this behavior does not violate the
POSIX standard).  (Incidentally, \b (backspace) was omitted because of the
conflict with the existing "word boundary" meaning. \ooo octal format was
omitted because of the conflict with backreference syntax.)

* If POSIXLY_CORRECT is set, the empty RE // now is the null match instead
of "repeat the last REmatch".  As far as I can tell this behavior is
mandated by POSIX, but it would break too many
legacy sed scripts to blithely change GNU sed's default behavior.

This release is known to have bugs.  Some can remain in GNU sed 4.0, but not
those that for example give problems when configuring packages, because this
would seriously hinder the usability of a GNU system.  Please try GNU sed
3.95 to configure your favorite packages on your favorite architecture, and
report whatever goes wrong to the maintainer at bonzini@gnu.org

(libc-alpha CCed because the bigger test suite might interest the folks


FTP site for GNU sed 3.95

Web site for super-sed

Paolo Bonzini


GNU make 3.80

GNU Make version 3.80 is now available for download.

The `make' utility automates the process of compilation.  When the
source files of a large program change, Make automatically determines
which pieces need to be updated and recompiles only those files.

GNU make is fully compliant with the POSIX.2 standard, but also has many
powerful extensions: flexible implicit pattern rules, an extensive set
of text manipulation functions, conditional evaluation of makefiles,
support for parallel command execution, automatic updating of makefiles,
and much more.

In addition to UNIX systems, it can be built for DOS, Windows (using
various toolkits), VMS, and Amiga platforms.

Please see the README and INSTALL files for information on building GNU
make for your system.

This release contains several bug fixes plus some powerful new features,
including an $(eval ...) function, "order-only" prerequisites,
compatibility with the odd SysV make $$@ syntax, a new command-line
option -B or --always-make, ability to create recursive functions for
use with $(call ...), new variables MAKEFILE_LIST and .VARIABLES, and

See the NEWS file and the GNU Make User's Manual, contained in the
distribution, for full details on user-visible changes.

Bugs and problems should be reported to the  mailing
list, or entered into the online bug tracking system at Savannah
.  You can also find information
for accessing the latest versions of GNU make via CVS at the Savannah

Requests for help can be sent to , or one of the
gnu.utils.bug or gnu.utils.help USENET newsgroups.

The complete distribution is available from the GNU ftp site
ftp://ftp.gnu.org/gnu/make/ and its mirrors.  Please see:


for a complete list of international mirror sites.

  make-3.80.tar.bz/2 is  921645 bytes
  make-3.80.tar.gz/  is 1211924 bytes

MD5 checksums:

  0bbd1df101bc0294d440471e50feca71  make-3.80.tar.bz/2
  c68540da9302a48068d5cce1f0099477  make-3.80.tar.gz/

Have fun!

- -------------------------------------------------------------------------------
 Paul D. Smith           Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist


GNU C Library Release 2.3

Release 2.3 of the GNU C library is now available at


and (hopefully soon)


and all the mirror sites around the globe.

The new files are

   glibc-2.3.tar.bz/2    (also .gz)
   glibc-linuxthreads-2.3.tar.bz/2       (also .gz)
   glibc-2.2.5-2.3.diff.bz/2     (also .gz)

and for those following the test releases

   glibc-2.2.94-2.3.diff.bz/2    (also.gz)

This release introduces a number of new features but not too many.
glibc 2.2 was already mostly complete.  Instead this release focuses
on making functionality compliant with standards and on performance
optimizations.  The user visible changes include:

Version 2.3

* Masahide Washizawa contributed iconv modules for IBM1163 and IBM1164

* iconv (the program and the interface) now accepts empty names (excluding
  options like //TRANSLIT) to mean "use charset of current locale".

* localedef can now transliterate characters in strings which are not in
  the provided charmap.  The information from the input locale is used.

* Prelinking support was added for ELF targets.  This requires additional
  tools and recent versions of the GNU binutils.  Contributed by Jakub

* Read-only stdio streams now use mmap to speed up operation by 
  copying and buffer underflows.  To use add 'm' to the mode string of
  the fopen/fdopen/freopen call.  Implemented by Ulrich Drepper.

* The malloc functions were completely rewritten by Wolfram Gloger based
  on Doug Lea's malloc-2.7.0.c.

* Isamu Hasegawa contributed a completely new and POSIX-conformant
  implementation of regex.

* Bruno Haible upgraded the iconv and locale implementation to support
  Unicode 3.2.

* Contents of the LC_* and LANG environment variables in the CEN style are
  not recognized anymore.   It never was used.  Change by Ulrich Drepper.

* The runtime (ld.so, libc, libpthread for Linux) now can handle the ELF
  thread-local storage (TLS) ABI on some platforms.
  Changes by Ulrich Drepper.  SH support by Kaz Kojima.

* Bruno Haible contributed iconv converters for ISO-2022-JP-3, 

* New header  with functions `getifaddrs' and `freeifaddrs':
  BSD-compatible interface for getting all network interface addresses.
  Implementation for IPv4 by Roland McGrath.

* Loading of locale data is faster due to the introduction of a locale
  archive.  Implemented by Roland McGrath and Ulrich Drepper.

* Startup times are significantly reduced by not using exported functions
  inside the library itself.  Changes by Jakub Jelinek, Roland McGrath,
  and Ulrich Drepper.

* Steven Munroe contributed a port to PowerPC64/Linux.

This release of the library runs on the following targets:

   i[3456]86-*-gnu      GNU Hurd on Intel
   i[3456]86-*-linux-gnu   Linux-2.x on Intel
   alpha*-*-linux-gnu   Linux-2.x on DEC Alpha
   powerpc-*-linux-gnu     Linux and MkLinux on PowerPC systems
   powerpc64-*-linux-gnu   Linux-2.4.19+ on 64-bit PowerPC systems
   sparc-*-linux-gnu   Linux-2.x on SPARC
   sparc64-*-linux-gnu   Linux-2.x on UltraSPARC 64-bit
   ia64-*-linux-gnu   Linux-2.x on ia64
   s390-*-linux-gnu   Linux-2.x on IBM S/390
   s390x-*-linux-gnu   Linux-2.4+ on IBM S/390 64-bit
   sh-*-linux-gnu      Linux-2.x on Super Hitachi
   x86-64-*-linux-gnu   Linux-2.4+ on x86-64

The following targets should not be far away from being usable:

   *-*-gnu         GNU Hurd on platforms other than Intel
   arm-*-linux-gnu      Linux-2.x on ARM
   cris-*-linux-gnu   Linux-2.4+ on CRIS
   hppa*-*-linux-gnu   Linux-2.x on HP/PA
   m68k-*-linux-gnu   Linux-2.x on Motorola 680x0
   mips*-*-linux-gnu   Linux-2.x on MIPS

Previous releases worked on the following targets, the current status
is unknown:

   arm-*-none      ARM standalone systems
   arm-*-linuxaout      Linux-2.x on ARM using a.out (obsolete?!)

We believe that this release is very stable.  Upgrading is highly

BUT: updating the C library is no trivial task and it is very easy
to damage one's system.  Therefore, persons who do not exactly know
what to do, should consider using a binary distribution instead, when
it becomes available.  All major GNU/Linux distributors will hopefully
base their next release on glibc 2.3.  Don't tell us you haven't
been warned.  Another reason why not everybody should think about
compiling glibc is the disk and CPU requirements: on Intel platforms
the full build requires about 330MB plus the space you need to install
it.  This number is higher on most RISC platforms.  During the
compilation the compiler will need large amounts of virtual memory.
We are talking about 100MB on Intel and 200MB on Alpha.  If using the
`-j' option of make these numbers grow linearly.  Building the
complete library without profiling support on a 2xPIII@550MHz system
takes about 32 minutes, checking adds another 25 minutes.  On not
highly tuned and slower systems the times are very much higher and it
possibly takes several days on very old and slow systems.  The '-j'
option for make is very useful on SMP systems, the Makefiles are save
for builds with high '-j' numbers (except when the compilation happens
in the source directory; simply create a new directory and compile in
that one instead).

It is generally always a good idea to build in a separate directory
and simply configure using

  /path/to/glibc-2.3/configure ...options for configure...

Even though TLS support is mentioned as one new feature for this release
the default is not to build glibc with TLS support enabled.  This has
several reasons, most of which are out of control of the glibc
developers.  Therefore it is necessry to not use the --with-tls option
for configure.

In case you decide to compile glibc yourself you need to read the
files INSTALL and FAQ.  It will explain among other things which tools
are necessary.  The most important one is the compiler.  Starting with
this release the earliest accepted compiler is gcc 3.2.  The configure
script will complain about any earlier compiler.

In case of problems with building glibc it is advised to first try the
very latest sources from the stable gcc 3.2 branch.  The problems
might already have been fixed.

It is also important to get very recent binutils.  For Linux kernels this
normally means the releases by H.J. Lu which are available at


Version has been reported to work.  Before reporting a bug
please make sure you are using a recent version.

In case you are modifying the source files which will cause autoconf
to run make sure you have autoconf 2.13 installed and NOT version
2.50 and up.  These versions will not work.  Support for the new
autoconf will be enabled in upcoming releases.

To enable prelinking an additional package is needed.  The prelink
program is available at


The last version as of this writing is


It should support all the not-embedded architectures but the demands
on recent tools and kernels might be high.  Read the documentation
coming with the package.  Your distribution of choice might already
have a package available, check it first.

On GNU/Linux systems the configure script has a new option
`--enable-kernel' (find the documentation in the INSTALL file).  This
option allows one to strip out compatibility code for older kernel
versions.  This is of interest since configuring for a 2.4.x kernel
reduces the libc size by about 1%.  This is no high percentage but all
the code gone is in the by far most often used functions.  The
compatibility code is needed because of poor design decisions of the
kernel developers who constantly have to adjust the interface to new
requirements.  If you never expect to run kernel versions older than
the one used at compile time of the library it is a good idea to pass
`--enable-kernel=current' to configure.  But be careful since with an
older kernel the program won't even start and the whole system might
be rendered useless (unless backup kernels are available).

The 2.3.x release should be binary compatible with the 2.2 and earlier
releases.  All correct programs should continue to run.  This does
not mean that programs compiled on a system running glibc 2.3.x will
run on systems with only glibc 2.2.  Compatibility is always in one
direction.  Systems with glibc 2.2 will not even attempt to run
binaries generated with glibc 2.3.x if this is not possible so there
is not much to worry about.

The locale files are now kept in an archive which guarantees much
faster access.  Startup times of applications using setlocale() are
significantly improved.  The locale archive is handled by the
localedef program just like ordinary compilation of locales.  By

   make localedata/install-locales

it is possible to generate an archive with all locales.
take a while.  Using the -j option on SMP systems should help.  It is
most of the time not necessary to install all locales.  Just pick the
once which the users of the system will want to use.

There are normally no problems to be expected when compiling code with
the new glibc version.  In a few cases programs make wrong assumptions
and the build will suddenly fail (recent example: using CLK_TCK in
initializers for static or global variables which is wrong since is
CLK_TCK is not guaranteed to be a constant).  Make sure you review
the appropriate standards before you claim to have found a bug.

Problems should all be reported using the `glibcbug' shell script.
NEVER send mail to the maintainer or any other developer directly; we
prefer the script.  Mailing lists are there not only to distribute
the workload, they also help to archive questions and answers.  Use this
script, fill out the information and you are set.  If at the time you
start the script it complains like this

   /usr/bin/glibcbug: emacs: command not found

set one of the environment variables EDITOR and VISUAL (this should
ideally happen on every system automatically):

   env EDITOR=vi glibcbug

Do this also if you don't want to edit the bug report in Emacs (we
cannot imagine why not but...)

Before sending a bug report make sure you have read the BUGS and the
FAQ files which come with the glibc sources.  You won't get an
answer if it is obvious you haven't read these files.  It is also
helpful to scan the appropriate newsgroups and mailing lists to see
whether somebody else already had this problem.  There is another
thing we don't want to hear about: the size.  glibc is big, but this
is necessary for a multi-platform Unix library.

In case the bug database is once again offline send the reports to the
libc-alpha@sources.redhat.com mailing list.

Responsible for this release are among others:

   Ulrich Drepper
   Wolfram Gloger
   Bruno Haible
   Isamu Hasegawa
   Andreas Jaeger
   Jakub Jelinek
   Kaz Kojima
   H.J. Lu
   Roland McGrath
   Steven Munroe
   Andreas Schwab
   Franz Sirl

We want to thank all of them.  Thanks also to the few dedicated
testers we have:

   Kaoru Fukui
   Jack Howarth

The FSF GNU C Library Steering Committee


Bison 1.50

Bison 1.50 is now available for download.

GNU Bison is a general-purpose parser generator that converts a
grammar description for an LALR(1) context-free grammar into a C
program to parse that grammar.  Once you are proficient with Bison,
you may use it to develop a wide range of language parsers, from those
used in simple desk calculators to complex programming languages.

Bison is upward compatible with Yacc: all properly-written Yacc
grammars ought to work with Bison with no change.  Anyone familiar
with Yacc should be able to use Bison with little trouble.  You need
to be fluent in C programming in order to use Bison or to understand
this manual.

Because the changes within Bison were ambitious, and because some
people already need some of the new features to release their own
packages, we're making this release even though there is still work in
progress.  Nevertheless, there is no known problem with the LALR
parsers: you can safely replace your old Bison copy with this release.

The most significant changes between Bison 1.35 and 1.50 are:

1. Many limitations on parser size have been removed.

2. A GLR parser output is available, which makes it possible to parse
   any context free grammar, included ambiguous grammars.  This typically
   allows one to parse ``naturally'' contrived grammars such as C++'s.
   This is contributed by Paul Hilfinger.

3. The machinery has been revamped to ease the creation of new kinds of

This release is the result of the efforts from Robert Anisko, Akim
Demaille, Paul Eggert, Paul Hilfinger, and many others.  Special
thanks to Hans Aberg for his support.

Work in progress includes:

1. a C++ LALR parser
2. a Java LALR parser
3. means to free semantic values during error recovery
4. YYPRINT replacement

and many other things.

You may find GNU Bison at the following location:

  ftp://ftp.gnu.org/gnu/bison/bison-1.50.tar.bz2  (769,569 bytes)
  ftp://ftp.gnu.org/gnu/bison/bison-1.50.tar.gz   (964,656 bytes)

Soon it will also appear on the GNU mirrors listed here:


Here are the MD5 and SHA1 signatures for the compressed tar files:

deddd6f2277cdd8ca43bdf4125d67a87  bison-1.50.tar.bz/2
698f7ccc47519a163c467695a726cc95  bison-1.50.tar.gz/
df56fbe683a4901deb249a69a07bf477a01892d0  bison-1.50.tar.bz/2
cce21237f220906c5af2a71b81db33308d37dcbe  bison-1.50.tar.gz/

Please report bugs by email to .

Here are the NEWS file entries for this release:

* GLR parsing
  The declaration
  causes Bison to produce a Generalized LR (GLR) parser, capable of handling
  almost any context-free grammar, ambiguous or not.  The new declarations
  %dprec and %merge on grammar rules allow parse-time resolution of
  ambiguities.  Contributed by Paul Hilfinger.

  Unfortunately GLR parsing does not yet work properly on 64-bit hosts
  like the Alpha, so please stick to 32-bit hosts for now.

* Output Directory
  When not in Yacc compatibility mode, when the output file was not
  specified, running `bison foo/bar.y' created `foo/bar.c'.  It
  now creates `bar.c'.

* Undefined token
  The undefined token was systematically mapped to 2 which prevented
  the use of 2 by the user.  This is no longer the case.

* Unknown token numbers
  If yylex returned an out of range value, yyparse could die.  This is
  no longer the case.

* Error token
  According to POSIX, the error token must be 256.
  Bison extends this requirement by making it a preference: if the
  user specified that one of her tokens is numbered 256, then error
  will be mapped onto another number.

* Verbose error messages
  They no longer report `..., expecting error or...' for states where
  error recovery is possible.

* End token
  Defaults to `$end' instead of `$'.

* Error recovery now conforms to documentation and to POSIX
  When a Bison-generated parser encounters a syntax error, it now pops
  the stack until it finds a state that allows shifting the error
  token.  Formerly, it popped the stack until it found a state that
  allowed some non-error action other than a default reduction on the
  error token.  The new behavior has long been the documented behavior,
  and has long been required by POSIX.  For more details, please see

* Traces
  Popped tokens and nonterminals are now reported.

* Larger grammars
  Larger grammars are now supported (larger token numbers, larger grammar
  size (= sum of the LHS and RHS lengths), larger LALR tables).
  Formerly, many of these numbers ran afoul of 16-bit limits;
  now these limits are 32 bits on most hosts.

* Explicit initial rule
  Bison used to play hacks with the initial rule, which the user does
  not write.  It is now explicit, and visible in the reports and
  graphs as rule 0.

* Useless rules
  Before, Bison reported the useless rules, but, although not used,
  included them in the parsers.  They are now actually removed.

* Useless rules, useless nonterminals
  They are now reported, as a warning, with their locations.

* Rules never reduced
  Rules that can never be reduced because of conflicts are now

* Incorrect `Token not used'
  On a grammar such as

           %token useless useful
           exp: '0' %prec useful;

  where a token was used to set the precedence of the last rule,
  bison reported both `useful' and `useless' as useless tokens.

* Revert the C++ namespace changes introduced in 1.31
  as they caused too many portability hassles.

* Default locations
  By an accident of design, the default computation of @$ was
  performed after another default computation was performed: @$ = @1.
  The latter is now removed: YYLLOC_DEFAULT is fully responsible of
  the computation of @$.

* Token end-of-file
  The token end of file may be specified by the user, in which case,
  the user symbol is used in the reports, the graphs, and the verbose
  error messages instead of `$end', which remains being the default.
  For instance
     %token YYEOF 0
     %token YYEOF 0 "end of file"

* Semantic parser
  This old option, which has been broken for ages, is removed.

* New translations
  Brazilian Portuguese, thanks to Alexandre Folle de Menezes.
  Croatian, thanks to Denis Lackovic.

* Incorrect token definitions
  When given `%token 'a' "A"', Bison used to output `#define 'a' 65'.

* Token definitions as enums
  Tokens are output both as the traditional #define's, and, provided
  the compiler supports ANSI C or is a C++ compiler, as enums.
  This lets debuggers display names instead of integers.

* Reports
  In addition to --verbose, bison supports --report=THINGS, which
  produces additional information:
  - itemset
    complete the core item sets with their closure
  - lookahead
    explicitly associate lookaheads to items
  - solved
    describe shift/reduce conflicts solving.
    Bison used to systematically output this information on top of
    the report.  Solved conflicts are now attached to their states.

* Type clashes
  Previous versions don't complain when there is a type clash on
  the default action if the rule has a mid-rule action, such as in:

      %type  bar
      bar: '0' {} '0';

  This is fixed.

* GNU M4 is now required when using Bison.