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

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

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

revision 9 by nigel, Sat Feb 24 21:38:13 2007 UTC revision 31 by nigel, Sat Feb 24 21:38:57 2007 UTC
# Line 2  ChangeLog for PCRE Line 2  ChangeLog for PCRE
2  ------------------  ------------------
3    
4    
5    Version 2.04 18-Feb-99
6    ----------------------
7    
8    1. For parenthesized subpatterns with repeats whose minimum was zero, the
9    computation of the store needed to hold the pattern was incorrect (too large).
10    If such patterns were nested a few deep, this could multiply and become a real
11    problem.
12    
13    2. Added /M option to pcretest to show the memory requirement of a specific
14    pattern. Made -m a synonym of -s (which does this globally) for compatibility.
15    
16    3. Subpatterns of the form (regex){n,m} (i.e. limited maximum) were being
17    compiled in such a way that the backtracking after subsequent failure was
18    pessimal. Something like (a){0,3} was compiled as (a)?(a)?(a)? instead of
19    ((a)((a)(a)?)?)? with disastrous performance if the maximum was of any size.
20    
21    
22    Version 2.03 02-Feb-99
23    ----------------------
24    
25    1. Fixed typo and small mistake in man page.
26    
27    2. Added 4th condition (GPL supersedes if conflict) and created separate
28    LICENCE file containing the conditions.
29    
30    3. Updated pcretest so that patterns such as /abc\/def/ work like they do in
31    Perl, that is the internal \ allows the delimiter to be included in the
32    pattern. Locked out the use of \ as a delimiter. If \ immediately follows
33    the final delimiter, add \ to the end of the pattern (to test the error).
34    
35    4. Added the convenience functions for extracting substrings after a successful
36    match. Updated pcretest to make it able to test these functions.
37    
38    
39    Version 2.02 14-Jan-99
40    ----------------------
41    
42    1. Initialized the working variables associated with each extraction so that
43    their saving and restoring doesn't refer to uninitialized store.
44    
45    2. Put dummy code into study.c in order to trick the optimizer of the IBM C
46    compiler for OS/2 into generating correct code. Apparently IBM isn't going to
47    fix the problem.
48    
49    3. Pcretest: the timing code wasn't using LOOPREPEAT for timing execution
50    calls, and wasn't printing the correct value for compiling calls. Increased the
51    default value of LOOPREPEAT, and the number of significant figures in the
52    times.
53    
54    4. Changed "/bin/rm" in the Makefile to "-rm" so it works on Windows NT.
55    
56    5. Renamed "deftables" as "dftables" to get it down to 8 characters, to avoid
57    a building problem on Windows NT with a FAT file system.
58    
59    
60    Version 2.01 21-Oct-98
61    ----------------------
62    
63    1. Changed the API for pcre_compile() to allow for the provision of a pointer
64    to character tables built by pcre_maketables() in the current locale. If NULL
65    is passed, the default tables are used.
66    
67    
68    Version 2.00 24-Sep-98
69    ----------------------
70    
71    1. Since the (>?) facility is in Perl 5.005, don't require PCRE_EXTRA to enable
72    it any more.
73    
74    2. Allow quantification of (?>) groups, and make it work correctly.
75    
76    3. The first character computation wasn't working for (?>) groups.
77    
78    4. Correct the implementation of \Z (it is permitted to match on the \n at the
79    end of the subject) and add 5.005's \z, which really does match only at the
80    very end of the subject.
81    
82    5. Remove the \X "cut" facility; Perl doesn't have it, and (?> is neater.
83    
84    6. Remove the ability to specify CASELESS, MULTILINE, DOTALL, and
85    DOLLAR_END_ONLY at runtime, to make it possible to implement the Perl 5.005
86    localized options. All options to pcre_study() were also removed.
87    
88    7. Add other new features from 5.005:
89    
90       $(?<=           positive lookbehind
91       $(?<!           negative lookbehind
92       (?imsx-imsx)    added the unsetting capability
93                       such a setting is global if at outer level; local otherwise
94       (?imsx-imsx:)   non-capturing groups with option setting
95       (?(cond)re|re)  conditional pattern matching
96    
97       A backreference to itself in a repeated group matches the previous
98       captured string.
99    
100    8. General tidying up of studying (both automatic and via "study")
101    consequential on the addition of new assertions.
102    
103    9. As in 5.005, unlimited repeated groups that could match an empty substring
104    are no longer faulted at compile time. Instead, the loop is forcibly broken at
105    runtime if any iteration does actually match an empty substring.
106    
107    10. Include the RunTest script in the distribution.
108    
109    11. Added tests from the Perl 5.005_02 distribution. This showed up a few
110    discrepancies, some of which were old and were also with respect to 5.004. They
111    have now been fixed.
112    
113    
114    Version 1.09 28-Apr-98
115    ----------------------
116    
117    1. A negated single character class followed by a quantifier with a minimum
118    value of one (e.g.  [^x]{1,6}  ) was not compiled correctly. This could lead to
119    program crashes, or just wrong answers. This did not apply to negated classes
120    containing more than one character, or to minima other than one.
121    
122    
123    Version 1.08 27-Mar-98
124    ----------------------
125    
126    1. Add PCRE_UNGREEDY to invert the greediness of quantifiers.
127    
128    2. Add (?U) and (?X) to set PCRE_UNGREEDY and PCRE_EXTRA respectively. The
129    latter must appear before anything that relies on it in the pattern.
130    
131    
132    Version 1.07 16-Feb-98
133    ----------------------
134    
135    1. A pattern such as /((a)*)*/ was not being diagnosed as in error (unlimited
136    repeat of a potentially empty string).
137    
138    
139    Version 1.06 23-Jan-98
140    ----------------------
141    
142    1. Added Markus Oberhumer's little patches for C++.
143    
144    2. Literal strings longer than 255 characters were broken.
145    
146    
147    Version 1.05 23-Dec-97
148    ----------------------
149    
150    1. Negated character classes containing more than one character were failing if
151    PCRE_CASELESS was set at run time.
152    
153    
154    Version 1.04 19-Dec-97
155    ----------------------
156    
157    1. Corrected the man page, where some "const" qualifiers had been omitted.
158    
159    2. Made debugging output print "{0,xxx}" instead of just "{,xxx}" to agree with
160    input syntax.
161    
162    3. Fixed memory leak which occurred when a regex with back references was
163    matched with an offsets vector that wasn't big enough. The temporary memory
164    that is used in this case wasn't being freed if the match failed.
165    
166    4. Tidied pcretest to ensure it frees memory that it gets.
167    
168    5. Temporary memory was being obtained in the case where the passed offsets
169    vector was exactly big enough.
170    
171    6. Corrected definition of offsetof() from change 5 below.
172    
173    7. I had screwed up change 6 below and broken the rules for the use of
174    setjmp(). Now fixed.
175    
176    
177  Version 1.03 18-Dec-97  Version 1.03 18-Dec-97
178  ----------------------  ----------------------
179    
# Line 39  optimized code for single-character nega Line 211  optimized code for single-character nega
211  from gcc -Wall, and avoided calling it at all unless PCRE_EXTRA is used.  from gcc -Wall, and avoided calling it at all unless PCRE_EXTRA is used.
212    
213  7. Constructs such as \d{8,} were compiling into the equivalent of  7. Constructs such as \d{8,} were compiling into the equivalent of
214  \d{8}\d{65527} instead of \d{8}\d* which didn't make much difference to the  \d{8}\d{0,65527} instead of \d{8}\d* which didn't make much difference to the
215  outcome, but in this particular case used more store than had been allocated,  outcome, but in this particular case used more store than had been allocated,
216  which caused the bug to be discovered because it threw up an internal error.  which caused the bug to be discovered because it threw up an internal error.
217    

Legend:
Removed from v.9  
changed lines
  Added in v.31

  ViewVC Help
Powered by ViewVC 1.1.5