diff --git a/AUTHORS b/AUTHORS index bec8a1e..11ef898 100644 --- a/AUTHORS +++ b/AUTHORS @@ -8,7 +8,7 @@ Email domain: gmail.com Retired from University of Cambridge Computing Service, Cambridge, England. -Copyright (c) 1997-2021 University of Cambridge +Copyright (c) 1997-2022 University of Cambridge All rights reserved @@ -19,7 +19,7 @@ Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu -Copyright(c) 2010-2021 Zoltan Herczeg +Copyright(c) 2010-2022 Zoltan Herczeg All rights reserved. @@ -30,7 +30,7 @@ Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu -Copyright(c) 2009-2021 Zoltan Herczeg +Copyright(c) 2009-2022 Zoltan Herczeg All rights reserved. #### diff --git a/CMakeLists.txt b/CMakeLists.txt index 065a612..7febf33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1056,13 +1056,13 @@ IF(MSVC AND INSTALL_MSVC_PDB) INSTALL(FILES ${PROJECT_BINARY_DIR}/pcre2-8.pdb ${PROJECT_BINARY_DIR}/pcre2-16.pdb ${PROJECT_BINARY_DIR}/pcre2-32.pdb - ${PROJECT_BINARY_DIR}/pcre2-posix.pdb + ${PROJECT_BINARY_DIR}/pcre2-posix.pdb DESTINATION bin CONFIGURATIONS RelWithDebInfo) INSTALL(FILES ${PROJECT_BINARY_DIR}/pcre2-8d.pdb ${PROJECT_BINARY_DIR}/pcre2-16d.pdb ${PROJECT_BINARY_DIR}/pcre2-32d.pdb - ${PROJECT_BINARY_DIR}/pcre2-posixd.pdb + ${PROJECT_BINARY_DIR}/pcre2-posixd.pdb DESTINATION bin CONFIGURATIONS Debug) ENDIF(MSVC AND INSTALL_MSVC_PDB) diff --git a/ChangeLog b/ChangeLog index c7b31f9..856250f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,8 +2,8 @@ Change Log for PCRE2 -------------------- -Version 10.40-RC1 xx-xxx-2021 ------------------------------ +Version 10.40 15-April-2022 +--------------------------- 1. Merged patch from @carenas (GitHub #35, 7db87842) to fix pcre2grep incorrect handling of multiple passes. @@ -39,8 +39,8 @@ pcre2_substitute(), and the replacement argument of the latter, if the pointer is NULL and the length is zero, treat as an empty string. Apparently a number of applications treat NULL/0 in this way. -14. Added support for Bidi_Class and a number of binary Unicode properties, -including Bidi_Control. +14. Added support for Bidi_Class and a number of binary Unicode properties, +including Bidi_Control. 15. Fix some minor issues raised by clang sanitize. @@ -58,13 +58,13 @@ including Bidi_Control. (c) Changed \p{scriptname} from being the same as \p{sc:scriptname} to being the same as \p{scx:scriptname} because this change happened in Perl at release 5.26. - - (d) The standard Unicode 4-letter abbreviations for script names are now + + (d) The standard Unicode 4-letter abbreviations for script names are now recognized. - + (e) In accordance with Unicode and Perl's "loose matching" rules, spaces, - hyphens, and underscores are ignored in property names, which are then - matched independent of case. + hyphens, and underscores are ignored in property names, which are then + matched independent of case. 18. The Python scripts in the maint directory have been refactored. There are now three scripts that generate pcre2_ucd.c, pcre2_ucp.h, and pcre2_ucptables.c @@ -83,7 +83,7 @@ Clarke PR#72. 20. Added -LP and -LS listing options to pcre2test. -21. A user discovered that the library names in CMakeLists.txt for MSVC +21. A user discovered that the library names in CMakeLists.txt for MSVC debugger (PDB) files were incorrect - perhaps never tried for PCRE2? 22. An item such as [Aa] is optimized into a caseless single character match. @@ -98,12 +98,12 @@ fully read in caseless matching. 24. Fixed an issue affecting recursions in JIT caused by duplicated data transfers. -25. Merged patch from @carenas (GitHub #96) which fixes some problems with +25. Merged patch from @carenas (GitHub #96) which fixes some problems with pcre2test and readline/readedit: * Use the right header for libedit in FreeBSD with autoconf * Really allow libedit with cmake - * Avoid using readline headers with libedit + * Avoid using readline headers with libedit Version 10.39 29-October-2021 diff --git a/LICENCE b/LICENCE index b1ec61b..2f3cd5c 100644 --- a/LICENCE +++ b/LICENCE @@ -26,7 +26,7 @@ Email domain: gmail.com Retired from University of Cambridge Computing Service, Cambridge, England. -Copyright (c) 1997-2021 University of Cambridge +Copyright (c) 1997-2022 University of Cambridge All rights reserved. @@ -37,7 +37,7 @@ Written by: Zoltan Herczeg Email local part: hzmester Email domain: freemail.hu -Copyright(c) 2010-2021 Zoltan Herczeg +Copyright(c) 2010-2022 Zoltan Herczeg All rights reserved. @@ -48,7 +48,7 @@ Written by: Zoltan Herczeg Email local part: hzmester Email domain: freemail.hu -Copyright(c) 2009-2021 Zoltan Herczeg +Copyright(c) 2009-2022 Zoltan Herczeg All rights reserved. diff --git a/Makefile.am b/Makefile.am index 4c5b2b5..b1adb6f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -667,6 +667,7 @@ EXTRA_DIST += \ testdata/testinput23 \ testdata/testinput24 \ testdata/testinput25 \ + testdata/testinput26 \ testdata/testinputEBC \ testdata/testoutput1 \ testdata/testoutput2 \ @@ -709,6 +710,7 @@ EXTRA_DIST += \ testdata/testoutput23 \ testdata/testoutput24 \ testdata/testoutput25 \ + testdata/testoutput26 \ testdata/testoutputEBC \ testdata/valgrind-jit.supp \ testdata/wintestinput3 \ diff --git a/NEWS b/NEWS index 4a74525..c9b8da2 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,38 @@ News about PCRE2 releases ------------------------- +Version 10.40 15-April-2022 +--------------------------- + +This is mostly a bug-fixing and code-tidying release. However, there are some +extensions to Unicode property handling: + +* Added support for Bidi_Class and a number of binary Unicode properties, +including Bidi_Control. + +* A number of changes to script matching for \p and \P: + + (a) Script extensions for a character are now coded as a bitmap instead of + a list of script numbers, which should be faster and does not need a + loop. + + (b) Added the syntax \p{script:xxx} and \p{script_extensions:xxx} (synonyms + sc and scx). + + (c) Changed \p{scriptname} from being the same as \p{sc:scriptname} to being + the same as \p{scx:scriptname} because this change happened in Perl at + release 5.26. + + (d) The standard Unicode 4-letter abbreviations for script names are now + recognized. + + (e) In accordance with Unicode and Perl's "loose matching" rules, spaces, + hyphens, and underscores are ignored in property names, which are then + matched independent of case. + +As always, see ChangeLog for a list of all changes (also the Git log). + + Version 10.39 29-October-2021 ----------------------------- diff --git a/README b/README index 58e86a4..7896944 100644 --- a/README +++ b/README @@ -120,7 +120,7 @@ to the directory where you want the files to be created. This command is a standard GNU "autoconf" configuration script, for which generic instructions are supplied in the file INSTALL. -The files in the GitHub repository do not contain "configure". If you have +The files in the GitHub repository do not contain "configure". If you have downloaded the PCRE2 source files from GitHub, before you can run "configure" you must run the shell script called autogen.sh. This runs a number of autotools to create a "configure" script (you must of course have the autotools @@ -194,10 +194,10 @@ library. They are also documented in the pcre2build man page. As well as supporting UTF strings, Unicode support includes support for the \P, \p, and \X sequences that recognize Unicode character properties. - However, only the basic two-letter properties such as Lu are supported. - Escape sequences such as \d and \w in patterns do not by default make use of - Unicode properties, but can be made to do so by setting the PCRE2_UCP option - or starting a pattern with (*UCP). + However, only a subset of Unicode properties are supported; see the + pcre2pattern man page for details. Escape sequences such as \d and \w in + patterns do not by default make use of Unicode properties, but can be made to + do so by setting the PCRE2_UCP option or starting a pattern with (*UCP). . You can build PCRE2 to recognize either CR or LF or the sequence CRLF, or any of the preceding, or any of the Unicode newline sequences, or the NUL (zero) @@ -417,7 +417,7 @@ The "configure" script builds the following files for the basic C library: . Makefile the makefile that builds the library . src/config.h build-time configuration options for the library . src/pcre2.h the public PCRE2 header file -. pcre2-config script that shows the building settings such as CFLAGS +. pcre2-config script that shows the building settings such as CFLAGS that were set for "configure" . libpcre2-8.pc ) . libpcre2-16.pc ) data for the pkg-config command @@ -577,9 +577,9 @@ at build time" for more details. Making new tarballs ------------------- -The command "make dist" creates two PCRE2 tarballs, in tar.gz and zip formats. -The command "make distcheck" does the same, but then does a trial build of the -new distribution to ensure that it works. +The command "make dist" creates three PCRE2 tarballs, in tar.gz, tar.bz2, and +zip formats. The command "make distcheck" does the same, but then does a trial +build of the new distribution to ensure that it works. If you have modified any of the man page sources in the doc directory, you should first run the PrepareRelease script before making a distribution. This @@ -608,13 +608,13 @@ is available. RunTest outputs a comment when it skips a test. Many (but not all) of the tests that are not skipped are run twice if JIT support is available. On the second run, JIT compilation is forced. This -testing can be suppressed by putting "nojit" on the RunTest command line. +testing can be suppressed by putting "-nojit" on the RunTest command line. The entire set of tests is run once for each of the 8-bit, 16-bit and 32-bit libraries that are enabled. If you want to run just one set of tests, call RunTest with either the -8, -16 or -32 option. -If valgrind is installed, you can run the tests under it by putting "valgrind" +If valgrind is installed, you can run the tests under it by putting "-valgrind" on the RunTest command line. To run pcre2test on just one or more specific test files, give their numbers as arguments to RunTest, for example: @@ -911,4 +911,4 @@ The distribution should contain the files listed below. Philip Hazel Email local part: Philip.Hazel Email domain: gmail.com -Last updated: 13 April 2022 +Last updated: 15 April 2022 diff --git a/configure.ac b/configure.ac index 3cbd7ee..9b4d796 100644 --- a/configure.ac +++ b/configure.ac @@ -10,14 +10,14 @@ dnl be defined as -RC2, for example. For real releases, it should be empty. m4_define(pcre2_major, [10]) m4_define(pcre2_minor, [40]) -m4_define(pcre2_prerelease, [-RC1]) -m4_define(pcre2_date, [2021-11-09]) +m4_define(pcre2_prerelease, []) +m4_define(pcre2_date, [2022-04-14]) # Libtool shared library interface versions (current:revision:age) -m4_define(libpcre2_8_version, [10:4:10]) -m4_define(libpcre2_16_version, [10:4:10]) -m4_define(libpcre2_32_version, [10:4:10]) -m4_define(libpcre2_posix_version, [3:1:0]) +m4_define(libpcre2_8_version, [11:0:11]) +m4_define(libpcre2_16_version, [11:0:11]) +m4_define(libpcre2_32_version, [11:0:11]) +m4_define(libpcre2_posix_version, [3:2:0]) # NOTE: The CMakeLists.txt file searches for the above variables in the first # 50 lines of this file. Please update that if the variables above are moved. diff --git a/doc/html/README.txt b/doc/html/README.txt index 67e46b4..7896944 100644 --- a/doc/html/README.txt +++ b/doc/html/README.txt @@ -114,12 +114,18 @@ Building PCRE2 using autotools The following instructions assume the use of the widely used "configure; make; make install" (autotools) process. -To build PCRE2 on system that supports autotools, first run the "configure" -command from the PCRE2 distribution directory, with your current directory set +If you have downloaded and unpacked a PCRE2 release tarball, run the +"configure" command from the PCRE2 directory, with your current directory set to the directory where you want the files to be created. This command is a standard GNU "autoconf" configuration script, for which generic instructions are supplied in the file INSTALL. +The files in the GitHub repository do not contain "configure". If you have +downloaded the PCRE2 source files from GitHub, before you can run "configure" +you must run the shell script called autogen.sh. This runs a number of +autotools to create a "configure" script (you must of course have the autotools +commands installed in order to do this). + Most commonly, people build PCRE2 within its own distribution directory, and in this case, on many systems, just running "./configure" is sufficient. However, the usual methods of changing standard defaults are available. For example: @@ -188,10 +194,10 @@ library. They are also documented in the pcre2build man page. As well as supporting UTF strings, Unicode support includes support for the \P, \p, and \X sequences that recognize Unicode character properties. - However, only the basic two-letter properties such as Lu are supported. - Escape sequences such as \d and \w in patterns do not by default make use of - Unicode properties, but can be made to do so by setting the PCRE2_UCP option - or starting a pattern with (*UCP). + However, only a subset of Unicode properties are supported; see the + pcre2pattern man page for details. Escape sequences such as \d and \w in + patterns do not by default make use of Unicode properties, but can be made to + do so by setting the PCRE2_UCP option or starting a pattern with (*UCP). . You can build PCRE2 to recognize either CR or LF or the sequence CRLF, or any of the preceding, or any of the Unicode newline sequences, or the NUL (zero) @@ -411,7 +417,7 @@ The "configure" script builds the following files for the basic C library: . Makefile the makefile that builds the library . src/config.h build-time configuration options for the library . src/pcre2.h the public PCRE2 header file -. pcre2-config script that shows the building settings such as CFLAGS +. pcre2-config script that shows the building settings such as CFLAGS that were set for "configure" . libpcre2-8.pc ) . libpcre2-16.pc ) data for the pkg-config command @@ -571,9 +577,9 @@ at build time" for more details. Making new tarballs ------------------- -The command "make dist" creates two PCRE2 tarballs, in tar.gz and zip formats. -The command "make distcheck" does the same, but then does a trial build of the -new distribution to ensure that it works. +The command "make dist" creates three PCRE2 tarballs, in tar.gz, tar.bz2, and +zip formats. The command "make distcheck" does the same, but then does a trial +build of the new distribution to ensure that it works. If you have modified any of the man page sources in the doc directory, you should first run the PrepareRelease script before making a distribution. This @@ -602,13 +608,13 @@ is available. RunTest outputs a comment when it skips a test. Many (but not all) of the tests that are not skipped are run twice if JIT support is available. On the second run, JIT compilation is forced. This -testing can be suppressed by putting "nojit" on the RunTest command line. +testing can be suppressed by putting "-nojit" on the RunTest command line. The entire set of tests is run once for each of the 8-bit, 16-bit and 32-bit libraries that are enabled. If you want to run just one set of tests, call RunTest with either the -8, -16 or -32 option. -If valgrind is installed, you can run the tests under it by putting "valgrind" +If valgrind is installed, you can run the tests under it by putting "-valgrind" on the RunTest command line. To run pcre2test on just one or more specific test files, give their numbers as arguments to RunTest, for example: @@ -905,4 +911,4 @@ The distribution should contain the files listed below. Philip Hazel Email local part: Philip.Hazel Email domain: gmail.com -Last updated: 29 October 2021 +Last updated: 15 April 2022 diff --git a/doc/html/pcre2api.html b/doc/html/pcre2api.html index 0a93d67..047e242 100644 --- a/doc/html/pcre2api.html +++ b/doc/html/pcre2api.html @@ -2640,8 +2640,8 @@ The subject string is passed to pcre2_match() as a pointer in startoffset. The length and offset are in code units, not characters. That is, they are in bytes for the 8-bit library, 16-bit code units for the 16-bit library, and 32-bit code units for the 32-bit library, whether or not -UTF processing is enabled. As a special case, if subject is NULL and -length is zero, the subject is assumed to be an empty string. If +UTF processing is enabled. As a special case, if subject is NULL and +length is zero, the subject is assumed to be an empty string. If length is non-zero, an error occurs if subject is NULL.
diff --git a/doc/html/pcre2pattern.html b/doc/html/pcre2pattern.html index d3047be..2c24301 100644 --- a/doc/html/pcre2pattern.html +++ b/doc/html/pcre2pattern.html @@ -776,7 +776,7 @@ can be used in any mode, though in 8-bit and 16-bit non-UTF modes these sequences are of course limited to testing characters whose code points are less than U+0100 and U+10000, respectively. In 32-bit non-UTF mode, code points greater than 0x10ffff (the Unicode limit) may be encountered. These are all -treated as being in the Unknown script and with an unassigned type. +treated as being in the Unknown script and with an unassigned type.
Matching characters by Unicode property is not fast, because PCRE2 has to do a @@ -821,8 +821,8 @@ interpretation at release 5.26 and PCRE2 changed at release 10.40.
Unassigned characters (and in non-UTF 32-bit mode, characters with code points greater than 0x10FFFF) are assigned the "Unknown" script. Others that are not -part of an identified script are lumped together as "Common". The current list -of recognized script names and their 4-character abbreviations can be obtained +part of an identified script are lumped together as "Common". The current list +of recognized script names and their 4-character abbreviations can be obtained by running this command:
pcre2test -LS diff --git a/doc/html/pcre2syntax.html b/doc/html/pcre2syntax.html index b0eb96d..8364c52 100644 --- a/doc/html/pcre2syntax.html +++ b/doc/html/pcre2syntax.html @@ -241,7 +241,7 @@ The recognized classes are: ES European separator ET European terminator FSI first strong isolate - L left-to-right + L left-to-right LRE left-to-right embedding LRI left-to-right isolate LRO left-to-right override @@ -254,7 +254,7 @@ The recognized classes are: RLI right-to-left isolate RLO right-to-left override S segment separator - WS which space + WS which space
-Similarly, for testing purposes, if the null_subject or -null_replacement modifier is set, the subject or replacement string +Similarly, for testing purposes, if the null_subject or +null_replacement modifier is set, the subject or replacement string pointers are passed as NULL, respectively, to the relevant functions.