xref: /dflybsd-src/contrib/nvi2/regex/WHATSNEW (revision 48a77267bbaa6d5859acb2b336dbf1da36437dc6)
1*e0b8e63eSJohn Marino# @(#)WHATSNEW	8.3 (Berkeley) 3/18/94
2*e0b8e63eSJohn Marino
3*e0b8e63eSJohn MarinoNew in alpha3.4:  The complex bug alluded to below has been fixed (in a
4*e0b8e63eSJohn Marinoslightly kludgey temporary way that may hurt efficiency a bit; this is
5*e0b8e63eSJohn Marinoanother "get it out the door for 4.4" release).  The tests at the end of
6*e0b8e63eSJohn Marinothe tests file have accordingly been uncommented.  The primary sign of
7*e0b8e63eSJohn Marinothe bug was that something like a?b matching ab matched b rather than ab.
8*e0b8e63eSJohn Marino(The bug was essentially specific to this exact situation, else it would
9*e0b8e63eSJohn Marinohave shown up earlier.)
10*e0b8e63eSJohn Marino
11*e0b8e63eSJohn MarinoNew in alpha3.3:  The definition of word boundaries has been altered
12*e0b8e63eSJohn Marinoslightly, to more closely match the usual programming notion that "_"
13*e0b8e63eSJohn Marinois an alphabetic.  Stuff used for pre-ANSI systems is now in a subdir,
14*e0b8e63eSJohn Marinoand the makefile no longer alludes to it in mysterious ways.  The
15*e0b8e63eSJohn Marinomakefile has generally been cleaned up some.  Fixes have been made
16*e0b8e63eSJohn Marino(again!) so that the regression test will run without -DREDEBUG, at
17*e0b8e63eSJohn Marinothe cost of weaker checking.  A workaround for a bug in some folks'
18*e0b8e63eSJohn Marino<assert.h> has been added.  And some more things have been added to
19*e0b8e63eSJohn Marinotests, including a couple right at the end which are commented out
20*e0b8e63eSJohn Marinobecause the code currently flunks them (complex bug; fix coming).
21*e0b8e63eSJohn MarinoPlus the usual minor cleanup.
22*e0b8e63eSJohn Marino
23*e0b8e63eSJohn MarinoNew in alpha3.2:  Assorted bits of cleanup and portability improvement
24*e0b8e63eSJohn Marino(the development base is now a BSDI system using GCC instead of an ancient
25*e0b8e63eSJohn MarinoSun system, and the newer compiler exposed some glitches).  Fix for a
26*e0b8e63eSJohn Marinoserious bug that affected REs using many [] (including REG_ICASE REs
27*e0b8e63eSJohn Marinobecause of the way they are implemented), *sometimes*, depending on
28*e0b8e63eSJohn Marinomemory-allocation patterns.  The header-file prototypes no longer name
29*e0b8e63eSJohn Marinothe parameters, avoiding possible name conflicts.  The possibility that
30*e0b8e63eSJohn Marinosome clot has defined CHAR_MIN as (say) `-128' instead of `(-128)' is
31*e0b8e63eSJohn Marinonow handled gracefully.  "uchar" is no longer used as an internal type
32*e0b8e63eSJohn Marinoname (too many people have the same idea).  Still the same old lousy
33*e0b8e63eSJohn Marinoperformance, alas.
34*e0b8e63eSJohn Marino
35*e0b8e63eSJohn MarinoNew in alpha3.1:  Basically nothing, this release is just a bookkeeping
36*e0b8e63eSJohn Marinoconvenience.  Stay tuned.
37*e0b8e63eSJohn Marino
38*e0b8e63eSJohn MarinoNew in alpha3.0:  Performance is no better, alas, but some fixes have been
39*e0b8e63eSJohn Marinomade and some functionality has been added.  (This is basically the "get
40*e0b8e63eSJohn Marinoit out the door in time for 4.4" release.)  One bug fix:  regfree() didn't
41*e0b8e63eSJohn Marinofree the main internal structure (how embarrassing).  It is now possible
42*e0b8e63eSJohn Marinoto put NULs in either the RE or the target string, using (resp.) a new
43*e0b8e63eSJohn MarinoREG_PEND flag and the old REG_STARTEND flag.  The REG_NOSPEC flag to
44*e0b8e63eSJohn Marinoregcomp() makes all characters ordinary, so you can match a literal
45*e0b8e63eSJohn Marinostring easily (this will become more useful when performance improves!).
46*e0b8e63eSJohn MarinoThere are now primitives to match beginnings and ends of words, although
47*e0b8e63eSJohn Marinothe syntax is disgusting and so is the implementation.  The REG_ATOI
48*e0b8e63eSJohn Marinodebugging interface has changed a bit.  And there has been considerable
49*e0b8e63eSJohn Marinointernal cleanup of various kinds.
50*e0b8e63eSJohn Marino
51*e0b8e63eSJohn MarinoNew in alpha2.3:  Split change list out of README, and moved flags notes
52*e0b8e63eSJohn Marinointo Makefile.  Macro-ized the name of regex(7) in regex(3), since it has
53*e0b8e63eSJohn Marinoto change for 4.4BSD.  Cleanup work in engine.c, and some new regression
54*e0b8e63eSJohn Marinotests to catch tricky cases thereof.
55*e0b8e63eSJohn Marino
56*e0b8e63eSJohn MarinoNew in alpha2.2:  Out-of-date manpages updated.  Regerror() acquires two
57*e0b8e63eSJohn Marinosmall extensions -- REG_ITOA and REG_ATOI -- which avoid debugging kludges
58*e0b8e63eSJohn Marinoin my own test program and might be useful to others for similar purposes.
59*e0b8e63eSJohn MarinoThe regression test will now compile (and run) without REDEBUG.  The
60*e0b8e63eSJohn MarinoBRE \$ bug is fixed.  Most uses of "uchar" are gone; it's all chars now.
61*e0b8e63eSJohn MarinoChar/uchar parameters are now written int/unsigned, to avoid possible
62*e0b8e63eSJohn Marinoportability problems with unpromoted parameters.  Some unsigned casts have
63*e0b8e63eSJohn Marinobeen introduced to minimize portability problems with shifting into sign
64*e0b8e63eSJohn Marinobits.
65*e0b8e63eSJohn Marino
66*e0b8e63eSJohn MarinoNew in alpha2.1:  Lots of little stuff, cleanup and fixes.  The one big
67*e0b8e63eSJohn Marinothing is that regex.h is now generated, using mkh, rather than being
68*e0b8e63eSJohn Marinosupplied in the distribution; due to circularities in dependencies,
69*e0b8e63eSJohn Marinoyou have to build regex.h explicitly by "make h".  The two known bugs
70*e0b8e63eSJohn Marinohave been fixed (and the regression test now checks for them), as has a
71*e0b8e63eSJohn Marinoproblem with assertions not being suppressed in the absence of REDEBUG.
72*e0b8e63eSJohn MarinoNo performance work yet.
73*e0b8e63eSJohn Marino
74*e0b8e63eSJohn MarinoNew in alpha2:  Backslash-anything is an ordinary character, not an
75*e0b8e63eSJohn Marinoerror (except, of course, for the handful of backslashed metacharacters
76*e0b8e63eSJohn Marinoin BREs), which should reduce script breakage.  The regression test
77*e0b8e63eSJohn Marinochecks *where* null strings are supposed to match, and has generally
78*e0b8e63eSJohn Marinobeen tightened up somewhat.  Small bug fixes in parameter passing (not
79*e0b8e63eSJohn Marinoharmful, but technically errors) and some other areas.  Debugging
80*e0b8e63eSJohn Marinoinvoked by defining REDEBUG rather than not defining NDEBUG.
81*e0b8e63eSJohn Marino
82*e0b8e63eSJohn MarinoNew in alpha+3:  full prototyping for internal routines, using a little
83*e0b8e63eSJohn Marinohelper program, mkh, which extracts prototypes given in stylized comments.
84*e0b8e63eSJohn MarinoMore minor cleanup.  Buglet fix:  it's CHAR_BIT, not CHAR_BITS.  Simple
85*e0b8e63eSJohn Marinopre-screening of input when a literal string is known to be part of the
86*e0b8e63eSJohn MarinoRE; this does wonders for performance.
87*e0b8e63eSJohn Marino
88*e0b8e63eSJohn MarinoNew in alpha+2:  minor bits of cleanup.  Notably, the number "32" for the
89*e0b8e63eSJohn Marinoword width isn't hardwired into regexec.c any more, the public header
90*e0b8e63eSJohn Marinofile prototypes the functions if __STDC__ is defined, and some small typos
91*e0b8e63eSJohn Marinoin the manpages have been fixed.
92*e0b8e63eSJohn Marino
93*e0b8e63eSJohn MarinoNew in alpha+1:  improvements to the manual pages, and an important
94*e0b8e63eSJohn Marinoextension, the REG_STARTEND option to regexec().
95