Skip to content

PCRE v1 improvements & PCRE v2 support

Ævar Arnfjörð Bjarmason git 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest19 patches 2 repliesIn review
  2. v318 patches 3 repliesSuperseded
  3. v213 patches 0 repliesSuperseded

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/19grep: amend submodule recursion test in preparation for rx engine testingt/t7814-grep-recurse-submodules.sh+83 -830 replies
2/19grep: add tests for grep pattern types being passed to submodulest/t7814-grep-recurse-submodules.sh+49 -00 replies
3/19grep: submodule-related case statements should die if new fields are addedbuiltin/grep.c+4 -00 replies
4/19grep: remove redundant regflags assignment under PCREgrep.c+0 -10 replies
5/19grep: remove redundant `regflags &= ~REG_EXTENDED` assignmentsgrep.c+0 -34 replies
6/19Makefile & configure: reword outdated comment about PCREMakefile configure.ac+12 -60 replies
7/19grep: add a test for backreferences in PCRE patternst/t7810-grep.sh+7 -00 replies
8/19log: add exhaustive tests for pattern style options & configt/t4202-log.sh+76 -10 replies
9/19log: add -P as a synonym for --perl-regexpDocumentation/rev-list-options.txt revision.c t/t4202-log.sh+11 -10 replies
10/19grep & rev-list doc: stop promising libpcre for --perl-regexpDocumentation/git-grep.txt Documentation/rev-list-options.txt+11 -40 replies
11/19grep: make grep.patternType=[pcre|pcre1] a synonym for "perl"Documentation/config.txt grep.c t/t7810-grep.sh +1 more+26 -10 replies
12/19test-lib: rename the LIBPCRE prerequisite to PCREt/README t/t4202-log.sh t/t7810-grep.sh +4 more+28 -280 replies
13/19grep: change the internal PCRE macro names to be PCRE1Makefile grep.c grep.h +1 more+7 -70 replies
14/19grep: change the internal PCRE code & header names to be PCRE1builtin/grep.c grep.c grep.h +1 more+36 -360 replies
15/19perf: add a performance comparison test of grep -E and -Pt/perf/p7820-grep-engines.sh+25 -00 replies
16/19grep: add support for the PCRE v1 JIT APIgrep.c grep.h+31 -10 replies
17/19grep: add support for PCRE v2Documentation/config.txt Makefile builtin/grep.c +10 more+309 -270 replies
18/19grep: remove support for concurrent use of both PCRE v1 & v2Documentation/config.txt Makefile builtin/grep.c +8 more+65 -1390 replies
19/19Makefile & configure: make PCRE v2 the default PCRE implementationMakefile configure.ac+19 -200 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.

Read the v4 thread

Cover letter [PATCH v4 00/19] PCRE v1 improvements & PCRE v2 support

Trivial changes since last time. Just sending this because I'd like the copy in pu updated. Changes noted below:

Ævar Arnfjörð Bjarmason (19):
grep: amend submodule recursion test in preparation for rx engine
testing
grep: add tests for grep pattern types being passed to submodules

A s/PCRE/LIBPCRE/ on the test_have_prereq, now makes sense with the series in sequence (error added during rebasing).

grep: submodule-related case statements should die if new fields are
added
grep: remove redundant regflags assignment under PCRE
grep: remove redundant regflags &= ~REG_EXTENDED assignments

NEW: Similarly to how we didn't need to set regflags under PCRE, we were negating REG_EXTENDED under POSIX basic, without ever setting it in the first place.

This was just as confusing as the PCRE oddity, so remove it.

Makefile & configure: reword outdated comment about PCRE
grep: add a test for backreferences in PCRE patterns
log: add exhaustive tests for pattern style options & config
log: add -P as a synonym for --perl-regexp
grep & rev-list doc: stop promising libpcre for --perl-regexp
grep: make grep.patternType=[pcre|pcre1] a synonym for "perl"
test-lib: rename the LIBPCRE prerequisite to PCRE

One corresponding s/LIBPCRE/PCRE/ for the earlier change, see above.

grep: change the internal PCRE macro names to be PCRE1
grep: change the internal PCRE code & header names to be PCRE1
perf: add a performance comparison test of grep -E and -P
grep: add support for the PCRE v1 JIT API
grep: add support for PCRE v2

We now give proper error messages via pcre2_get_error_message() when pcre2_match() fails with errors other than "didn't match", the common case for this is that the engine gave up on a pathological pattern / input combination.

grep: remove support for concurrent use of both PCRE v1 & v2 Makefile & configure: make PCRE v2 the default PCRE implementation

Added more details to the commit message about why switching to PCRE v2 by default is a good idea. I hadn't noticed before that deep bugs in PCRE v1 are being WONTFIX'd on the bugtracker saying "nope, never fixing thath in v1, switch to v2".

 Documentation/git-grep.txt         |   7 +-
 Documentation/rev-list-options.txt |   9 +-
 Makefile                           |  39 +++++--
 builtin/grep.c                     |   4 +
 configure.ac                       |  81 ++++++++++++--
 grep.c                             | 222 +++++++++++++++++++++++++++++++------
 grep.h                             |  32 +++++-
 revision.c                         |   2 +-
 t/README                           |   4 +-
 t/perf/p7820-grep-engines.sh       |  25 +++++
 t/t4202-log.sh                     |  86 +++++++++++++-
 t/t7810-grep.sh                    |  41 ++++---
 t/t7812-grep-icase-non-ascii.sh    |   4 +-
 t/t7813-grep-icase-iso.sh          |  11 +-
 t/t7814-grep-recurse-submodules.sh | 215 +++++++++++++++++++++--------------
 t/test-lib.sh                      |   3 +-
 16 files changed, 613 insertions(+), 172 deletions(-)
 create mode 100755 t/perf/p7820-grep-engines.sh
Signature · 1 line
2.11.0