blob: de797e7b5af6536ca479d4f73eaa972d766dd322 [file] [log] [blame]
Janis Danisevskis53e448c2016-03-31 13:35:25 +01001News about PCRE2 releases
2-------------------------
3
Elliott Hughes653c2102019-01-09 15:41:36 -08004
Elliott Hughes3435c422020-12-04 13:18:28 -08005Version 10.36 04-December-2020
6------------------------------
7
8Again, mainly bug fixes and tidies. The only enhancements are the addition of
9GNU grep's -m (aka --max-count) option to pcre2grep, and also unifying the
10handling of substitution strings for both -O and callouts in pcre2grep, with
11the addition of $x{...} and $o{...} to allow for characters whose code points
12are greater than 255 in Unicode mode.
13
14NOTE: there is an outstanding issue with JIT support for MacOS on arm64
15hardware. For details, please see Bugzilla issue #2618.
16
17
Elliott Hughes2dbd7d22020-06-03 14:32:37 -070018Version 10.35 15-April-2020
19---------------------------
20
21Bugfixes, tidies, and a few new enhancements.
22
231. Capturing groups that contain recursive backreferences to themselves are no
24longer automatically atomic, because the restriction is no longer necessary
25as a result of the 10.30 restructuring.
26
272. Several new options for pcre2_substitute().
28
293. When Unicode is supported and PCRE2_UCP is set without PCRE2_UTF, Unicode
30character properties are used for upper/lower case computations on characters
31whose code points are greater than 127.
32
334. The character tables (for low-valued characters) can now more easily be
34saved and restored in binary.
35
365. Updated to Unicode 13.0.0.
37
38
39Version 10.34 21-November-2019
40------------------------------
41
42Another release with a few enhancements as well as bugfixes and tidies. The
43main new features are:
44
451. There is now some support for matching in invalid UTF strings.
46
472. Non-atomic positive lookarounds are implemented in the pcre2_match()
48interpreter, but not in JIT.
49
503. Added two new functions: pcre2_get_match_data_size() and
51pcre2_maketables_free().
52
534. Upgraded to Unicode 12.1.0.
54
55
56Version 10.33 16-April-2019
57---------------------------
Elliott Hughes0c26e192019-08-07 12:24:46 -070058
59Yet more bugfixes, tidies, and a few enhancements, summarized here (see
60ChangeLog for the full list):
61
621. Callouts from pcre2_substitute() are now available.
63
642. The POSIX functions are now all called pcre2_regcomp() etc., with wrapper
65functions that use the standard POSIX names. However, in pcre2posix.h the POSIX
66names are defined as macros. This should help avoid linking with the wrong
67library in some environments, while still exporting the POSIX names for
68pre-existing programs that use them.
69
703. Some new options:
71
72 (a) PCRE2_EXTRA_ESCAPED_CR_IS_LF makes \r behave as \n.
73
74 (b) PCRE2_EXTRA_ALT_BSUX enables support for ECMAScript 6's \u{hh...}
75 construct.
76
77 (c) PCRE2_COPY_MATCHED_SUBJECT causes a copy of a matched subject to be
78 made, instead of just remembering a pointer.
79
804. Some new Perl features:
81
82 (a) Perl 5.28's experimental alphabetic names for atomic groups and
83 lookaround assertions, for example, (*pla:...) and (*atomic:...).
84
85 (b) The new Perl "script run" features (*script_run:...) and
86 (*atomic_script_run:...) aka (*sr:...) and (*asr:...).
87
88 (c) When PCRE2_UTF is set, allow non-ASCII letters and decimal digits in
89 capture group names.
90
915. --disable-percent-zt disables the use of %zu and %td in formatting strings
92in pcre2test. They were already automatically disabled for VC and older C
93compilers.
94
956. Some changes related to callouts in pcre2grep:
96
97 (a) Support for running an external program under VMS has been added, in
98 addition to Windows and fork() support.
99
100 (b) --disable-pcre2grep-callout-fork restricts the callout support in
101 to the inbuilt echo facility.
102
103
Elliott Hughes653c2102019-01-09 15:41:36 -0800104Version 10.32 10-September-2018
105-------------------------------
106
107This is another mainly bugfix and tidying release with a few minor
108enhancements. These are the main ones:
109
1101. pcre2grep now supports the inclusion of binary zeros in patterns that are
111read from files via the -f option.
112
1132. ./configure now supports --enable-jit=auto, which automatically enables JIT
114if the hardware supports it.
115
1163. In pcre2_dfa_match(), internal recursive calls no longer use the stack for
117local workspace and local ovectors. Instead, an initial block of stack is
118reserved, but if this is insufficient, heap memory is used. The heap limit
119parameter now applies to pcre2_dfa_match().
120
1214. Updated to Unicode version 11.0.0.
122
1235. (*ACCEPT:ARG), (*FAIL:ARG), and (*COMMIT:ARG) are now supported.
124
1256. Added support for \N{U+dddd}, but only in Unicode mode.
126
1277. Added support for (?^) to unset all imnsx options.
128
129
Elliott Hughes9bc971b2018-07-27 13:23:14 -0700130Version 10.31 12-February-2018
131------------------------------
132
133This is mainly a bugfix and tidying release (see ChangeLog for full details).
134However, there are some minor enhancements.
135
1361. New pcre2_config() options: PCRE2_CONFIG_NEVER_BACKSLASH_C and
137PCRE2_CONFIG_COMPILED_WIDTHS.
138
1392. New pcre2_pattern_info() option PCRE2_INFO_EXTRAOPTIONS to retrieve the
140extra compile time options.
141
1423. There are now public names for all the pcre2_compile() error numbers.
143
1444. Added PCRE2_CALLOUT_STARTMATCH and PCRE2_CALLOUT_BACKTRACK bits to a new
145field callout_flags in callout blocks.
146
147
148Version 10.30 14-August-2017
149----------------------------
150
151The full list of changes that includes bugfixes and tidies is, as always, in
152ChangeLog. These are the most important new features:
153
1541. The main interpreter, pcre2_match(), has been refactored into a new version
155that does not use recursive function calls (and therefore the system stack) for
156remembering backtracking positions. This makes --disable-stack-for-recursion a
157NOOP. The new implementation allows backtracking into recursive group calls in
158patterns, making it more compatible with Perl, and also fixes some other
159previously hard-to-do issues. For patterns that have a lot of backtracking, the
Elliott Hughes653c2102019-01-09 15:41:36 -0800160heap is now used, and there is an explicit limit on the amount, settable by
Elliott Hughes9bc971b2018-07-27 13:23:14 -0700161pcre2_set_heap_limit() or (*LIMIT_HEAP=xxx). The "recursion limit" is retained,
162but is renamed as "depth limit" (though the old names remain for
163compatibility).
164
165There is also a change in the way callouts from pcre2_match() are handled. The
166offset_vector field in the callout block is no longer a pointer to the
167actual ovector that was passed to the matching function in the match data
168block. Instead it points to an internal ovector of a size large enough to hold
169all possible captured substrings in the pattern.
170
1712. The new option PCRE2_ENDANCHORED insists that a pattern match must end at
172the end of the subject.
173
1743. The new option PCRE2_EXTENDED_MORE implements Perl's /xx feature, and
175pcre2test is upgraded to support it. Setting within the pattern by (?xx) is
176also supported.
177
1784. (?n) can be used to set PCRE2_NO_AUTO_CAPTURE, because Perl now has this.
179
1805. Additional compile options in the compile context are now available, and the
181first two are: PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES and
Elliott Hughes653c2102019-01-09 15:41:36 -0800182PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL.
Elliott Hughes9bc971b2018-07-27 13:23:14 -0700183
1846. The newline type PCRE2_NEWLINE_NUL is now available.
185
1867. The match limit value now also applies to pcre2_dfa_match() as there are
187patterns that can use up a lot of resources without necessarily recursing very
188deeply.
189
1908. The option REG_PEND (a GNU extension) is now available for the POSIX
191wrapper. Also there is a new option PCRE2_LITERAL which is used to support
192REG_NOSPEC.
193
1949. PCRE2_EXTRA_MATCH_LINE and PCRE2_EXTRA_MATCH_WORD are implemented for the
195benefit of pcre2grep, and pcre2grep's -F, -w, and -x options are re-implemented
196using PCRE2_LITERAL, PCRE2_EXTRA_MATCH_WORD, and PCRE2_EXTRA_MATCH_LINE. This
197is tidier and also fixes some bugs.
198
19910. The Unicode tables are upgraded from Unicode 8.0.0 to Unicode 10.0.0.
200
20111. There are some experimental functions for converting foreign patterns
202(globs and POSIX patterns) into PCRE2 patterns.
203
204
205Version 10.23 14-February-2017
206------------------------------
207
2081. ChangeLog has the details of a lot of bug fixes and tidies.
209
2102. There has been a major re-factoring of the pcre2_compile.c file. Most syntax
211checking is now done in the pre-pass that identifies capturing groups. This has
212reduced the amount of duplication and made the code tidier. While doing this,
213some minor bugs and Perl incompatibilities were fixed (see ChangeLog for
214details.)
215
2163. Back references are now permitted in lookbehind assertions when there are
217no duplicated group numbers (that is, (?| has not been used), and, if the
218reference is by name, there is only one group of that name. The referenced
219group must, of course be of fixed length.
220
2214. \g{+<number>} (e.g. \g{+2} ) is now supported. It is a "forward back
222reference" and can be useful in repetitions (compare \g{-<number>} ). Perl does
223not recognize this syntax.
224
2255. pcre2grep now automatically expands its buffer up to a maximum set by
226--max-buffer-size.
227
2286. The -t option (grand total) has been added to pcre2grep.
229
2307. A new function called pcre2_code_copy_with_tables() exists to copy a
231compiled pattern along with a private copy of the character tables that is
232uses.
233
2348. A user supplied a number of patches to upgrade pcre2grep under Windows and
235tidy the code.
236
2379. Several updates have been made to pcre2test and test scripts (see
238ChangeLog).
239
240
Janis Danisevskis8b979b22016-08-15 16:09:16 +0100241Version 10.22 29-July-2016
242--------------------------
243
2441. ChangeLog has the details of a number of bug fixes.
245
2462. The POSIX wrapper function regcomp() did not used to support back references
247and subroutine calls if called with the REG_NOSUB option. It now does.
248
2493. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
250pattern.
251
2524. Support for string callouts is added to pcre2grep.
253
2545. Added the PCRE2_NO_JIT option to pcre2_match().
255
2566. The pcre2_get_error_message() function now returns with a negative error
257code if the error number it is given is unknown.
258
2597. Several updates have been made to pcre2test and test scripts (see
260ChangeLog).
261
262
Janis Danisevskis53e448c2016-03-31 13:35:25 +0100263Version 10.21 12-January-2016
264-----------------------------
265
2661. Many bugs have been fixed. A large number of them were provoked only by very
267strange pattern input, and were discovered by fuzzers. Some others were
268discovered by code auditing. See ChangeLog for details.
269
2702. The Unicode tables have been updated to Unicode version 8.0.0.
271
2723. For Perl compatibility in EBCDIC environments, ranges such as a-z in a
273class, where both values are literal letters in the same case, omit the
274non-letter EBCDIC code points within the range.
275
2764. There have been a number of enhancements to the pcre2_substitute() function,
277giving more flexibility to replacement facilities. It is now also possible to
278cause the function to return the needed buffer size if the one given is too
279small.
280
2815. The PCRE2_ALT_VERBNAMES option causes the "name" parts of special verbs such
282as (*THEN:name) to be processed for backslashes and to take note of
283PCRE2_EXTENDED.
284
2856. PCRE2_INFO_HASBACKSLASHC makes it possible for a client to find out if a
286pattern uses \C, and --never-backslash-C makes it possible to compile a version
287PCRE2 in which the use of \C is always forbidden.
288
2897. A limit to the length of pattern that can be handled can now be set by
290calling pcre2_set_max_pattern_length().
291
2928. When matching an unanchored pattern, a match can be required to begin within
293a given number of code units after the start of the subject by calling
294pcre2_set_offset_limit().
295
2969. The pcre2test program has been extended to test new facilities, and it can
297now run the tests when LF on its own is not a valid newline sequence.
298
29910. The RunTest script has also been updated to enable more tests to be run.
300
30111. There have been some minor performance enhancements.
302
303
304Version 10.20 30-June-2015
305--------------------------
306
3071. Callouts with string arguments and the pcre2_callout_enumerate() function
308have been implemented.
309
3102. The PCRE2_NEVER_BACKSLASH_C option, which locks out the use of \C, is added.
311
3123. The PCRE2_ALT_CIRCUMFLEX option lets ^ match after a newline at the end of a
313subject in multiline mode.
314
3154. The way named subpatterns are handled has been refactored. The previous
316approach had several bugs.
317
3185. The handling of \c in EBCDIC environments has been changed to conform to the
319perlebcdic document. This is an incompatible change.
320
3216. Bugs have been mended, many of them discovered by fuzzers.
322
323
324Version 10.10 06-March-2015
325---------------------------
326
3271. Serialization and de-serialization functions have been added to the API,
328making it possible to save and restore sets of compiled patterns, though
329restoration must be done in the same environment that was used for compilation.
330
3312. The (*NO_JIT) feature has been added; this makes it possible for a pattern
332creator to specify that JIT is not to be used.
333
3343. A number of bugs have been fixed. In particular, bugs that caused building
335on Windows using CMake to fail have been mended.
336
337
338Version 10.00 05-January-2015
339-----------------------------
340
341Version 10.00 is the first release of PCRE2, a revised API for the PCRE
342library. Changes prior to 10.00 are logged in the ChangeLog file for the old
343API, up to item 20 for release 8.36. New programs are recommended to use the
344new library. Programs that use the original (PCRE1) API will need changing
345before linking with the new library.
346
347****