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
however).
* 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
behavior.
* 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.
s/1234/1/)
* 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
anymore.
* 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
set.
* 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
there)
URLs:
-----
ftp://alpha.gnu.org/gnu/sed/sed-3.95.tar.gz
FTP site for GNU sed 3.95
http://sed.sf.net/grabbag/ssed
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
more.
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
site.
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:
http://www.gnu.org/order/ftp.html
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
ftp://sources.redhat.com/pub/glibc/releases
and (hopefully soon)
ftp://ftp.gnu.org/pub/gnu/glibc
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
charsets.
* 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
Jelinek.
* Read-only stdio streams now use mmap to speed up operation by
eliminating
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,
SHIFTJIS-X0213, EUC-JISX0213, and TISCII.
* 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
encouraged.
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
ftp://ftp.kernel.org/pub/linux/devel/binutils
Version 2.13.90.0.4 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
ftp://people.redhat.com/jakub/prelink/
The last version as of this writing is
prelink-20021002.tar.bz/2
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
running
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
-----
cheers,
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
parsers.
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:
http://www.gnu.org/order/ftp.html
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
%glr-parser
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
reported.
* 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
or
%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.