products:pcre2:history
Delphi 12 Athens Updates Available!
To download, click your product: DIContainers, DIConverters, DICreole, DIFileFinder, DIGoogleReader, DIHtmlLabel, DIHtmlParser, DIMime, DIRegEx, DISQLite3, DITidy, DIUcl, DIUnicode, DIXml, YuBrotli, YuImage, YuNetSurf, YuOpenSSL, YuPcre2, YuPdf, YuStemmer, YuXmlSec, YuZip.
To download, click your product: DIContainers, DIConverters, DICreole, DIFileFinder, DIGoogleReader, DIHtmlLabel, DIHtmlParser, DIMime, DIRegEx, DISQLite3, DITidy, DIUcl, DIUnicode, DIXml, YuBrotli, YuImage, YuNetSurf, YuOpenSSL, YuPcre2, YuPdf, YuStemmer, YuXmlSec, YuZip.
Differences
This shows you the differences between two versions of the page.
— | products:pcre2:history [2024/03/25 18:53] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== YuPcre2: Version History ====== | ||
+ | {{page> | ||
+ | =====YuPcre2 v1.22.0 – 25 Mar 2024===== | ||
+ | |||
+ | Update to PCRE2 v10.43 final. | ||
+ | |||
+ | * Perl 5.34.0 changed the meaning of (for example) '' | ||
+ | * Perl allows spaces and/or horizontal tabs after '' | ||
+ | * Fix a bug that '' | ||
+ | * Changed the meaning of '' | ||
+ | * Changed the meaning of '' | ||
+ | * Fix a potential integer overflow in '' | ||
+ | * Updated handling of '' | ||
+ | * Within a pattern '' | ||
+ | * If '' | ||
+ | * Add a test for ridiculous ovector offset values to the substring extraction functions. | ||
+ | * In the 32-bit library, in non-UTF mode, a quantifier that followed a literal character with a value greater than or equal to $80000000 caused undefined behaviour. | ||
+ | * '' | ||
+ | * Fix '' | ||
+ | * Fix backref iterators when '' | ||
+ | * Refactor the handling of whole-pattern recursion '' | ||
+ | * Improved the test for looping recursion by checking the last referenced character as well as the current character. This allows some patterns that previously triggered the check to run to completion instead of giving the loop error. | ||
+ | * In 32-bit mode, the compiler looped for the pattern '' | ||
+ | * In caseless 32-bit mode with UCP (but not UTF) set, the character $ffffffff incorrectly matched any character that has more than one other case, in particular k and s. | ||
+ | * Fix accept and endanchored interaction in JIT. | ||
+ | * Fix backreferences with unset backref and non-greedy iterators in JIT. | ||
+ | * Improve the logic that checks for a list of starting code units – positive lookahead assertions are now ignored if the immediately following item is one that sets a mandatory starting character. For example, '' | ||
+ | * Fix incorrect class character matches in JIT. | ||
+ | * Insert omitted setting of subject length in match data at the end of '' | ||
+ | * Implemented '' | ||
+ | |||
+ | =====YuPcre2 v1.21.0 – 22 Nov 2023===== | ||
+ | |||
+ | * Support Delphi 12 Athens Win32 and Win64. | ||
+ | * Added '' | ||
+ | * Avoids overflow issues with the heap limit. | ||
+ | * Restrict the interaction between ASCII and non-ASCII characters for caseless matching and items like '' | ||
+ | * Added '' | ||
+ | * Added '' | ||
+ | * Unicode has been updated to 15.0.0. | ||
+ | * Add '' | ||
+ | * Fix an invalid match of ascii word classes when invalid utf is enabled. | ||
+ | * Update '' | ||
+ | * Add support for limited-length variable-length lookbehind assertions, with default maximum length 255 characters (same as Perl) but with a function to adjust the limit. | ||
+ | * Fixed a bug in '' | ||
+ | |||
+ | =====YuPcre2 v1.20.1 – 20 Dec 2022===== | ||
+ | |||
+ | * Fixed an issue in the backtracking optimization of character repeats in JIT. Furthermore optimize star repetitions, | ||
+ | * '' | ||
+ | * The JIT compiler was updated. | ||
+ | * Supplying an ovector count of more than 65535 to '' | ||
+ | |||
+ | =====YuPcre2 v1.20.0 – 27 Apr 2022===== | ||
+ | |||
+ | * Added support for Bidi_Class and a number of binary Unicode properties, including Bidi_Control. | ||
+ | * A number of changes to script matching for '' | ||
+ | - 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. | ||
+ | - Added the syntax '' | ||
+ | - Changed '' | ||
+ | - The standard Unicode 4-letter abbreviations for script names are now recognized. | ||
+ | - In accordance with Unicode and Perl's "loose matching" | ||
+ | * For the subject arguments of '' | ||
+ | * Add check for '' | ||
+ | * Speed up for maximizing character property matches. | ||
+ | * Fixes: | ||
+ | * An item such as '' | ||
+ | * Fixed a Unicode properrty matching issue in JIT. The character was not fully read in caseless matching. | ||
+ | * Fixed an issue affecting recursions in JIT caused by duplicated data transfers. | ||
+ | |||
+ | =====YuPcre2 v1.19.0 – 11 Feb 2022===== | ||
+ | |||
+ | * Fix incorrect detection of alternatives in first character search in JIT. | ||
+ | * Update to Unicode 14.0.0. | ||
+ | |||
+ | =====YuPcre2 1.18.0 – 5 Oct 2021===== | ||
+ | |||
+ | * Fix invalid single character repetition issues in JIT when the repetition is inside a capturing bracket and the bracket is preceeded by character literals. | ||
+ | * Implemented faster case-independent "first code unit" search for unanchored patterns in 8-bit mode in the interpreters. Instead of just remembering whether one case matched or not, it remembers the position of a previous match so as to avoid unnecessary repeated searching. | ||
+ | * Perl now locks out '' | ||
+ | * Re-enable a JIT optimization which was unintentionally disabled in 10.35. | ||
+ | * There is a loop counter to catch excessively crazy patterns when checking the lengths of lookbehinds at compile time. This was incorrectly getting reset whenever a lookahead was processed, leading to some fuzzer-generated patterns taking a very long time to compile when '' | ||
+ | |||
+ | =====YuPcre2 1.17.0 – 16 Sep 2021===== | ||
+ | |||
+ | * Support Delphi 11 Alexandria Win32 and Win64. | ||
+ | |||
+ | =====YuPcre2 1.16.0 – 14 Jul 2021===== | ||
+ | |||
+ | * Fix two bugs related to over-large numbers so the behaviour is now the same as Perl: | ||
+ | * A pattern such as '' | ||
+ | * A sequence such as '' | ||
+ | * The pattern '' | ||
+ | * Restore single character repetition optimization in JIT. | ||
+ | * Fix invalid single character repetition issues in JIT when the repetition is inside a capturing bracket and the bracket is preceeded by character literals. | ||
+ | |||
+ | =====YuPcre2 1.15.0 – 9 Dec 2020===== | ||
+ | |||
+ | * Improve the List, List2, Replace, and Replace2 methods so that the OnFormatVariable Sender argument can be queried for MatchedStr, SubStr, etc. This allows fine-tuned replacements based on the matched contents. Applies to '' | ||
+ | * Work around compiler bugs from Delphi 7 to Delphi 2009 which resulted in " | ||
+ | * Fix inifinite loop when a single byte newline is searched in JIT when invalid UTF-8 mode is enabled. | ||
+ | * If a pattern ended with '' | ||
+ | * Certain character ranges were incorrectly handled by an optimization in JIT. Furthermore a wrong offset was used to read a value from a buffer which could lead to memory overread. | ||
+ | * Fixed a bug with '' | ||
+ | * Fixed a bug in character set matching when JIT is enabled and both unicode scripts and unicode classes are present at the same time. | ||
+ | * Fixed a word boundary check bug in JIT when partial matching is enabled. | ||
+ | |||
+ | =====YuPcre2 1.14.0 – 5 Jun 2020===== | ||
+ | |||
+ | * Support Delphi 10.4 Sydney Win32 and Win64. | ||
+ | |||
+ | =====YuPcre2 1.13.0 – 12 May 2020===== | ||
+ | |||
+ | ** Overview:** | ||
+ | |||
+ | - Capturing groups that contain recursive backreferences to themselves are no longer automatically atomic. | ||
+ | - New option for '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | - If '' | ||
+ | - The character tables (for low-valued characters) can now more easily be saved and restored in binary. | ||
+ | - Updated to Unicode 13.0.0. | ||
+ | |||
+ | ** Details: ** | ||
+ | |||
+ | * Fix a JIT bug which allowed to read the fields of the compiled pattern before its existence is checked. | ||
+ | * Back in the PCRE1 days, capturing groups that contained recursive back references to themselves were atomic because after the end a repeated group, the captured substrings had their values from the final repetition, not from an earlier repetition that might be the destination of a backtrack. This feature was documented, and was carried over into PCRE2. However, it has now been realized that the PCRE2 made this atomicizing unnecessary, | ||
+ | * Added '' | ||
+ | * When an assertion is repeated, PCRE2 used to limit the maximum repetition to 1, believing that repeating an assertion is pointless. However, if a positive assertion contains capturing groups, repetition can be useful. In any case, an assertion could always be wrapped in a repeated group. The only restriction that is now imposed is that an unlimited maximum is changed to one more than the minimum. | ||
+ | * Fix '' | ||
+ | * The JIT stack is now freed when the low-level stack allocation fails. | ||
+ | * '' | ||
+ | * Put a limit of 1000 on recursive calls when studying a pattern to search nested groups for starting code units, in order to avoid stack overflow issues. If the limit is reached, it just gives up trying for this optimization. | ||
+ | * Restore the control verb chain list when exiting from a recurse function in JIT. | ||
+ | * Fix a crash which occurs when the character type of an invalid UTF character is decoded in JIT. | ||
+ | * When PCRE2_UCP is set without PCRE2_UTF, Unicode character properties are used for upper/lower case computations on characters whose code points are greater than 127. | ||
+ | * The function for checking UTF-16 validity was returning an incorrect offset for the start of the error when a high surrogate was not followed by a valid low surrogate. This caused incorrect behaviour, for example when '' | ||
+ | * If a '' | ||
+ | * '' | ||
+ | |||
+ | =====YuPcre2 1.12.0 – 24 Dec 2019===== | ||
+ | |||
+ | * Add a check for the maximum number of capturing subpatterns, | ||
+ | * Improve the invalid utf32 support of the JIT compiler. Now it correctly detects invalid characters in the 0xd800-0xdfff range. | ||
+ | * Fix minor typo bug in JIT compile when \X is used in a non-UTF string. | ||
+ | * Add support for matching in invalid UTF strings to the '' | ||
+ | * Adjust the limit for "must have" code unit searching, in particular, increase it substantially for non-anchored patterns. | ||
+ | * Allow '' | ||
+ | * Some changes to the way the minimum subject length is handled: | ||
+ | * When '' | ||
+ | * An incorrect minimum length could be calculated for a pattern that contained '' | ||
+ | * When no minimum length is set by the normal scan, but a first and/or last code unit is recorded, set the minimum to 1 or 2 as appropriate. | ||
+ | * When a pattern contains multiple groups with the same number, a back reference cannot know which one to scan for a minimum length. This used to cause the minimum length finder to give up with no result. Now it treats such references as not adding to the minimum length (which it should have done all along). | ||
+ | * Furthermore, | ||
+ | * A '' | ||
+ | * The quantifier '' | ||
+ | * DFA matching (using '' | ||
+ | * Check for integer overflow when computing lookbehind lengths. | ||
+ | * Implement non-atomic positive lookaround assertions. | ||
+ | * If a lookbehind contained a lookahead that contained another lookbehind within it, the nested lookbehind was not correctly processed. For example, if '' | ||
+ | * Implemented '' | ||
+ | * Two alterations to partial matching: | ||
+ | * The definition of a partial match is slightly changed: if a pattern contains any lookbehinds, | ||
+ | * Similarly, if a pattern could match an empty string, an empty partial match may be given. Example: '' | ||
+ | * An empty string partial hard match can be returned for '' | ||
+ | * A branch that started with '' | ||
+ | * Corrected '' | ||
+ | * Upgraded to Unicode 12.1.0. | ||
+ | * If the length of one branch of a group exceeded 65535 (the maximum value that is remembered as a minimum length), the whole group' | ||
+ | * The " | ||
+ | * Add the '' | ||
+ | * The start-up optimization that looks for a unique initial matching code unit in the interpretive engines uses memchr() in 8-bit mode. When the search is caseless, it was doing so inefficiently, | ||
+ | * While scanning to find the minimum length of a group, if any branch has minimum length zero, there is no need to scan any subsequent branches (a small compile-time performance improvement). | ||
+ | * Add underflow check in JIT which may occur when the value of subject string pointer is close to 0. | ||
+ | * Arrange for classes such as '' | ||
+ | * Improve the bitmap of starting bytes for positive classes that include wide characters, but no property types, in UTF-8 mode. Previously, on encountering such a class, the bits for all bytes greater than $c4 were set, thus specifying any character with codepoint %%>=%% $100. Now the only bits that are set are for the relevant bytes that start the wide characters. This can give a noticeable performance improvement. | ||
+ | * If the bitmap of starting code units contains only 1 or 2 bits, replace it with a single starting code unit (1 bit) or a caseless single starting code unit if the two relevant characters are case-partners. This is particularly relevant to the 8-bit library, though it applies to all. It can give a performance boost for patterns such as '' | ||
+ | * If a non-ASCII character was the first in a starting assertion in a caseless match, the "first code unit" optimization did not get the casing right, and the assertion failed to match a character in the other case if it did not start with the same code unit. | ||
+ | * Detect empty matches in JIT. | ||
+ | * Fix a JIT bug which allowed to read the fields of the compiled pattern before its existence is checked. | ||
+ | * Capturing groups that contained recursive back references to themselves are no longer atomic. | ||
+ | |||
+ | =====YuPcre2 1.11.0 – 8 Oct 2019===== | ||
+ | |||
+ | * Fix subject buffer overread in JIT when UTF is disabled and '' | ||
+ | * Added support for callouts from '' | ||
+ | * Fix an xclass matching issue in JIT. | ||
+ | * Implement '' | ||
+ | * Implement the Perl 5.28 experimental alphabetic names for atomic groups and lookaround assertions, for example, '' | ||
+ | * Implement the new Perl " | ||
+ | * Implement '' | ||
+ | * If a pattern started with a subroutine call that had a quantifier with a minimum of zero, an incorrect "match must start with this character" | ||
+ | * The heap limit checking code in '' | ||
+ | * If a pattern started with '' | ||
+ | * With '' | ||
+ | * '' | ||
+ | * The '' | ||
+ | * When '' | ||
+ | * Implemented '' | ||
+ | * Compile '' | ||
+ | * Disable SSE2 JIT optimizations in x86 CPUs when SSE2 is not available. | ||
+ | * Improve DIUtils.pas Unicode processing to support Unicode Code Points from $000000 to $10FFFF. Adjust remaining source code accordingly. | ||
+ | * Update DIUtils.pas Unicode functions to Unicode 12.1.0. | ||
+ | * Remove '' | ||
+ | |||
+ | =====YuPcre2 1.10.0 – 7 Mar 2019===== | ||
+ | |||
+ | * Fix: '' | ||
+ | * Adjust '' | ||
+ | |||
+ | =====YuPcre2 1.9.2 – 8 Jan 2019===== | ||
+ | |||
+ | * Matching the pattern '' | ||
+ | * When returning an error from '' | ||
+ | * Refactored '' | ||
+ | * In '' | ||
+ | * When checking to see if a lookbehind is of fixed length, lookaheads were correctly ignored, but qualifiers on lookaheads were not being ignored, leading to an incorrect " | ||
+ | * Updated to Unicode version 11.0.0. As well as the usual addition of new scripts and characters, this involved re-jigging the grapheme break property algorithm because Unicode has changed the way emojis are handled. | ||
+ | * Fixed an obscure bug that struck when there were two atomic groups not separated by something with a backtracking point. There could be an incorrect backtrack into the first of the atomic groups. A complicated example is '' | ||
+ | * '' | ||
+ | * A '' | ||
+ | * Add support for '' | ||
+ | * Add support for '' | ||
+ | * The '' | ||
+ | * In certain circumstances, | ||
+ | * When serializing a pattern, set the memctl, executable_jit, | ||
+ | * In a pattern such as '' | ||
+ | * If the only branch in a conditional subpattern was anchored, the whole subpattern was treated as anchored, when it should not have been, since the assumed empty second branch cannot be anchored. Demonstrated by test patterns such as '' | ||
+ | * A repeated conditional subpattern that could match an empty string was always assumed to be unanchored. Now it it checked just like any other repeated conditional subpattern, and can be found to be anchored if the minimum quantifier is one or more. | ||
+ | |||
+ | =====YuPcre2 1.9.1 – 1 Jan 2019===== | ||
+ | |||
+ | * Fix '' | ||
+ | * In YuPcre2_RegEx2.pas, | ||
+ | |||
+ | =====YuPcre2 1.9.0 – 24 Dec 2018===== | ||
+ | |||
+ | * Support Delphi 10.3 Rio Win32 and Win64. | ||
+ | |||
+ | =====YuPcre2 1.8.0 – 2 Mar 2018===== | ||
+ | |||
+ | * Add new '' | ||
+ | * Defined public names for all the '' | ||
+ | * When an assertion contained (*ACCEPT) it caused all open capturing groups to be closed (as for a non-assertion ACCEPT), which was wrong and could lead to misbehaviour for subsequent references to groups that started outside the assertion. ACCEPT in an assertion now closes only those groups that were started within that assertion. | ||
+ | * Although '' | ||
+ | * If a backreference with a minimum repeat count of zero was first in a pattern, apart from assertions, an incorrect first matching character could be recorded. For example, for the pattern '' | ||
+ | * Characters in a leading positive assertion are considered for recording a first character of a match when the rest of the pattern does not provide one. However, a character in a non-assertive group within a leading assertion such as in the pattern '' | ||
+ | * Allocate a single callout block on the stack at the start of '' | ||
+ | * Save the extra compile options (set in the compile context) with the compiled pattern (they were not previously saved), add '' | ||
+ | * Added '' | ||
+ | * When '' | ||
+ | * Code for giving up a non-partial match after failing to find a starting code unit anywhere in the subject was missing when searching for one of a number of code units (the bitmap case) in both '' | ||
+ | * The JIT compiler has been updated. | ||
+ | * Avoid pointer overflow for unset captures in '' | ||
+ | * Auto-possessification at the end of a capturing group was dependent on what follows the group (e.g. '' | ||
+ | |||
+ | =====YuPcre2 1.7.0 – 16 Aug 2017===== | ||
+ | |||
+ | * Implement '' | ||
+ | * Add an explicit limit on the amount of heap used by '' | ||
+ | * Extend auto-anchoring etc. to ignore groups with a zero qualifier and single-branch conditions with a false condition (e.g. DEFINE) at the start of a branch. For example, '' | ||
+ | * Implement '' | ||
+ | * Implement '' | ||
+ | * Implement extra compile options in the compile context: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * Implement newline type '' | ||
+ | * A lookbehind assertion that had a zero-length branch caused undefined behaviour when processed by '' | ||
+ | * The match limit value now also applies to '' | ||
+ | * Implement '' | ||
+ | * Increased the limit for searching for a "must be present" | ||
+ | * Arrange for anchored patterns to record and use "first code unit" data, because this can give a fast "no match" without searching for a " | ||
+ | * Upgraded the Unicode tables from Unicode 8.0.0 to Unicode 10.0.0. | ||
+ | * Update extended grapheme breaking rules to the latest set that are in Unicode Standard Annex #29. | ||
+ | * Added experimental foreign pattern conversion facilities ('' | ||
+ | * If a hyphen that follows a character class is the last character in the class, Perl does not give a warning. PCRE2 now also treats this as a literal. | ||
+ | * PCRE2 was not throwing an error for '' | ||
+ | |||
+ | =====YuPcre2 1.6.0 – 3 Apr 2017===== | ||
+ | |||
+ | **New features:** | ||
+ | |||
+ | * Support Delphi 10.2 Tokyo Win32 and Win64. | ||
+ | * The main interpreter, | ||
+ | * Now that '' | ||
+ | * '' | ||
+ | * Added the '' | ||
+ | * The depth (formerly recursion) limit now applies to DFA matching. | ||
+ | |||
+ | ** Bug fixes:** | ||
+ | |||
+ | * In the 32-bit library in non-UTF mode, an attempt to find a Unicode property for a character with a code point greater than 0x10ffff (the Unicode maximum) caused a crash. | ||
+ | * If a lookbehind assertion that contained a back reference to a group appearing later in the pattern was compiled with the '' | ||
+ | * Fix memory leak in '' | ||
+ | * Fix potential nil dereference in '' | ||
+ | * The alternative matching function, '' | ||
+ | |||
+ | =====YuPcre2 1.5.0 – 17 Feb 2017===== | ||
+ | |||
+ | **New features:** | ||
+ | |||
+ | * Implemented '' | ||
+ | * '' | ||
+ | |||
+ | **Optimizations: | ||
+ | |||
+ | * When a pattern is too complicated, | ||
+ | * The '' | ||
+ | * Detecting patterns that are too large inside the length-measuring loop saves processing ridiculously long patterns to their end. | ||
+ | * When autopossessifying, | ||
+ | * A pattern with very many explicit back references to a group that is a long way from the start of the pattern could take a long time to compile because searching for the referenced group in order to find the minimum length was being done repeatedly. Now up to 128 group minimum lengths are cached and the attempt to find a minimum length is abandoned if there is a back reference to a group whose number is greater than 128. (In that case, the pattern is so complicated that this optimization probably isn't worth it.) | ||
+ | |||
+ | **Bug fixes:** | ||
+ | |||
+ | * In any wide-character mode (8-bit UTF or any 16-bit or 32-bit mode), without PCRE2_UCP set, a negative character type such as '' | ||
+ | * There has been a major re-factoring of '' | ||
+ | - '' | ||
+ | - '' | ||
+ | - Perl always treats '' | ||
+ | - A recursion condition test such as '' | ||
+ | - A conditional recursion test such as '' | ||
+ | - A hyphen appearing immediately after a POSIX character class (for example '' | ||
+ | - An empty '' | ||
+ | * Automatic callouts are no longer generated before and after callouts in the pattern. | ||
+ | * A number of bugs have been mended relating to match start-up optimizations when the first thing in a pattern is a positive lookahead. These all applied only when '' | ||
+ | - A pattern such as '' | ||
+ | - Some patterns starting with an assertion that started with '' | ||
+ | * A pattern with '' | ||
+ | * Fix out-of-bounds read for partial matching of '' | ||
+ | * The appearance of '' | ||
+ | * If the starting offset was specified as greater than the subject length in a call to '' | ||
+ | * Incorrect data was compiled for a pattern with '' | ||
+ | * The limit in the auto-possessification code that was intended to catch overly-complicated patterns and not spend too much time auto-possessifying was being reset too often, resulting in very long compile times for some patterns. Now such patterns are no longer completely auto-possessified. | ||
+ | * Ignore '' | ||
+ | |||
+ | =====YuPcre2 1.4.0 – 31 Jul 2016===== | ||
+ | |||
+ | **New Features:** | ||
+ | |||
+ | * Implemented '' | ||
+ | * Implemented the '' | ||
+ | * Calls to '' | ||
+ | * Allow '' | ||
+ | |||
+ | **Bug fixes:** | ||
+ | |||
+ | * Detect unmatched closing parentheses and give the error in the pre-scan instead of later. Previously the pre-scan carried on and could give a misleading incorrect error message. For example, '' | ||
+ | * A pattern that included '' | ||
+ | * Detect missing closing parentheses during the pre-pass for group identification. | ||
+ | * Fix a racing condition in JIT. | ||
+ | * Fix register overwrite in JIT when SSE2 acceleration is enabled. | ||
+ | |||
+ | =====YuPcre2 1.3.0 – 7 May 2016===== | ||
+ | |||
+ | * Support Delphi 10.1 Berlin Win32 and Win64. | ||
+ | |||
+ | =====YuPcre2 1.2.0 – 4 Mar 2016===== | ||
+ | |||
+ | ** New features:** | ||
+ | |||
+ | * New option to limit the length of a pattern: '' | ||
+ | * New option to limit the offset of unanchored matches: '' | ||
+ | * New '' | ||
+ | |||
+ | ** Bug fixes:** | ||
+ | |||
+ | * In a character class such as '' | ||
+ | * Fixed integer overflow for patterns whose minimum matching length is very, very large. | ||
+ | * The special sequences '' | ||
+ | * Adding group information caching improves the speed of compiling when checking whether a group has a fixed length and/or could match an empty string, especially when recursion or subroutine calls are involved. | ||
+ | * If '' | ||
+ | * If '' | ||
+ | * Similarly, if an isolated '' | ||
+ | * The error for an invalid UTF pattern string always gave the code unit offset as zero instead of where the invalidity was found. | ||
+ | * An empty '' | ||
+ | * If both '' | ||
+ | * In a number of places '' | ||
+ | * If a pattern that was compiled with '' | ||
+ | * An escaped closing parenthesis in the " | ||
+ | |||
+ | =====YuPcre2 1.1.0 – 15 Sep 2015===== | ||
+ | |||
+ | * Support Delphi 10 Seattle Win32 and Win64. | ||
+ | |||
+ | * Match limit check added to recursion. | ||
+ | * Arrange for the UTF check in '' | ||
+ | * Improve first character match in JIT with SSE2 on x86. | ||
+ | * Fixed two assertion fails in JIT. | ||
+ | * Fixed a corner case of range optimization in JIT. | ||
+ | * Add the ${*MARK} facility to '' | ||
+ | * Implemented '' | ||
+ | * Fixed two issues in JIT. | ||
+ | |||
+ | =====YuPcre2 1.0.1 – 8 Aug 2015===== | ||
+ | |||
+ | * Pathological patterns containing many nested occurrences of '' | ||
+ | * A missing closing parenthesis for a callout with a string argument was not being diagnosed, possibly leading to a buffer overflow. | ||
+ | * A conditional group with only one branch has an implicit empty alternative branch and must therefore be treated as potentially matching an empty string. | ||
+ | * If '' | ||
+ | * Conditional groups whose condition was an assertion preceded by an explicit callout with a string argument might be incorrectly processed, especially if the string contained '' | ||
+ | * Fix buffer overflow while checking a UTF-8 string if the final multi-byte UTF-8 character was truncated. | ||
+ | * Finding the minimum matching length of complex patterns with back references and/or recursions can take a long time. There is now a cut-off that gives up trying to find a minimum length when things get too complex. | ||
+ | * An optimization has been added that speeds up finding the minimum matching length for patterns containing repeated capturing groups or recursions. | ||
+ | * If a pattern contained a back reference to a group whose number was duplicated as a result of appearing in a '' | ||
+ | * Added a check for integer overflow in conditions '' | ||
+ | * Fixed an issue when '' | ||
+ | * The JIT compiler did not restore the control verb head in case of '' | ||
+ | * The way recursive references such as '' | ||
+ | * A test for a back reference to a non-existent group was missing for items such as '' | ||
+ | * Error messages for syntax errors following '' | ||
+ | * Improve the performance of starting single character repetitions in JIT. | ||
+ | * '' | ||
+ | * Error messages for syntax errors in *LIMIT_MATCH and *LIMIT_RECURSION now give the right offset instead of zero. | ||
+ | * The JIT compiler should not check repeats after a {0,1} repeat byte code. | ||
+ | * The JIT compiler should restore the control chain for empty possessive repeats. | ||
+ | |||
+ | =====YuPcre2 1.0.0 – 22 Jul 2015===== | ||
+ | |||
+ | * Initial release. | ||
+ | |||
products/pcre2/history.txt · Last modified: 2024/03/25 18:53 by 127.0.0.1