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