Blame NEWS

Packit Service 02e2fd
News about PCRE2 releases
Packit Service 02e2fd
-------------------------
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.32 10-September-2018
Packit Service 02e2fd
-------------------------------
Packit Service 02e2fd
Packit Service 02e2fd
This is another mainly bugfix and tidying release with a few minor
Packit Service 02e2fd
enhancements. These are the main ones:
Packit Service 02e2fd
Packit Service 02e2fd
1. pcre2grep now supports the inclusion of binary zeros in patterns that are
Packit Service 02e2fd
read from files via the -f option.
Packit Service 02e2fd
Packit Service 02e2fd
2. ./configure now supports --enable-jit=auto, which automatically enables JIT
Packit Service 02e2fd
if the hardware supports it.
Packit Service 02e2fd
Packit Service 02e2fd
3. In pcre2_dfa_match(), internal recursive calls no longer use the stack for
Packit Service 02e2fd
local workspace and local ovectors. Instead, an initial block of stack is
Packit Service 02e2fd
reserved, but if this is insufficient, heap memory is used. The heap limit
Packit Service 02e2fd
parameter now applies to pcre2_dfa_match().
Packit Service 02e2fd
Packit Service 02e2fd
4. Updated to Unicode version 11.0.0.
Packit Service 02e2fd
Packit Service 02e2fd
5. (*ACCEPT:ARG), (*FAIL:ARG), and (*COMMIT:ARG) are now supported.
Packit Service 02e2fd
Packit Service 02e2fd
6. Added support for \N{U+dddd}, but only in Unicode mode.
Packit Service 02e2fd
Packit Service 02e2fd
7. Added support for (?^) to unset all imnsx options.
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.31 12-February-2018
Packit Service 02e2fd
------------------------------
Packit Service 02e2fd
Packit Service 02e2fd
This is mainly a bugfix and tidying release (see ChangeLog for full details).
Packit Service 02e2fd
However, there are some minor enhancements.
Packit Service 02e2fd
Packit Service 02e2fd
1. New pcre2_config() options: PCRE2_CONFIG_NEVER_BACKSLASH_C and
Packit Service 02e2fd
PCRE2_CONFIG_COMPILED_WIDTHS.
Packit Service 02e2fd
Packit Service 02e2fd
2. New pcre2_pattern_info() option PCRE2_INFO_EXTRAOPTIONS to retrieve the
Packit Service 02e2fd
extra compile time options.
Packit Service 02e2fd
Packit Service 02e2fd
3. There are now public names for all the pcre2_compile() error numbers.
Packit Service 02e2fd
Packit Service 02e2fd
4. Added PCRE2_CALLOUT_STARTMATCH and PCRE2_CALLOUT_BACKTRACK bits to a new
Packit Service 02e2fd
field callout_flags in callout blocks.
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.30 14-August-2017
Packit Service 02e2fd
----------------------------
Packit Service 02e2fd
Packit Service 02e2fd
The full list of changes that includes bugfixes and tidies is, as always, in
Packit Service 02e2fd
ChangeLog. These are the most important new features:
Packit Service 02e2fd
Packit Service 02e2fd
1. The main interpreter, pcre2_match(), has been refactored into a new version
Packit Service 02e2fd
that does not use recursive function calls (and therefore the system stack) for
Packit Service 02e2fd
remembering backtracking positions. This makes --disable-stack-for-recursion a
Packit Service 02e2fd
NOOP. The new implementation allows backtracking into recursive group calls in
Packit Service 02e2fd
patterns, making it more compatible with Perl, and also fixes some other
Packit Service 02e2fd
previously hard-to-do issues. For patterns that have a lot of backtracking, the
Packit Service 02e2fd
heap is now used, and there is an explicit limit on the amount, settable by
Packit Service 02e2fd
pcre2_set_heap_limit() or (*LIMIT_HEAP=xxx). The "recursion limit" is retained,
Packit Service 02e2fd
but is renamed as "depth limit" (though the old names remain for
Packit Service 02e2fd
compatibility).
Packit Service 02e2fd
Packit Service 02e2fd
There is also a change in the way callouts from pcre2_match() are handled. The
Packit Service 02e2fd
offset_vector field in the callout block is no longer a pointer to the
Packit Service 02e2fd
actual ovector that was passed to the matching function in the match data
Packit Service 02e2fd
block. Instead it points to an internal ovector of a size large enough to hold
Packit Service 02e2fd
all possible captured substrings in the pattern.
Packit Service 02e2fd
Packit Service 02e2fd
2. The new option PCRE2_ENDANCHORED insists that a pattern match must end at
Packit Service 02e2fd
the end of the subject.
Packit Service 02e2fd
Packit Service 02e2fd
3. The new option PCRE2_EXTENDED_MORE implements Perl's /xx feature, and
Packit Service 02e2fd
pcre2test is upgraded to support it. Setting within the pattern by (?xx) is
Packit Service 02e2fd
also supported.
Packit Service 02e2fd
Packit Service 02e2fd
4. (?n) can be used to set PCRE2_NO_AUTO_CAPTURE, because Perl now has this.
Packit Service 02e2fd
Packit Service 02e2fd
5. Additional compile options in the compile context are now available, and the
Packit Service 02e2fd
first two are: PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES and
Packit Service 02e2fd
PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL.
Packit Service 02e2fd
Packit Service 02e2fd
6. The newline type PCRE2_NEWLINE_NUL is now available.
Packit Service 02e2fd
Packit Service 02e2fd
7. The match limit value now also applies to pcre2_dfa_match() as there are
Packit Service 02e2fd
patterns that can use up a lot of resources without necessarily recursing very
Packit Service 02e2fd
deeply.
Packit Service 02e2fd
Packit Service 02e2fd
8. The option REG_PEND (a GNU extension) is now available for the POSIX
Packit Service 02e2fd
wrapper. Also there is a new option PCRE2_LITERAL which is used to support
Packit Service 02e2fd
REG_NOSPEC.
Packit Service 02e2fd
Packit Service 02e2fd
9. PCRE2_EXTRA_MATCH_LINE and PCRE2_EXTRA_MATCH_WORD are implemented for the
Packit Service 02e2fd
benefit of pcre2grep, and pcre2grep's -F, -w, and -x options are re-implemented
Packit Service 02e2fd
using PCRE2_LITERAL, PCRE2_EXTRA_MATCH_WORD, and PCRE2_EXTRA_MATCH_LINE. This
Packit Service 02e2fd
is tidier and also fixes some bugs.
Packit Service 02e2fd
Packit Service 02e2fd
10. The Unicode tables are upgraded from Unicode 8.0.0 to Unicode 10.0.0.
Packit Service 02e2fd
Packit Service 02e2fd
11. There are some experimental functions for converting foreign patterns
Packit Service 02e2fd
(globs and POSIX patterns) into PCRE2 patterns.
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.23 14-February-2017
Packit Service 02e2fd
------------------------------
Packit Service 02e2fd
Packit Service 02e2fd
1. ChangeLog has the details of a lot of bug fixes and tidies.
Packit Service 02e2fd
Packit Service 02e2fd
2. There has been a major re-factoring of the pcre2_compile.c file. Most syntax
Packit Service 02e2fd
checking is now done in the pre-pass that identifies capturing groups. This has
Packit Service 02e2fd
reduced the amount of duplication and made the code tidier. While doing this,
Packit Service 02e2fd
some minor bugs and Perl incompatibilities were fixed (see ChangeLog for
Packit Service 02e2fd
details.)
Packit Service 02e2fd
Packit Service 02e2fd
3. Back references are now permitted in lookbehind assertions when there are
Packit Service 02e2fd
no duplicated group numbers (that is, (?| has not been used), and, if the
Packit Service 02e2fd
reference is by name, there is only one group of that name. The referenced
Packit Service 02e2fd
group must, of course be of fixed length.
Packit Service 02e2fd
Packit Service 02e2fd
4. \g{+<number>} (e.g. \g{+2} ) is now supported. It is a "forward back
Packit Service 02e2fd
reference" and can be useful in repetitions (compare \g{-<number>} ). Perl does
Packit Service 02e2fd
not recognize this syntax.
Packit Service 02e2fd
Packit Service 02e2fd
5. pcre2grep now automatically expands its buffer up to a maximum set by
Packit Service 02e2fd
--max-buffer-size.
Packit Service 02e2fd
Packit Service 02e2fd
6. The -t option (grand total) has been added to pcre2grep.
Packit Service 02e2fd
Packit Service 02e2fd
7. A new function called pcre2_code_copy_with_tables() exists to copy a
Packit Service 02e2fd
compiled pattern along with a private copy of the character tables that is
Packit Service 02e2fd
uses.
Packit Service 02e2fd
Packit Service 02e2fd
8. A user supplied a number of patches to upgrade pcre2grep under Windows and
Packit Service 02e2fd
tidy the code.
Packit Service 02e2fd
Packit Service 02e2fd
9. Several updates have been made to pcre2test and test scripts (see
Packit Service 02e2fd
ChangeLog).
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.22 29-July-2016
Packit Service 02e2fd
--------------------------
Packit Service 02e2fd
Packit Service 02e2fd
1. ChangeLog has the details of a number of bug fixes.
Packit Service 02e2fd
Packit Service 02e2fd
2. The POSIX wrapper function regcomp() did not used to support back references
Packit Service 02e2fd
and subroutine calls if called with the REG_NOSUB option. It now does.
Packit Service 02e2fd
Packit Service 02e2fd
3. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
Packit Service 02e2fd
pattern.
Packit Service 02e2fd
Packit Service 02e2fd
4. Support for string callouts is added to pcre2grep.
Packit Service 02e2fd
Packit Service 02e2fd
5. Added the PCRE2_NO_JIT option to pcre2_match().
Packit Service 02e2fd
Packit Service 02e2fd
6. The pcre2_get_error_message() function now returns with a negative error
Packit Service 02e2fd
code if the error number it is given is unknown.
Packit Service 02e2fd
Packit Service 02e2fd
7. Several updates have been made to pcre2test and test scripts (see
Packit Service 02e2fd
ChangeLog).
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.21 12-January-2016
Packit Service 02e2fd
-----------------------------
Packit Service 02e2fd
Packit Service 02e2fd
1. Many bugs have been fixed. A large number of them were provoked only by very
Packit Service 02e2fd
strange pattern input, and were discovered by fuzzers. Some others were
Packit Service 02e2fd
discovered by code auditing. See ChangeLog for details.
Packit Service 02e2fd
Packit Service 02e2fd
2. The Unicode tables have been updated to Unicode version 8.0.0.
Packit Service 02e2fd
Packit Service 02e2fd
3. For Perl compatibility in EBCDIC environments, ranges such as a-z in a
Packit Service 02e2fd
class, where both values are literal letters in the same case, omit the
Packit Service 02e2fd
non-letter EBCDIC code points within the range.
Packit Service 02e2fd
Packit Service 02e2fd
4. There have been a number of enhancements to the pcre2_substitute() function,
Packit Service 02e2fd
giving more flexibility to replacement facilities. It is now also possible to
Packit Service 02e2fd
cause the function to return the needed buffer size if the one given is too
Packit Service 02e2fd
small.
Packit Service 02e2fd
Packit Service 02e2fd
5. The PCRE2_ALT_VERBNAMES option causes the "name" parts of special verbs such
Packit Service 02e2fd
as (*THEN:name) to be processed for backslashes and to take note of
Packit Service 02e2fd
PCRE2_EXTENDED.
Packit Service 02e2fd
Packit Service 02e2fd
6. PCRE2_INFO_HASBACKSLASHC makes it possible for a client to find out if a
Packit Service 02e2fd
pattern uses \C, and --never-backslash-C makes it possible to compile a version
Packit Service 02e2fd
PCRE2 in which the use of \C is always forbidden.
Packit Service 02e2fd
Packit Service 02e2fd
7. A limit to the length of pattern that can be handled can now be set by
Packit Service 02e2fd
calling pcre2_set_max_pattern_length().
Packit Service 02e2fd
Packit Service 02e2fd
8. When matching an unanchored pattern, a match can be required to begin within
Packit Service 02e2fd
a given number of code units after the start of the subject by calling
Packit Service 02e2fd
pcre2_set_offset_limit().
Packit Service 02e2fd
Packit Service 02e2fd
9. The pcre2test program has been extended to test new facilities, and it can
Packit Service 02e2fd
now run the tests when LF on its own is not a valid newline sequence.
Packit Service 02e2fd
Packit Service 02e2fd
10. The RunTest script has also been updated to enable more tests to be run.
Packit Service 02e2fd
Packit Service 02e2fd
11. There have been some minor performance enhancements.
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.20 30-June-2015
Packit Service 02e2fd
--------------------------
Packit Service 02e2fd
Packit Service 02e2fd
1. Callouts with string arguments and the pcre2_callout_enumerate() function
Packit Service 02e2fd
have been implemented.
Packit Service 02e2fd
Packit Service 02e2fd
2. The PCRE2_NEVER_BACKSLASH_C option, which locks out the use of \C, is added.
Packit Service 02e2fd
Packit Service 02e2fd
3. The PCRE2_ALT_CIRCUMFLEX option lets ^ match after a newline at the end of a
Packit Service 02e2fd
subject in multiline mode.
Packit Service 02e2fd
Packit Service 02e2fd
4. The way named subpatterns are handled has been refactored. The previous
Packit Service 02e2fd
approach had several bugs.
Packit Service 02e2fd
Packit Service 02e2fd
5. The handling of \c in EBCDIC environments has been changed to conform to the
Packit Service 02e2fd
perlebcdic document. This is an incompatible change.
Packit Service 02e2fd
Packit Service 02e2fd
6. Bugs have been mended, many of them discovered by fuzzers.
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.10 06-March-2015
Packit Service 02e2fd
---------------------------
Packit Service 02e2fd
Packit Service 02e2fd
1. Serialization and de-serialization functions have been added to the API,
Packit Service 02e2fd
making it possible to save and restore sets of compiled patterns, though
Packit Service 02e2fd
restoration must be done in the same environment that was used for compilation.
Packit Service 02e2fd
Packit Service 02e2fd
2. The (*NO_JIT) feature has been added; this makes it possible for a pattern
Packit Service 02e2fd
creator to specify that JIT is not to be used.
Packit Service 02e2fd
Packit Service 02e2fd
3. A number of bugs have been fixed. In particular, bugs that caused building
Packit Service 02e2fd
on Windows using CMake to fail have been mended.
Packit Service 02e2fd
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.00 05-January-2015
Packit Service 02e2fd
-----------------------------
Packit Service 02e2fd
Packit Service 02e2fd
Version 10.00 is the first release of PCRE2, a revised API for the PCRE
Packit Service 02e2fd
library. Changes prior to 10.00 are logged in the ChangeLog file for the old
Packit Service 02e2fd
API, up to item 20 for release 8.36. New programs are recommended to use the
Packit Service 02e2fd
new library. Programs that use the original (PCRE1) API will need changing
Packit Service 02e2fd
before linking with the new library.
Packit Service 02e2fd
Packit Service 02e2fd
****