/[pcre]/code/tags/pcre-3.7/ChangeLog
ViewVC logotype

Diff of /code/tags/pcre-3.7/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 7 by nigel, Sat Feb 24 21:38:09 2007 UTC revision 25 by nigel, Sat Feb 24 21:38:45 2007 UTC
# Line 2  ChangeLog for PCRE Line 2  ChangeLog for PCRE
2  ------------------  ------------------
3    
4    
5    Version 2.01 21-Oct-98
6    ----------------------
7    
8    1. Changed the API for pcre_compile() to allow for the provision of a pointer
9    to character tables built by pcre_maketables() in the current locale. If NULL
10    is passed, the default tables are used.
11    
12    
13    Version 2.00 24-Sep-98
14    ----------------------
15    
16    1. Since the (>?) facility is in Perl 5.005, don't require PCRE_EXTRA to enable
17    it any more.
18    
19    2. Allow quantification of (?>) groups, and make it work correctly.
20    
21    3. The first character computation wasn't working for (?>) groups.
22    
23    4. Correct the implementation of \Z (it is permitted to match on the \n at the
24    end of the subject) and add 5.005's \z, which really does match only at the
25    very end of the subject.
26    
27    5. Remove the \X "cut" facility; Perl doesn't have it, and (?> is neater.
28    
29    6. Remove the ability to specify CASELESS, MULTILINE, DOTALL, and
30    DOLLAR_END_ONLY at runtime, to make it possible to implement the Perl 5.005
31    localized options. All options to pcre_study() were also removed.
32    
33    7. Add other new features from 5.005:
34    
35       $(?<=           positive lookbehind
36       $(?<!           negative lookbehind
37       (?imsx-imsx)    added the unsetting capability
38                       such a setting is global if at outer level; local otherwise
39       (?imsx-imsx:)   non-capturing groups with option setting
40       (?(cond)re|re)  conditional pattern matching
41    
42       A backreference to itself in a repeated group matches the previous
43       captured string.
44    
45    8. General tidying up of studying (both automatic and via "study")
46    consequential on the addition of new assertions.
47    
48    9. As in 5.005, unlimited repeated groups that could match an empty substring
49    are no longer faulted at compile time. Instead, the loop is forcibly broken at
50    runtime if any iteration does actually match an empty substring.
51    
52    10. Include the RunTest script in the distribution.
53    
54    11. Added tests from the Perl 5.005_02 distribution. This showed up a few
55    discrepancies, some of which were old and were also with respect to 5.004. They
56    have now been fixed.
57    
58    
59    Version 1.09 28-Apr-98
60    ----------------------
61    
62    1. A negated single character class followed by a quantifier with a minimum
63    value of one (e.g.  [^x]{1,6}  ) was not compiled correctly. This could lead to
64    program crashes, or just wrong answers. This did not apply to negated classes
65    containing more than one character, or to minima other than one.
66    
67    
68    Version 1.08 27-Mar-98
69    ----------------------
70    
71    1. Add PCRE_UNGREEDY to invert the greediness of quantifiers.
72    
73    2. Add (?U) and (?X) to set PCRE_UNGREEDY and PCRE_EXTRA respectively. The
74    latter must appear before anything that relies on it in the pattern.
75    
76    
77    Version 1.07 16-Feb-98
78    ----------------------
79    
80    1. A pattern such as /((a)*)*/ was not being diagnosed as in error (unlimited
81    repeat of a potentially empty string).
82    
83    
84    Version 1.06 23-Jan-98
85    ----------------------
86    
87    1. Added Markus Oberhumer's little patches for C++.
88    
89    2. Literal strings longer than 255 characters were broken.
90    
91    
92    Version 1.05 23-Dec-97
93    ----------------------
94    
95    1. Negated character classes containing more than one character were failing if
96    PCRE_CASELESS was set at run time.
97    
98    
99    Version 1.04 19-Dec-97
100    ----------------------
101    
102    1. Corrected the man page, where some "const" qualifiers had been omitted.
103    
104    2. Made debugging output print "{0,xxx}" instead of just "{,xxx}" to agree with
105    input syntax.
106    
107    3. Fixed memory leak which occurred when a regex with back references was
108    matched with an offsets vector that wasn't big enough. The temporary memory
109    that is used in this case wasn't being freed if the match failed.
110    
111    4. Tidied pcretest to ensure it frees memory that it gets.
112    
113    5. Temporary memory was being obtained in the case where the passed offsets
114    vector was exactly big enough.
115    
116    6. Corrected definition of offsetof() from change 5 below.
117    
118    7. I had screwed up change 6 below and broken the rules for the use of
119    setjmp(). Now fixed.
120    
121    
122    Version 1.03 18-Dec-97
123    ----------------------
124    
125    1. A erroneous regex with a missing opening parenthesis was correctly
126    diagnosed, but PCRE attempted to access brastack[-1], which could cause crashes
127    on some systems.
128    
129    2. Replaced offsetof(real_pcre, code) by offsetof(real_pcre, code[0]) because
130    it was reported that one broken compiler failed on the former because "code" is
131    also an independent variable.
132    
133    3. The erroneous regex a[]b caused an array overrun reference.
134    
135    4. A regex ending with a one-character negative class (e.g. /[^k]$/) did not
136    fail on data ending with that character. (It was going on too far, and checking
137    the next character, typically a binary zero.) This was specific to the
138    optimized code for single-character negative classes.
139    
140    5. Added a contributed patch from the TIN world which does the following:
141    
142      + Add an undef for memmove, in case the the system defines a macro for it.
143    
144      + Add a definition of offsetof(), in case there isn't one. (I don't know
145        the reason behind this - offsetof() is part of the ANSI standard - but
146        it does no harm).
147    
148      + Reduce the ifdef's in pcre.c using macro DPRINTF, thereby eliminating
149        most of the places where whitespace preceded '#'. I have given up and
150        allowed the remaining 2 cases to be at the margin.
151    
152      + Rename some variables in pcre to eliminate shadowing. This seems very
153        pedantic, but does no harm, of course.
154    
155    6. Moved the call to setjmp() into its own function, to get rid of warnings
156    from gcc -Wall, and avoided calling it at all unless PCRE_EXTRA is used.
157    
158    7. Constructs such as \d{8,} were compiling into the equivalent of
159    \d{8}\d{0,65527} instead of \d{8}\d* which didn't make much difference to the
160    outcome, but in this particular case used more store than had been allocated,
161    which caused the bug to be discovered because it threw up an internal error.
162    
163    8. The debugging code in both pcre and pcretest for outputting the compiled
164    form of a regex was going wrong in the case of back references followed by
165    curly-bracketed repeats.
166    
167    
168  Version 1.02 12-Dec-97  Version 1.02 12-Dec-97
169  ----------------------  ----------------------
170    

Legend:
Removed from v.7  
changed lines
  Added in v.25

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12