/[pcre]/code/trunk/ChangeLog
ViewVC logotype

Diff of /code/trunk/ChangeLog

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

revision 3 by nigel, Sat Feb 24 21:38:01 2007 UTC revision 35 by nigel, Sat Feb 24 21:39:05 2007 UTC
# Line 1  Line 1 
1  ChangeLog for PCRE  ChangeLog for PCRE
2  ------------------  ------------------
3    
4    
5    Version 2.06 09-Jun-99
6    ----------------------
7    
8    1. Change pcretest's output for amount of store used to show just the code
9    space, because the remainder (the data block) varies in size between 32-bit and
10    64-bit systems.
11    
12    2. Added an extra argument to pcre_exec() to supply an offset in the subject to
13    start matching at. This allows lookbehinds to work when searching for multiple
14    occurrences in a string.
15    
16    3. Added additional options to pcretest for testing multiple occurrences:
17    
18       /+   outputs the rest of the string that follows a match
19       /g   loops for multiple occurrences, using the new startoffset argument
20       /G   loops for multiple occurrences by passing an incremented pointer
21    
22    4. PCRE wasn't doing the "first character" optimization for patterns starting
23    with \b or \B, though it was doing it for other lookbehind assertions. That is,
24    it wasn't noticing that a match for a pattern such as /\bxyz/ has to start with
25    the letter 'x'. On long subject strings, this gives a significant speed-up.
26    
27    
28    Version 2.05 21-Apr-99
29    ----------------------
30    
31    1. Changed the type of magic_number from int to long int so that it works
32    properly on 16-bit systems.
33    
34    2. Fixed a bug which caused patterns starting with .* not to work correctly
35    when the subject string contained newline characters. PCRE was assuming
36    anchoring for such patterns in all cases, which is not correct because .* will
37    not pass a newline unless PCRE_DOTALL is set. It now assumes anchoring only if
38    DOTALL is set at top level; otherwise it knows that patterns starting with .*
39    must be retried after every newline in the subject.
40    
41    
42    Version 2.04 18-Feb-99
43    ----------------------
44    
45    1. For parenthesized subpatterns with repeats whose minimum was zero, the
46    computation of the store needed to hold the pattern was incorrect (too large).
47    If such patterns were nested a few deep, this could multiply and become a real
48    problem.
49    
50    2. Added /M option to pcretest to show the memory requirement of a specific
51    pattern. Made -m a synonym of -s (which does this globally) for compatibility.
52    
53    3. Subpatterns of the form (regex){n,m} (i.e. limited maximum) were being
54    compiled in such a way that the backtracking after subsequent failure was
55    pessimal. Something like (a){0,3} was compiled as (a)?(a)?(a)? instead of
56    ((a)((a)(a)?)?)? with disastrous performance if the maximum was of any size.
57    
58    
59    Version 2.03 02-Feb-99
60    ----------------------
61    
62    1. Fixed typo and small mistake in man page.
63    
64    2. Added 4th condition (GPL supersedes if conflict) and created separate
65    LICENCE file containing the conditions.
66    
67    3. Updated pcretest so that patterns such as /abc\/def/ work like they do in
68    Perl, that is the internal \ allows the delimiter to be included in the
69    pattern. Locked out the use of \ as a delimiter. If \ immediately follows
70    the final delimiter, add \ to the end of the pattern (to test the error).
71    
72    4. Added the convenience functions for extracting substrings after a successful
73    match. Updated pcretest to make it able to test these functions.
74    
75    
76    Version 2.02 14-Jan-99
77    ----------------------
78    
79    1. Initialized the working variables associated with each extraction so that
80    their saving and restoring doesn't refer to uninitialized store.
81    
82    2. Put dummy code into study.c in order to trick the optimizer of the IBM C
83    compiler for OS/2 into generating correct code. Apparently IBM isn't going to
84    fix the problem.
85    
86    3. Pcretest: the timing code wasn't using LOOPREPEAT for timing execution
87    calls, and wasn't printing the correct value for compiling calls. Increased the
88    default value of LOOPREPEAT, and the number of significant figures in the
89    times.
90    
91    4. Changed "/bin/rm" in the Makefile to "-rm" so it works on Windows NT.
92    
93    5. Renamed "deftables" as "dftables" to get it down to 8 characters, to avoid
94    a building problem on Windows NT with a FAT file system.
95    
96    
97    Version 2.01 21-Oct-98
98    ----------------------
99    
100    1. Changed the API for pcre_compile() to allow for the provision of a pointer
101    to character tables built by pcre_maketables() in the current locale. If NULL
102    is passed, the default tables are used.
103    
104    
105    Version 2.00 24-Sep-98
106    ----------------------
107    
108    1. Since the (>?) facility is in Perl 5.005, don't require PCRE_EXTRA to enable
109    it any more.
110    
111    2. Allow quantification of (?>) groups, and make it work correctly.
112    
113    3. The first character computation wasn't working for (?>) groups.
114    
115    4. Correct the implementation of \Z (it is permitted to match on the \n at the
116    end of the subject) and add 5.005's \z, which really does match only at the
117    very end of the subject.
118    
119    5. Remove the \X "cut" facility; Perl doesn't have it, and (?> is neater.
120    
121    6. Remove the ability to specify CASELESS, MULTILINE, DOTALL, and
122    DOLLAR_END_ONLY at runtime, to make it possible to implement the Perl 5.005
123    localized options. All options to pcre_study() were also removed.
124    
125    7. Add other new features from 5.005:
126    
127       $(?<=           positive lookbehind
128       $(?<!           negative lookbehind
129       (?imsx-imsx)    added the unsetting capability
130                       such a setting is global if at outer level; local otherwise
131       (?imsx-imsx:)   non-capturing groups with option setting
132       (?(cond)re|re)  conditional pattern matching
133    
134       A backreference to itself in a repeated group matches the previous
135       captured string.
136    
137    8. General tidying up of studying (both automatic and via "study")
138    consequential on the addition of new assertions.
139    
140    9. As in 5.005, unlimited repeated groups that could match an empty substring
141    are no longer faulted at compile time. Instead, the loop is forcibly broken at
142    runtime if any iteration does actually match an empty substring.
143    
144    10. Include the RunTest script in the distribution.
145    
146    11. Added tests from the Perl 5.005_02 distribution. This showed up a few
147    discrepancies, some of which were old and were also with respect to 5.004. They
148    have now been fixed.
149    
150    
151    Version 1.09 28-Apr-98
152    ----------------------
153    
154    1. A negated single character class followed by a quantifier with a minimum
155    value of one (e.g.  [^x]{1,6}  ) was not compiled correctly. This could lead to
156    program crashes, or just wrong answers. This did not apply to negated classes
157    containing more than one character, or to minima other than one.
158    
159    
160    Version 1.08 27-Mar-98
161    ----------------------
162    
163    1. Add PCRE_UNGREEDY to invert the greediness of quantifiers.
164    
165    2. Add (?U) and (?X) to set PCRE_UNGREEDY and PCRE_EXTRA respectively. The
166    latter must appear before anything that relies on it in the pattern.
167    
168    
169    Version 1.07 16-Feb-98
170    ----------------------
171    
172    1. A pattern such as /((a)*)*/ was not being diagnosed as in error (unlimited
173    repeat of a potentially empty string).
174    
175    
176    Version 1.06 23-Jan-98
177    ----------------------
178    
179    1. Added Markus Oberhumer's little patches for C++.
180    
181    2. Literal strings longer than 255 characters were broken.
182    
183    
184    Version 1.05 23-Dec-97
185    ----------------------
186    
187    1. Negated character classes containing more than one character were failing if
188    PCRE_CASELESS was set at run time.
189    
190    
191    Version 1.04 19-Dec-97
192    ----------------------
193    
194    1. Corrected the man page, where some "const" qualifiers had been omitted.
195    
196    2. Made debugging output print "{0,xxx}" instead of just "{,xxx}" to agree with
197    input syntax.
198    
199    3. Fixed memory leak which occurred when a regex with back references was
200    matched with an offsets vector that wasn't big enough. The temporary memory
201    that is used in this case wasn't being freed if the match failed.
202    
203    4. Tidied pcretest to ensure it frees memory that it gets.
204    
205    5. Temporary memory was being obtained in the case where the passed offsets
206    vector was exactly big enough.
207    
208    6. Corrected definition of offsetof() from change 5 below.
209    
210    7. I had screwed up change 6 below and broken the rules for the use of
211    setjmp(). Now fixed.
212    
213    
214    Version 1.03 18-Dec-97
215    ----------------------
216    
217    1. A erroneous regex with a missing opening parenthesis was correctly
218    diagnosed, but PCRE attempted to access brastack[-1], which could cause crashes
219    on some systems.
220    
221    2. Replaced offsetof(real_pcre, code) by offsetof(real_pcre, code[0]) because
222    it was reported that one broken compiler failed on the former because "code" is
223    also an independent variable.
224    
225    3. The erroneous regex a[]b caused an array overrun reference.
226    
227    4. A regex ending with a one-character negative class (e.g. /[^k]$/) did not
228    fail on data ending with that character. (It was going on too far, and checking
229    the next character, typically a binary zero.) This was specific to the
230    optimized code for single-character negative classes.
231    
232    5. Added a contributed patch from the TIN world which does the following:
233    
234      + Add an undef for memmove, in case the the system defines a macro for it.
235    
236      + Add a definition of offsetof(), in case there isn't one. (I don't know
237        the reason behind this - offsetof() is part of the ANSI standard - but
238        it does no harm).
239    
240      + Reduce the ifdef's in pcre.c using macro DPRINTF, thereby eliminating
241        most of the places where whitespace preceded '#'. I have given up and
242        allowed the remaining 2 cases to be at the margin.
243    
244      + Rename some variables in pcre to eliminate shadowing. This seems very
245        pedantic, but does no harm, of course.
246    
247    6. Moved the call to setjmp() into its own function, to get rid of warnings
248    from gcc -Wall, and avoided calling it at all unless PCRE_EXTRA is used.
249    
250    7. Constructs such as \d{8,} were compiling into the equivalent of
251    \d{8}\d{0,65527} instead of \d{8}\d* which didn't make much difference to the
252    outcome, but in this particular case used more store than had been allocated,
253    which caused the bug to be discovered because it threw up an internal error.
254    
255    8. The debugging code in both pcre and pcretest for outputting the compiled
256    form of a regex was going wrong in the case of back references followed by
257    curly-bracketed repeats.
258    
259    
260    Version 1.02 12-Dec-97
261    ----------------------
262    
263    1. Typos in pcre.3 and comments in the source fixed.
264    
265    2. Applied a contributed patch to get rid of places where it used to remove
266    'const' from variables, and fixed some signed/unsigned and uninitialized
267    variable warnings.
268    
269    3. Added the "runtest" target to Makefile.
270    
271    4. Set default compiler flag to -O2 rather than just -O.
272    
273    
274    Version 1.01 19-Nov-97
275    ----------------------
276    
277    1. PCRE was failing to diagnose unlimited repeat of empty string for patterns
278    like /([ab]*)*/, that is, for classes with more than one character in them.
279    
280    2. Likewise, it wasn't diagnosing patterns with "once-only" subpatterns, such
281    as /((?>a*))*/ (a PCRE_EXTRA facility).
282    
283    
284    Version 1.00 18-Nov-97
285    ----------------------
286    
287    1. Added compile-time macros to support systems such as SunOS4 which don't have
288    memmove() or strerror() but have other things that can be used instead.
289    
290    2. Arranged that "make clean" removes the executables.
291    
292    
293  Version 0.99 27-Oct-97  Version 0.99 27-Oct-97
294  ----------------------  ----------------------
295    

Legend:
Removed from v.3  
changed lines
  Added in v.35

  ViewVC Help
Powered by ViewVC 1.1.5