11573Srgrimes# @(#)WHATSNEW	8.3 (Berkeley) 3/18/94
21573Srgrimes
31573SrgrimesNew in alpha3.4:  The complex bug alluded to below has been fixed (in a
41573Srgrimesslightly kludgey temporary way that may hurt efficiency a bit; this is
51573Srgrimesanother "get it out the door for 4.4" release).  The tests at the end of
61573Srgrimesthe tests file have accordingly been uncommented.  The primary sign of
71573Srgrimesthe bug was that something like a?b matching ab matched b rather than ab.
81573Srgrimes(The bug was essentially specific to this exact situation, else it would
91573Srgrimeshave shown up earlier.)
101573Srgrimes
111573SrgrimesNew in alpha3.3:  The definition of word boundaries has been altered
121573Srgrimesslightly, to more closely match the usual programming notion that "_"
131573Srgrimesis an alphabetic.  Stuff used for pre-ANSI systems is now in a subdir,
141573Srgrimesand the makefile no longer alludes to it in mysterious ways.  The
151573Srgrimesmakefile has generally been cleaned up some.  Fixes have been made
161573Srgrimes(again!) so that the regression test will run without -DREDEBUG, at
171573Srgrimesthe cost of weaker checking.  A workaround for a bug in some folks'
181573Srgrimes<assert.h> has been added.  And some more things have been added to
191573Srgrimestests, including a couple right at the end which are commented out
201573Srgrimesbecause the code currently flunks them (complex bug; fix coming).
211573SrgrimesPlus the usual minor cleanup.
221573Srgrimes
231573SrgrimesNew in alpha3.2:  Assorted bits of cleanup and portability improvement
241573Srgrimes(the development base is now a BSDI system using GCC instead of an ancient
251573SrgrimesSun system, and the newer compiler exposed some glitches).  Fix for a
261573Srgrimesserious bug that affected REs using many [] (including REG_ICASE REs
271573Srgrimesbecause of the way they are implemented), *sometimes*, depending on
281573Srgrimesmemory-allocation patterns.  The header-file prototypes no longer name
291573Srgrimesthe parameters, avoiding possible name conflicts.  The possibility that
301573Srgrimessome clot has defined CHAR_MIN as (say) `-128' instead of `(-128)' is
311573Srgrimesnow handled gracefully.  "uchar" is no longer used as an internal type
321573Srgrimesname (too many people have the same idea).  Still the same old lousy
331573Srgrimesperformance, alas.
341573Srgrimes
351573SrgrimesNew in alpha3.1:  Basically nothing, this release is just a bookkeeping
361573Srgrimesconvenience.  Stay tuned.
371573Srgrimes
381573SrgrimesNew in alpha3.0:  Performance is no better, alas, but some fixes have been
391573Srgrimesmade and some functionality has been added.  (This is basically the "get
401573Srgrimesit out the door in time for 4.4" release.)  One bug fix:  regfree() didn't
411573Srgrimesfree the main internal structure (how embarrassing).  It is now possible
421573Srgrimesto put NULs in either the RE or the target string, using (resp.) a new
431573SrgrimesREG_PEND flag and the old REG_STARTEND flag.  The REG_NOSPEC flag to
441573Srgrimesregcomp() makes all characters ordinary, so you can match a literal
451573Srgrimesstring easily (this will become more useful when performance improves!).
461573SrgrimesThere are now primitives to match beginnings and ends of words, although
471573Srgrimesthe syntax is disgusting and so is the implementation.  The REG_ATOI
481573Srgrimesdebugging interface has changed a bit.  And there has been considerable
491573Srgrimesinternal cleanup of various kinds.
501573Srgrimes
511573SrgrimesNew in alpha2.3:  Split change list out of README, and moved flags notes
521573Srgrimesinto Makefile.  Macro-ized the name of regex(7) in regex(3), since it has
531573Srgrimesto change for 4.4BSD.  Cleanup work in engine.c, and some new regression
541573Srgrimestests to catch tricky cases thereof.
551573Srgrimes
561573SrgrimesNew in alpha2.2:  Out-of-date manpages updated.  Regerror() acquires two
571573Srgrimessmall extensions -- REG_ITOA and REG_ATOI -- which avoid debugging kludges
581573Srgrimesin my own test program and might be useful to others for similar purposes.
591573SrgrimesThe regression test will now compile (and run) without REDEBUG.  The
601573SrgrimesBRE \$ bug is fixed.  Most uses of "uchar" are gone; it's all chars now.
611573SrgrimesChar/uchar parameters are now written int/unsigned, to avoid possible
621573Srgrimesportability problems with unpromoted parameters.  Some unsigned casts have
631573Srgrimesbeen introduced to minimize portability problems with shifting into sign
641573Srgrimesbits.
651573Srgrimes
661573SrgrimesNew in alpha2.1:  Lots of little stuff, cleanup and fixes.  The one big
671573Srgrimesthing is that regex.h is now generated, using mkh, rather than being
681573Srgrimessupplied in the distribution; due to circularities in dependencies,
691573Srgrimesyou have to build regex.h explicitly by "make h".  The two known bugs
701573Srgrimeshave been fixed (and the regression test now checks for them), as has a
711573Srgrimesproblem with assertions not being suppressed in the absence of REDEBUG.
721573SrgrimesNo performance work yet.
731573Srgrimes
741573SrgrimesNew in alpha2:  Backslash-anything is an ordinary character, not an
751573Srgrimeserror (except, of course, for the handful of backslashed metacharacters
761573Srgrimesin BREs), which should reduce script breakage.  The regression test
771573Srgrimeschecks *where* null strings are supposed to match, and has generally
781573Srgrimesbeen tightened up somewhat.  Small bug fixes in parameter passing (not
791573Srgrimesharmful, but technically errors) and some other areas.  Debugging
801573Srgrimesinvoked by defining REDEBUG rather than not defining NDEBUG.
811573Srgrimes
821573SrgrimesNew in alpha+3:  full prototyping for internal routines, using a little
831573Srgrimeshelper program, mkh, which extracts prototypes given in stylized comments.
841573SrgrimesMore minor cleanup.  Buglet fix:  it's CHAR_BIT, not CHAR_BITS.  Simple
851573Srgrimespre-screening of input when a literal string is known to be part of the
861573SrgrimesRE; this does wonders for performance.
871573Srgrimes
881573SrgrimesNew in alpha+2:  minor bits of cleanup.  Notably, the number "32" for the
891573Srgrimesword width isn't hardwired into regexec.c any more, the public header
901573Srgrimesfile prototypes the functions if __STDC__ is defined, and some small typos
911573Srgrimesin the manpages have been fixed.
921573Srgrimes
931573SrgrimesNew in alpha+1:  improvements to the manual pages, and an important
941573Srgrimesextension, the REG_STARTEND option to regexec().
95