blob: 34f3ee335d6fba13d4fb31973607173120a0ecff [file] [log] [blame]
Elliott Hughes5b808042021-10-01 10:56:10 -07001News about PCRE2 releases
2-------------------------
3
4
5Version 10.38 01-October-2021
6-----------------------------
7
8As well as some bug fixes and tidies (as always, see ChangeLog for details),
9the documentation is updated to list the new URLs, following the move of the
10source repository to GitHub and the mailing list to Google Groups.
11
12* The CMake build system can now build both static and shared libraries in one
13go.
14
15* Following Perl's lead, \K is now locked out in lookaround assertions by
16default, but an option is provided to re-enable the previous behaviour.
17
18
19Version 10.37 26-May-2021
20-------------------------
21
22A few more bug fixes and tidies. The only change of real note is the removal of
23the actual POSIX names regcomp etc. from the POSIX wrapper library because
24these have caused issues for some applications (see 10.33 #2 below).
25
26
27Version 10.36 04-December-2020
28------------------------------
29
30Again, mainly bug fixes and tidies. The only enhancements are the addition of
31GNU grep's -m (aka --max-count) option to pcre2grep, and also unifying the
32handling of substitution strings for both -O and callouts in pcre2grep, with
33the addition of $x{...} and $o{...} to allow for characters whose code points
34are greater than 255 in Unicode mode.
35
36NOTE: there is an outstanding issue with JIT support for MacOS on arm64
37hardware. For details, please see Bugzilla issue #2618.
38
39
40Version 10.35 15-April-2020
41---------------------------
42
43Bugfixes, tidies, and a few new enhancements.
44
451. Capturing groups that contain recursive backreferences to themselves are no
46longer automatically atomic, because the restriction is no longer necessary
47as a result of the 10.30 restructuring.
48
492. Several new options for pcre2_substitute().
50
513. When Unicode is supported and PCRE2_UCP is set without PCRE2_UTF, Unicode
52character properties are used for upper/lower case computations on characters
53whose code points are greater than 127.
54
554. The character tables (for low-valued characters) can now more easily be
56saved and restored in binary.
57
585. Updated to Unicode 13.0.0.
59
60
61Version 10.34 21-November-2019
62------------------------------
63
64Another release with a few enhancements as well as bugfixes and tidies. The
65main new features are:
66
671. There is now some support for matching in invalid UTF strings.
68
692. Non-atomic positive lookarounds are implemented in the pcre2_match()
70interpreter, but not in JIT.
71
723. Added two new functions: pcre2_get_match_data_size() and
73pcre2_maketables_free().
74
754. Upgraded to Unicode 12.1.0.
76
77
78Version 10.33 16-April-2019
79---------------------------
80
81Yet more bugfixes, tidies, and a few enhancements, summarized here (see
82ChangeLog for the full list):
83
841. Callouts from pcre2_substitute() are now available.
85
862. The POSIX functions are now all called pcre2_regcomp() etc., with wrapper
87functions that use the standard POSIX names. However, in pcre2posix.h the POSIX
88names are defined as macros. This should help avoid linking with the wrong
89library in some environments, while still exporting the POSIX names for
90pre-existing programs that use them.
91
923. Some new options:
93
94 (a) PCRE2_EXTRA_ESCAPED_CR_IS_LF makes \r behave as \n.
95
96 (b) PCRE2_EXTRA_ALT_BSUX enables support for ECMAScript 6's \u{hh...}
97 construct.
98
99 (c) PCRE2_COPY_MATCHED_SUBJECT causes a copy of a matched subject to be
100 made, instead of just remembering a pointer.
101
1024. Some new Perl features:
103
104 (a) Perl 5.28's experimental alphabetic names for atomic groups and
105 lookaround assertions, for example, (*pla:...) and (*atomic:...).
106
107 (b) The new Perl "script run" features (*script_run:...) and
108 (*atomic_script_run:...) aka (*sr:...) and (*asr:...).
109
110 (c) When PCRE2_UTF is set, allow non-ASCII letters and decimal digits in
111 capture group names.
112
1135. --disable-percent-zt disables the use of %zu and %td in formatting strings
114in pcre2test. They were already automatically disabled for VC and older C
115compilers.
116
1176. Some changes related to callouts in pcre2grep:
118
119 (a) Support for running an external program under VMS has been added, in
120 addition to Windows and fork() support.
121
122 (b) --disable-pcre2grep-callout-fork restricts the callout support in
123 to the inbuilt echo facility.
124
125
126Version 10.32 10-September-2018
127-------------------------------
128
129This is another mainly bugfix and tidying release with a few minor
130enhancements. These are the main ones:
131
1321. pcre2grep now supports the inclusion of binary zeros in patterns that are
133read from files via the -f option.
134
1352. ./configure now supports --enable-jit=auto, which automatically enables JIT
136if the hardware supports it.
137
1383. In pcre2_dfa_match(), internal recursive calls no longer use the stack for
139local workspace and local ovectors. Instead, an initial block of stack is
140reserved, but if this is insufficient, heap memory is used. The heap limit
141parameter now applies to pcre2_dfa_match().
142
1434. Updated to Unicode version 11.0.0.
144
1455. (*ACCEPT:ARG), (*FAIL:ARG), and (*COMMIT:ARG) are now supported.
146
1476. Added support for \N{U+dddd}, but only in Unicode mode.
148
1497. Added support for (?^) to unset all imnsx options.
150
151
152Version 10.31 12-February-2018
153------------------------------
154
155This is mainly a bugfix and tidying release (see ChangeLog for full details).
156However, there are some minor enhancements.
157
1581. New pcre2_config() options: PCRE2_CONFIG_NEVER_BACKSLASH_C and
159PCRE2_CONFIG_COMPILED_WIDTHS.
160
1612. New pcre2_pattern_info() option PCRE2_INFO_EXTRAOPTIONS to retrieve the
162extra compile time options.
163
1643. There are now public names for all the pcre2_compile() error numbers.
165
1664. Added PCRE2_CALLOUT_STARTMATCH and PCRE2_CALLOUT_BACKTRACK bits to a new
167field callout_flags in callout blocks.
168
169
170Version 10.30 14-August-2017
171----------------------------
172
173The full list of changes that includes bugfixes and tidies is, as always, in
174ChangeLog. These are the most important new features:
175
1761. The main interpreter, pcre2_match(), has been refactored into a new version
177that does not use recursive function calls (and therefore the system stack) for
178remembering backtracking positions. This makes --disable-stack-for-recursion a
179NOOP. The new implementation allows backtracking into recursive group calls in
180patterns, making it more compatible with Perl, and also fixes some other
181previously hard-to-do issues. For patterns that have a lot of backtracking, the
182heap is now used, and there is an explicit limit on the amount, settable by
183pcre2_set_heap_limit() or (*LIMIT_HEAP=xxx). The "recursion limit" is retained,
184but is renamed as "depth limit" (though the old names remain for
185compatibility).
186
187There is also a change in the way callouts from pcre2_match() are handled. The
188offset_vector field in the callout block is no longer a pointer to the
189actual ovector that was passed to the matching function in the match data
190block. Instead it points to an internal ovector of a size large enough to hold
191all possible captured substrings in the pattern.
192
1932. The new option PCRE2_ENDANCHORED insists that a pattern match must end at
194the end of the subject.
195
1963. The new option PCRE2_EXTENDED_MORE implements Perl's /xx feature, and
197pcre2test is upgraded to support it. Setting within the pattern by (?xx) is
198also supported.
199
2004. (?n) can be used to set PCRE2_NO_AUTO_CAPTURE, because Perl now has this.
201
2025. Additional compile options in the compile context are now available, and the
203first two are: PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES and
204PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL.
205
2066. The newline type PCRE2_NEWLINE_NUL is now available.
207
2087. The match limit value now also applies to pcre2_dfa_match() as there are
209patterns that can use up a lot of resources without necessarily recursing very
210deeply.
211
2128. The option REG_PEND (a GNU extension) is now available for the POSIX
213wrapper. Also there is a new option PCRE2_LITERAL which is used to support
214REG_NOSPEC.
215
2169. PCRE2_EXTRA_MATCH_LINE and PCRE2_EXTRA_MATCH_WORD are implemented for the
217benefit of pcre2grep, and pcre2grep's -F, -w, and -x options are re-implemented
218using PCRE2_LITERAL, PCRE2_EXTRA_MATCH_WORD, and PCRE2_EXTRA_MATCH_LINE. This
219is tidier and also fixes some bugs.
220
22110. The Unicode tables are upgraded from Unicode 8.0.0 to Unicode 10.0.0.
222
22311. There are some experimental functions for converting foreign patterns
224(globs and POSIX patterns) into PCRE2 patterns.
225
226
227Version 10.23 14-February-2017
228------------------------------
229
2301. ChangeLog has the details of a lot of bug fixes and tidies.
231
2322. There has been a major re-factoring of the pcre2_compile.c file. Most syntax
233checking is now done in the pre-pass that identifies capturing groups. This has
234reduced the amount of duplication and made the code tidier. While doing this,
235some minor bugs and Perl incompatibilities were fixed (see ChangeLog for
236details.)
237
2383. Back references are now permitted in lookbehind assertions when there are
239no duplicated group numbers (that is, (?| has not been used), and, if the
240reference is by name, there is only one group of that name. The referenced
241group must, of course be of fixed length.
242
2434. \g{+<number>} (e.g. \g{+2} ) is now supported. It is a "forward back
244reference" and can be useful in repetitions (compare \g{-<number>} ). Perl does
245not recognize this syntax.
246
2475. pcre2grep now automatically expands its buffer up to a maximum set by
248--max-buffer-size.
249
2506. The -t option (grand total) has been added to pcre2grep.
251
2527. A new function called pcre2_code_copy_with_tables() exists to copy a
253compiled pattern along with a private copy of the character tables that is
254uses.
255
2568. A user supplied a number of patches to upgrade pcre2grep under Windows and
257tidy the code.
258
2599. Several updates have been made to pcre2test and test scripts (see
260ChangeLog).
261
262
263Version 10.22 29-July-2016
264--------------------------
265
2661. ChangeLog has the details of a number of bug fixes.
267
2682. The POSIX wrapper function regcomp() did not used to support back references
269and subroutine calls if called with the REG_NOSUB option. It now does.
270
2713. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
272pattern.
273
2744. Support for string callouts is added to pcre2grep.
275
2765. Added the PCRE2_NO_JIT option to pcre2_match().
277
2786. The pcre2_get_error_message() function now returns with a negative error
279code if the error number it is given is unknown.
280
2817. Several updates have been made to pcre2test and test scripts (see
282ChangeLog).
283
284
285Version 10.21 12-January-2016
286-----------------------------
287
2881. Many bugs have been fixed. A large number of them were provoked only by very
289strange pattern input, and were discovered by fuzzers. Some others were
290discovered by code auditing. See ChangeLog for details.
291
2922. The Unicode tables have been updated to Unicode version 8.0.0.
293
2943. For Perl compatibility in EBCDIC environments, ranges such as a-z in a
295class, where both values are literal letters in the same case, omit the
296non-letter EBCDIC code points within the range.
297
2984. There have been a number of enhancements to the pcre2_substitute() function,
299giving more flexibility to replacement facilities. It is now also possible to
300cause the function to return the needed buffer size if the one given is too
301small.
302
3035. The PCRE2_ALT_VERBNAMES option causes the "name" parts of special verbs such
304as (*THEN:name) to be processed for backslashes and to take note of
305PCRE2_EXTENDED.
306
3076. PCRE2_INFO_HASBACKSLASHC makes it possible for a client to find out if a
308pattern uses \C, and --never-backslash-C makes it possible to compile a version
309PCRE2 in which the use of \C is always forbidden.
310
3117. A limit to the length of pattern that can be handled can now be set by
312calling pcre2_set_max_pattern_length().
313
3148. When matching an unanchored pattern, a match can be required to begin within
315a given number of code units after the start of the subject by calling
316pcre2_set_offset_limit().
317
3189. The pcre2test program has been extended to test new facilities, and it can
319now run the tests when LF on its own is not a valid newline sequence.
320
32110. The RunTest script has also been updated to enable more tests to be run.
322
32311. There have been some minor performance enhancements.
324
325
326Version 10.20 30-June-2015
327--------------------------
328
3291. Callouts with string arguments and the pcre2_callout_enumerate() function
330have been implemented.
331
3322. The PCRE2_NEVER_BACKSLASH_C option, which locks out the use of \C, is added.
333
3343. The PCRE2_ALT_CIRCUMFLEX option lets ^ match after a newline at the end of a
335subject in multiline mode.
336
3374. The way named subpatterns are handled has been refactored. The previous
338approach had several bugs.
339
3405. The handling of \c in EBCDIC environments has been changed to conform to the
341perlebcdic document. This is an incompatible change.
342
3436. Bugs have been mended, many of them discovered by fuzzers.
344
345
346Version 10.10 06-March-2015
347---------------------------
348
3491. Serialization and de-serialization functions have been added to the API,
350making it possible to save and restore sets of compiled patterns, though
351restoration must be done in the same environment that was used for compilation.
352
3532. The (*NO_JIT) feature has been added; this makes it possible for a pattern
354creator to specify that JIT is not to be used.
355
3563. A number of bugs have been fixed. In particular, bugs that caused building
357on Windows using CMake to fail have been mended.
358
359
360Version 10.00 05-January-2015
361-----------------------------
362
363Version 10.00 is the first release of PCRE2, a revised API for the PCRE
364library. Changes prior to 10.00 are logged in the ChangeLog file for the old
365API, up to item 20 for release 8.36. New programs are recommended to use the
366new library. Programs that use the original (PCRE1) API will need changing
367before linking with the new library.
368
369****