1News about PCRE2 releases 2------------------------- 3 4 5Version 10.32 10-September-2018 6------------------------------- 7 8This is another mainly bugfix and tidying release with a few minor 9enhancements. These are the main ones: 10 111. pcre2grep now supports the inclusion of binary zeros in patterns that are 12read from files via the -f option. 13 142. ./configure now supports --enable-jit=auto, which automatically enables JIT 15if the hardware supports it. 16 173. In pcre2_dfa_match(), internal recursive calls no longer use the stack for 18local workspace and local ovectors. Instead, an initial block of stack is 19reserved, but if this is insufficient, heap memory is used. The heap limit 20parameter now applies to pcre2_dfa_match(). 21 224. Updated to Unicode version 11.0.0. 23 245. (*ACCEPT:ARG), (*FAIL:ARG), and (*COMMIT:ARG) are now supported. 25 266. Added support for \N{U+dddd}, but only in Unicode mode. 27 287. Added support for (?^) to unset all imnsx options. 29 30 31Version 10.31 12-February-2018 32------------------------------ 33 34This is mainly a bugfix and tidying release (see ChangeLog for full details). 35However, there are some minor enhancements. 36 371. New pcre2_config() options: PCRE2_CONFIG_NEVER_BACKSLASH_C and 38PCRE2_CONFIG_COMPILED_WIDTHS. 39 402. New pcre2_pattern_info() option PCRE2_INFO_EXTRAOPTIONS to retrieve the 41extra compile time options. 42 433. There are now public names for all the pcre2_compile() error numbers. 44 454. Added PCRE2_CALLOUT_STARTMATCH and PCRE2_CALLOUT_BACKTRACK bits to a new 46field callout_flags in callout blocks. 47 48 49Version 10.30 14-August-2017 50---------------------------- 51 52The full list of changes that includes bugfixes and tidies is, as always, in 53ChangeLog. These are the most important new features: 54 551. The main interpreter, pcre2_match(), has been refactored into a new version 56that does not use recursive function calls (and therefore the system stack) for 57remembering backtracking positions. This makes --disable-stack-for-recursion a 58NOOP. The new implementation allows backtracking into recursive group calls in 59patterns, making it more compatible with Perl, and also fixes some other 60previously hard-to-do issues. For patterns that have a lot of backtracking, the 61heap is now used, and there is an explicit limit on the amount, settable by 62pcre2_set_heap_limit() or (*LIMIT_HEAP=xxx). The "recursion limit" is retained, 63but is renamed as "depth limit" (though the old names remain for 64compatibility). 65 66There is also a change in the way callouts from pcre2_match() are handled. The 67offset_vector field in the callout block is no longer a pointer to the 68actual ovector that was passed to the matching function in the match data 69block. Instead it points to an internal ovector of a size large enough to hold 70all possible captured substrings in the pattern. 71 722. The new option PCRE2_ENDANCHORED insists that a pattern match must end at 73the end of the subject. 74 753. The new option PCRE2_EXTENDED_MORE implements Perl's /xx feature, and 76pcre2test is upgraded to support it. Setting within the pattern by (?xx) is 77also supported. 78 794. (?n) can be used to set PCRE2_NO_AUTO_CAPTURE, because Perl now has this. 80 815. Additional compile options in the compile context are now available, and the 82first two are: PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES and 83PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL. 84 856. The newline type PCRE2_NEWLINE_NUL is now available. 86 877. The match limit value now also applies to pcre2_dfa_match() as there are 88patterns that can use up a lot of resources without necessarily recursing very 89deeply. 90 918. The option REG_PEND (a GNU extension) is now available for the POSIX 92wrapper. Also there is a new option PCRE2_LITERAL which is used to support 93REG_NOSPEC. 94 959. PCRE2_EXTRA_MATCH_LINE and PCRE2_EXTRA_MATCH_WORD are implemented for the 96benefit of pcre2grep, and pcre2grep's -F, -w, and -x options are re-implemented 97using PCRE2_LITERAL, PCRE2_EXTRA_MATCH_WORD, and PCRE2_EXTRA_MATCH_LINE. This 98is tidier and also fixes some bugs. 99 10010. The Unicode tables are upgraded from Unicode 8.0.0 to Unicode 10.0.0. 101 10211. There are some experimental functions for converting foreign patterns 103(globs and POSIX patterns) into PCRE2 patterns. 104 105 106Version 10.23 14-February-2017 107------------------------------ 108 1091. ChangeLog has the details of a lot of bug fixes and tidies. 110 1112. There has been a major re-factoring of the pcre2_compile.c file. Most syntax 112checking is now done in the pre-pass that identifies capturing groups. This has 113reduced the amount of duplication and made the code tidier. While doing this, 114some minor bugs and Perl incompatibilities were fixed (see ChangeLog for 115details.) 116 1173. Back references are now permitted in lookbehind assertions when there are 118no duplicated group numbers (that is, (?| has not been used), and, if the 119reference is by name, there is only one group of that name. The referenced 120group must, of course be of fixed length. 121 1224. \g{+<number>} (e.g. \g{+2} ) is now supported. It is a "forward back 123reference" and can be useful in repetitions (compare \g{-<number>} ). Perl does 124not recognize this syntax. 125 1265. pcre2grep now automatically expands its buffer up to a maximum set by 127--max-buffer-size. 128 1296. The -t option (grand total) has been added to pcre2grep. 130 1317. A new function called pcre2_code_copy_with_tables() exists to copy a 132compiled pattern along with a private copy of the character tables that is 133uses. 134 1358. A user supplied a number of patches to upgrade pcre2grep under Windows and 136tidy the code. 137 1389. Several updates have been made to pcre2test and test scripts (see 139ChangeLog). 140 141 142Version 10.22 29-July-2016 143-------------------------- 144 1451. ChangeLog has the details of a number of bug fixes. 146 1472. The POSIX wrapper function regcomp() did not used to support back references 148and subroutine calls if called with the REG_NOSUB option. It now does. 149 1503. A new function, pcre2_code_copy(), is added, to make a copy of a compiled 151pattern. 152 1534. Support for string callouts is added to pcre2grep. 154 1555. Added the PCRE2_NO_JIT option to pcre2_match(). 156 1576. The pcre2_get_error_message() function now returns with a negative error 158code if the error number it is given is unknown. 159 1607. Several updates have been made to pcre2test and test scripts (see 161ChangeLog). 162 163 164Version 10.21 12-January-2016 165----------------------------- 166 1671. Many bugs have been fixed. A large number of them were provoked only by very 168strange pattern input, and were discovered by fuzzers. Some others were 169discovered by code auditing. See ChangeLog for details. 170 1712. The Unicode tables have been updated to Unicode version 8.0.0. 172 1733. For Perl compatibility in EBCDIC environments, ranges such as a-z in a 174class, where both values are literal letters in the same case, omit the 175non-letter EBCDIC code points within the range. 176 1774. There have been a number of enhancements to the pcre2_substitute() function, 178giving more flexibility to replacement facilities. It is now also possible to 179cause the function to return the needed buffer size if the one given is too 180small. 181 1825. The PCRE2_ALT_VERBNAMES option causes the "name" parts of special verbs such 183as (*THEN:name) to be processed for backslashes and to take note of 184PCRE2_EXTENDED. 185 1866. PCRE2_INFO_HASBACKSLASHC makes it possible for a client to find out if a 187pattern uses \C, and --never-backslash-C makes it possible to compile a version 188PCRE2 in which the use of \C is always forbidden. 189 1907. A limit to the length of pattern that can be handled can now be set by 191calling pcre2_set_max_pattern_length(). 192 1938. When matching an unanchored pattern, a match can be required to begin within 194a given number of code units after the start of the subject by calling 195pcre2_set_offset_limit(). 196 1979. The pcre2test program has been extended to test new facilities, and it can 198now run the tests when LF on its own is not a valid newline sequence. 199 20010. The RunTest script has also been updated to enable more tests to be run. 201 20211. There have been some minor performance enhancements. 203 204 205Version 10.20 30-June-2015 206-------------------------- 207 2081. Callouts with string arguments and the pcre2_callout_enumerate() function 209have been implemented. 210 2112. The PCRE2_NEVER_BACKSLASH_C option, which locks out the use of \C, is added. 212 2133. The PCRE2_ALT_CIRCUMFLEX option lets ^ match after a newline at the end of a 214subject in multiline mode. 215 2164. The way named subpatterns are handled has been refactored. The previous 217approach had several bugs. 218 2195. The handling of \c in EBCDIC environments has been changed to conform to the 220perlebcdic document. This is an incompatible change. 221 2226. Bugs have been mended, many of them discovered by fuzzers. 223 224 225Version 10.10 06-March-2015 226--------------------------- 227 2281. Serialization and de-serialization functions have been added to the API, 229making it possible to save and restore sets of compiled patterns, though 230restoration must be done in the same environment that was used for compilation. 231 2322. The (*NO_JIT) feature has been added; this makes it possible for a pattern 233creator to specify that JIT is not to be used. 234 2353. A number of bugs have been fixed. In particular, bugs that caused building 236on Windows using CMake to fail have been mended. 237 238 239Version 10.00 05-January-2015 240----------------------------- 241 242Version 10.00 is the first release of PCRE2, a revised API for the PCRE 243library. Changes prior to 10.00 are logged in the ChangeLog file for the old 244API, up to item 20 for release 8.36. New programs are recommended to use the 245new library. Programs that use the original (PCRE1) API will need changing 246before linking with the new library. 247 248**** 249