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

Diff of /code/trunk/ChangeLog

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

revision 1265 by ph10, Sun Mar 3 10:42:46 2013 UTC revision 1338 by zherczeg, Fri Jun 14 07:54:36 2013 UTC
# Line 1  Line 1 
1  ChangeLog for PCRE  ChangeLog for PCRE
2  ------------------  ------------------
3    
4  Version 8.33 xx-xxxx-201x  Version 8.34 xx-xxxx-201x
5  -------------------------  --------------------------
6    
7    1.  Add pcre[16|32]_jit_free_unused_memory to forcibly free unused JIT
8        executable memory. Patch inspired by Carsten Klein.
9    
10    
11    Version 8.33 28-May-2013
12    --------------------------
13    
14  1.  Added 'U' to some constants that are compared to unsigned integers, to  1.  Added 'U' to some constants that are compared to unsigned integers, to
15      avoid compiler signed/unsigned warnings. Added (int) casts to unsigned      avoid compiler signed/unsigned warnings. Added (int) casts to unsigned
# Line 14  Version 8.33 xx-xxxx-201x Line 21  Version 8.33 xx-xxxx-201x
21    
22  3.  Revise the creation of config.h.generic so that all boolean macros are  3.  Revise the creation of config.h.generic so that all boolean macros are
23      #undefined, whereas non-boolean macros are #ifndef/#endif-ed. This makes      #undefined, whereas non-boolean macros are #ifndef/#endif-ed. This makes
24      overriding via -D on the command line possible.      overriding via -D on the command line possible.
25    
26  4.  Changing the definition of the variable "op" in pcre_exec.c from pcre_uchar  4.  Changing the definition of the variable "op" in pcre_exec.c from pcre_uchar
27      to unsigned int is reported to make a quite noticeable speed difference in      to unsigned int is reported to make a quite noticeable speed difference in
28      a specific Windows environment. Testing on Linux did also appear to show      a specific Windows environment. Testing on Linux did also appear to show
29      some benefit (and it is clearly not harmful). Also fixed the definition of      some benefit (and it is clearly not harmful). Also fixed the definition of
30      Xop which should be unsigned.      Xop which should be unsigned.
31    
32  5.  Related to (4), changing the definition of the intermediate variable cc  5.  Related to (4), changing the definition of the intermediate variable cc
33      in repeated character loops from pcre_uchar to pcre_uint32 also gave speed      in repeated character loops from pcre_uchar to pcre_uint32 also gave speed
# Line 28  Version 8.33 xx-xxxx-201x Line 35  Version 8.33 xx-xxxx-201x
35    
36  6.  Fix forward search in JIT when link size is 3 or greater. Also removed some  6.  Fix forward search in JIT when link size is 3 or greater. Also removed some
37      unnecessary spaces.      unnecessary spaces.
38    
39  7.  Adjust autogen.sh and configure.ac to lose warnings given by automake 1.12  7.  Adjust autogen.sh and configure.ac to lose warnings given by automake 1.12
40      and later.      and later.
41    
42  8.  Fix two buffer over read issues in 16 and 32 bit modes. Affects JIT only.  8.  Fix two buffer over read issues in 16 and 32 bit modes. Affects JIT only.
43    
44  9.  Optimizing fast_forward_start_bits in JIT.  9.  Optimizing fast_forward_start_bits in JIT.
45    
46  10. Adding experimental support for callouts in JIT, and fixing some  10. Adding support for callouts in JIT, and fixing some issues revealed
47      issues revealed during this work. Namely:      during this work. Namely:
48    
49      (a) Unoptimized capturing brackets incorrectly reset on backtrack.      (a) Unoptimized capturing brackets incorrectly reset on backtrack.
50    
51      (b) Minimum length was not checked before the matching is started.      (b) Minimum length was not checked before the matching is started.
52    
53  11. The value of capture_last that is passed to callouts was incorrect in some  11. The value of capture_last that is passed to callouts was incorrect in some
54      cases when there was a capture on one path that was subsequently abandoned      cases when there was a capture on one path that was subsequently abandoned
55      after a backtrack. Also, the capture_last value is now reset after a      after a backtrack. Also, the capture_last value is now reset after a
56      recursion, since all captures are also reset in this case.      recursion, since all captures are also reset in this case.
57    
58  12. The interpreter no longer returns the "too many substrings" error in the  12. The interpreter no longer returns the "too many substrings" error in the
59      case when an overflowing capture is in a branch that is subsequently      case when an overflowing capture is in a branch that is subsequently
60      abandoned after a backtrack.      abandoned after a backtrack.
61    
62  13. In the pathological case when an offset vector of size 2 is used, pcretest  13. In the pathological case when an offset vector of size 2 is used, pcretest
63      now prints out the matched string after a yield of 0 or 1.      now prints out the matched string after a yield of 0 or 1.
64    
65  14. Inlining subpatterns in recursions, when certain conditions are fulfilled.  14. Inlining subpatterns in recursions, when certain conditions are fulfilled.
# Line 61  Version 8.33 xx-xxxx-201x Line 68  Version 8.33 xx-xxxx-201x
68  15. JIT compiler now supports 32 bit Macs thanks to Lawrence Velazquez.  15. JIT compiler now supports 32 bit Macs thanks to Lawrence Velazquez.
69    
70  16. Partial matches now set offsets[2] to the "bumpalong" value, that is, the  16. Partial matches now set offsets[2] to the "bumpalong" value, that is, the
71      offset of the starting point of the matching process, provided the offsets      offset of the starting point of the matching process, provided the offsets
72      vector is large enough.      vector is large enough.
73    
74  17. The \A escape now records a lookbehind value of 1, though its execution  17. The \A escape now records a lookbehind value of 1, though its execution
75      does not actually inspect the previous character. This is to ensure that,      does not actually inspect the previous character. This is to ensure that,
76      in partial multi-segment matching, at least one character from the old      in partial multi-segment matching, at least one character from the old
77      segment is retained when a new segment is processed. Otherwise, if there      segment is retained when a new segment is processed. Otherwise, if there
78      are no lookbehinds in the pattern, \A might match incorrectly at the start      are no lookbehinds in the pattern, \A might match incorrectly at the start
79      of a new segment.      of a new segment.
80    
81  18. Added some #ifdef __VMS code into pcretest.c to help VMS implementations.  18. Added some #ifdef __VMS code into pcretest.c to help VMS implementations.
82    
83  19. Redefined some pcre_uchar variables in pcre_exec.c as pcre_uint32; this  19. Redefined some pcre_uchar variables in pcre_exec.c as pcre_uint32; this
84      gives some modest performance improvement in 8-bit mode.      gives some modest performance improvement in 8-bit mode.
85    
86  20. Added the PCRE-specific property \p{Xuc} for matching characters that can  20. Added the PCRE-specific property \p{Xuc} for matching characters that can
87      be expressed in certain programming languages using Universal Character      be expressed in certain programming languages using Universal Character
88      Names.      Names.
89    
90  21. Unicode validation has been updated in the light of Unicode Corrigendum #9,  21. Unicode validation has been updated in the light of Unicode Corrigendum #9,
91      which points out that "non characters" are not "characters that may not      which points out that "non characters" are not "characters that may not
92      appear in Unicode strings" but rather "characters that are reserved for      appear in Unicode strings" but rather "characters that are reserved for
93      internal use and have only local meaning".      internal use and have only local meaning".
94    
95  22. When a pattern was compiled with automatic callouts (PCRE_AUTO_CALLOUT) and  22. When a pattern was compiled with automatic callouts (PCRE_AUTO_CALLOUT) and
96      there was a conditional group that depended on an assertion, if the      there was a conditional group that depended on an assertion, if the
97      assertion was false, the callout that immediately followed the alternation      assertion was false, the callout that immediately followed the alternation
98      in the condition was skipped when pcre_exec() was used for matching.      in the condition was skipped when pcre_exec() was used for matching.
99    
100    23. Allow an explicit callout to be inserted before an assertion that is the
101        condition for a conditional group, for compatibility with automatic
102        callouts, which always insert a callout at this point.
103    
104    24. In 8.31, (*COMMIT) was confined to within a recursive subpattern. Perl also
105        confines (*SKIP) and (*PRUNE) in the same way, and this has now been done.
106    
107    25. (*PRUNE) is now supported by the JIT compiler.
108    
109    26. Fix infinite loop when /(?<=(*SKIP)ac)a/ is matched against aa.
110    
111    27. Fix the case where there are two or more SKIPs with arguments that may be
112        ignored.
113    
114    28. (*SKIP) is now supported by the JIT compiler.
115    
116    29. (*THEN) is now supported by the JIT compiler.
117    
118    30. Update RunTest with additional test selector options.
119    
120    31. The way PCRE handles backtracking verbs has been changed in two ways.
121    
122        (1) Previously, in something like (*COMMIT)(*SKIP), COMMIT would override
123        SKIP. Now, PCRE acts on whichever backtracking verb is reached first by
124        backtracking. In some cases this makes it more Perl-compatible, but Perl's
125        rather obscure rules do not always do the same thing.
126    
127        (2) Previously, backtracking verbs were confined within assertions. This is
128        no longer the case for positive assertions, except for (*ACCEPT). Again,
129        this sometimes improves Perl compatibility, and sometimes does not.
130    
131    32. A number of tests that were in test 2 because Perl did things differently
132        have been moved to test 1, because either Perl or PCRE has changed, and
133        these tests are now compatible.
134    
135    32. Backtracking control verbs are now handled in the same way in JIT and
136        interpreter.
137    
138    33. An opening parenthesis in a MARK/PRUNE/SKIP/THEN name in a pattern that
139        contained a forward subroutine reference caused a compile error.
140    
141    34. Auto-detect and optimize limited repetitions in JIT.
142    
143    35. Implement PCRE_NEVER_UTF to lock out the use of UTF, in particular,
144        blocking (*UTF) etc.
145    
146    36. In the interpreter, maximizing pattern repetitions for characters and
147        character types now use tail recursion, which reduces stack usage.
148    
149    37. The value of the max lookbehind was not correctly preserved if a compiled
150        and saved regex was reloaded on a host of different endianness.
151    
152    38. Implemented (*LIMIT_MATCH) and (*LIMIT_RECURSION). As part of the extension
153        of the compiled pattern block, expand the flags field from 16 to 32 bits
154        because it was almost full.
155    
156    39. Try madvise first before posix_madvise.
157    
158    40. Change 7 for PCRE 7.9 made it impossible for pcregrep to find empty lines
159        with a pattern such as ^$. It has taken 4 years for anybody to notice! The
160        original change locked out all matches of empty strings. This has been
161        changed so that one match of an empty string per line is recognized.
162        Subsequent searches on the same line (for colouring or for --only-matching,
163        for example) do not recognize empty strings.
164    
165    41. Applied a user patch to fix a number of spelling mistakes in comments.
166    
167    42. Data lines longer than 65536 caused pcretest to crash.
168    
169    43. Clarified the data type for length and startoffset arguments for pcre_exec
170        and pcre_dfa_exec in the function-specific man pages, where they were
171        explicitly stated to be in bytes, never having been updated. I also added
172        some clarification to the pcreapi man page.
173    
174    44. A call to pcre_dfa_exec() with an output vector size less than 2 caused
175        a segmentation fault.
176    
177    
178  Version 8.32 30-November-2012  Version 8.32 30-November-2012
179  -----------------------------  -----------------------------
# Line 1598  Version 7.9 11-Apr-09 Line 1682  Version 7.9 11-Apr-09
1682  7.  A pattern that could match an empty string could cause pcregrep to loop; it  7.  A pattern that could match an empty string could cause pcregrep to loop; it
1683      doesn't make sense to accept an empty string match in pcregrep, so I have      doesn't make sense to accept an empty string match in pcregrep, so I have
1684      locked it out (using PCRE's PCRE_NOTEMPTY option). By experiment, this      locked it out (using PCRE's PCRE_NOTEMPTY option). By experiment, this
1685      seems to be how GNU grep behaves.      seems to be how GNU grep behaves. [But see later change 40 for release
1686        8.33.]
1687    
1688  8.  The pattern (?(?=.*b)b|^) was incorrectly compiled as "match must be at  8.  The pattern (?(?=.*b)b|^) was incorrectly compiled as "match must be at
1689      start or after a newline", because the conditional assertion was not being      start or after a newline", because the conditional assertion was not being
# Line 1841  Version 7.7 07-May-08 Line 1926  Version 7.7 07-May-08
1926      containing () gave an internal compiling error instead of "reference to      containing () gave an internal compiling error instead of "reference to
1927      non-existent subpattern". Fortunately, when the pattern did exist, the      non-existent subpattern". Fortunately, when the pattern did exist, the
1928      compiled code was correct. (When scanning forwards to check for the      compiled code was correct. (When scanning forwards to check for the
1929      existencd of the subpattern, it was treating the data ']' as terminating      existence of the subpattern, it was treating the data ']' as terminating
1930      the class, so got the count wrong. When actually compiling, the reference      the class, so got the count wrong. When actually compiling, the reference
1931      was subsequently set up correctly.)      was subsequently set up correctly.)
1932    

Legend:
Removed from v.1265  
changed lines
  Added in v.1338

  ViewVC Help
Powered by ViewVC 1.1.5