@@ -2,6 +2,86 @@ ChangeLog for PCRE
2
2
------------------
3
3
4
4
5
+ Version 2.08 31-Aug-99
6
+ ----------------------
7
+
8
+ 1. When startoffset was not zero and the pattern began with ".*", PCRE was not
9
+ trying to match at the startoffset position, but instead was moving forward to
10
+ the next newline as if a previous match had failed.
11
+
12
+ 2. pcretest was not making use of PCRE_NOTEMPTY when repeating for /g and /G,
13
+ and could get into a loop if a null string was matched other than at the start
14
+ of the subject.
15
+
16
+ 3. Added definitions of PCRE_MAJOR and PCRE_MINOR to pcre.h so the version can
17
+ be distinguished at compile time, and for completeness also added PCRE_DATE.
18
+
19
+ 5. Added Paul Sokolovsky's minor changes to make it easy to compile a Win32 DLL
20
+ in GnuWin32 environments.
21
+
22
+
23
+ Version 2.07 29-Jul-99
24
+ ----------------------
25
+
26
+ 1. The documentation is now supplied in plain text form and HTML as well as in
27
+ the form of man page sources.
28
+
29
+ 2. C++ compilers don't like assigning (void *) values to other pointer types.
30
+ In particular this affects malloc(). Although there is no problem in Standard
31
+ C, I've put in casts to keep C++ compilers happy.
32
+
33
+ 3. Typo on pcretest.c; a cast of (unsigned char *) in the POSIX regexec() call
34
+ should be (const char *).
35
+
36
+ 4. If NOPOSIX is defined, pcretest.c compiles without POSIX support. This may
37
+ be useful for non-Unix systems who don't want to bother with the POSIX stuff.
38
+ However, I haven't made this a standard facility. The documentation doesn't
39
+ mention it, and the Makefile doesn't support it.
40
+
41
+ 5. The Makefile now contains an "install" target, with editable destinations at
42
+ the top of the file. The pcretest program is not installed.
43
+
44
+ 6. pgrep -V now gives the PCRE version number and date.
45
+
46
+ 7. Fixed bug: a zero repetition after a literal string (e.g. /abcde{0}/) was
47
+ causing the entire string to be ignored, instead of just the last character.
48
+
49
+ 8. If a pattern like /"([^\\"]+|\\.)*"/ is applied in the normal way to a
50
+ non-matching string, it can take a very, very long time, even for strings of
51
+ quite modest length, because of the nested recursion. PCRE now does better in
52
+ some of these cases. It does this by remembering the last required literal
53
+ character in the pattern, and pre-searching the subject to ensure it is present
54
+ before running the real match. In other words, it applies a heuristic to detect
55
+ some types of certain failure quickly, and in the above example, if presented
56
+ with a string that has no trailing " it gives "no match" very quickly.
57
+
58
+ 9. A new runtime option PCRE_NOTEMPTY causes null string matches to be ignored;
59
+ other alternatives are tried instead.
60
+
61
+
62
+ Version 2.06 09-Jun-99
63
+ ----------------------
64
+
65
+ 1. Change pcretest's output for amount of store used to show just the code
66
+ space, because the remainder (the data block) varies in size between 32-bit and
67
+ 64-bit systems.
68
+
69
+ 2. Added an extra argument to pcre_exec() to supply an offset in the subject to
70
+ start matching at. This allows lookbehinds to work when searching for multiple
71
+ occurrences in a string.
72
+
73
+ 3. Added additional options to pcretest for testing multiple occurrences:
74
+
75
+ /+ outputs the rest of the string that follows a match
76
+ /g loops for multiple occurrences, using the new startoffset argument
77
+ /G loops for multiple occurrences by passing an incremented pointer
78
+
79
+ 4. PCRE wasn't doing the "first character" optimization for patterns starting
80
+ with \b or \B, though it was doing it for other lookbehind assertions. That is,
81
+ it wasn't noticing that a match for a pattern such as /\bxyz/ has to start with
82
+ the letter 'x'. On long subject strings, this gives a significant speed-up.
83
+
84
+
5
85
Version 2.05 21-Apr-99
6
86
----------------------
7
87
0 commit comments