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