This directory contains an experimental release of GNU sed and GNU rx.

See the file INSTALL for compilation and installation instructions.

* The reason for this release

Older versions of GNU sed have used GNU regex, a featurful but slow
text pattern matcher.  GNU rx is a reimplementation of the features in
GNU regex.  Rx is much faster than its predecessor for many
interesting patterns.  In no case should it be slower.

Rx has been extensively tested, but this is its first public release.
I (the GNU sed maintainer) am making this release in hopes of catching
any remaining bugs before Rx becomes a part of GNU Emacs.

See the file ABOUT.RX for more information...about Rx.

* The status of GNU sed.

It has long been noted that GNU sed is much slower than other
implementations.  Profiling of reported performance problems revealed
that the GNU regex was the first order bottle-neck.

Now that that has been fixed, GNU sed is still somewhat slower than
other implementations.  Replacing GNU regex with Rx revealed a
second-order bottle-neck in the i/o habits of GNU sed (it reads input
files using `getc').

So, there will follow a new version of GNU sed with even more
performance improvements.


ABOUT BUGS

Before reporting a bug, please check the list of oft-reported non-bugs
(below).

Bugs and comments may be sent to bug-gnu-utils@prep.ai.mit.edu.

NONBUGS

* `sed -n' and `s/regex/replace/p'

Some versions of sed ignore the `p' (print) option of an `s' command
unless the `-n' command switch has been specified.  Other versions
always honor the `p' option.  GNU sed is the latter sort.

* regexp syntax clashes

GNU sed uses the Posix basic regular expression syntax.  According to
the standard, the meaning of some escape sequences is undefined in
this syntax;  notably  `\|' and `\+'.

As in all GNU programs that use Posix basic regular expressions, sed
interprets these escape sequences as meta-characters.  So, `x\+'
matches one or more occurences of `x'.   `abc\|def' matches either
`abc' or `def'.

This syntax may cause problems when running scripts written for other
seds.  Some sed programs have been written with the assumption that
`\|' and `\+' match the literal characters `|' and `+'.  Such scripts
must be modified by removing the spurious backslashes if they are to
be used with GNU sed.

[If you have need of a free sed that understands the regexp
 syntax of your choice, the source to GNU sed may be a good place to
 start.  Consider changing the call to re_set_syntax in function main
 in `sed.c'.  The file regex.h contains an explanation of the
 supported syntax options.]

