This is a regular semi-annual release, incorporating a few new features and several maintenance and build improvements.
This release is available as before as a (signed) Git tag, or alternatively as a (signed) tarball of the Git tag (attestation).
NEWS
Only changes to behaviour, changes to the API, and other significant changes are described here. Please see the ChangeLog and Git log for further details.
-
(Powerful new feature) Pattern recursion of the form
(?1(GROUP_NAME_OR_NUM,...))acts as a subroutine call which additionally
returns the listed capturing groups to the calling context. -
(Significant bugfix) Fixed a crash in pcre2_callout_enumerate() which is easily reachable on any pattern that contains a Unicode character class. If your application uses this function, please read the details for this change and evaluate its severity for your application.
-
(Build change) There are now linker scripts to enable symbol versioning for the PCRE2 dynamic libraries. Downstream Linux distributions may make use of this, or disable it with the new Autoconf
--disable-symversand CMake-DPCRE2_SYMVERSoptions. Linux, Solaris, and FreeBSD (GNU ld, LLVM lld, and Solaris ld) are tested and supported. -
(New API function) Added pcre2_next_match(). This function makes it both simpler and safer for clients to iterate over all matches in a subject. The documentation in
pcre2apialso provides improved guidance in the section "Iterating over all matches". -
(Minor API addition) Added the PCRE2_CONFIG_EFFECTIVE_LINKSIZE option to pcre2_config().
-
(Minor replacement syntax extension) Added support for
$+replacement to pcre2_substitute(). -
(Build change) Modernize the CMake build files, to use the
$<BUILD_INTERFACE:...>,$<INSTALL_INTERFACE:...>andinstall(EXPORT...)expressions to export the PCRE2 targets.