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