git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 00/13] PCRE v1 improvements & PCRE v2 support

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Apr 19, 2017, 22:40 UTC
Message-ID
<20170419224053.8920-1-avarab@gmail.com>

It's been a while since I sent v1 of this. I addressed most of the comments, except:

 * grep w/submodules doesn't properly pcre2 to submodule greps.
 * The critiqued adding runtime complexity by supporting both pcre1 &
   pcre2 via a switch is still there.

I wanted to get something out the door to review the other bits I've changed sooner than later, so I'm sending it in the state it's in. Depending on the consensus for those two issues, fixes for those can easily be addedd on top.

Comments on specific patches:
Ævar Arnfjörð Bjarmason (13):

Firstly, the "git grep --threads=N" patch is missing, that became the independent "[PATCH v2 0/8] grep threading cleanup & tests" series. See <20170416222102.2320-1-avarab@gmail.com>.

  grep: remove redundant regflags assignment under PCRE
No changes.
  Makefile & configure: reword outdated comment about PCRE

Fix comment copy as suggested by JK, and explained the confusing copy/pasting of Makefile comments to configure.ac in the commit message.

  grep: add a test for backreferences in PCRE patterns
No changes.
  log: add exhaustive tests for pattern style options & config

Now using [\d] instead of \((?=1) as a pattern to tell -E and -P patterns apart, as suggested by JK.

  log: add -P as a synonym for --perl-regexp
Uses the [\d] pattern now for a test, no other changes.
  grep & rev-list doc: stop promising libpcre for --perl-regexp
No changes.
  grep: make grep.patternType=[pcre|pcre1] a synonym for "perl"
Minor grammar fix in commit message.
  test-lib: rename the LIBPCRE prerequisite to PCRE
No changes.
  grep: change the internal PCRE macro names to be PCRE1
No changes.
  grep: change the internal PCRE code & header names to be PCRE1
No changes.
  perf: add a performance comparison test of grep -E and -P
NEW: Instead of my huge perl -MBenchmark one-liner I wrote a t/perf/
test for grep engine comparison which I'm citing for subsequent
changes.
  grep: add support for the PCRE v1 JIT API
NEW: Adds JIT support for PCRE v1.
  grep: add support for PCRE v2
Lots of changes:
 - Much smaller and hopefully less confusing commit message &
   discussion of performance differences.
 - Much improved PCRE v2 API use. The Zoltán Herczeg on the pcre-dev
   list helped a lot with that. Now less buggy & more performant.
 - Plugged a trivial memory leak I missed in v1.
Ævar Arnfjörð Bjarmason (13):
  grep: remove redundant regflags assignment under PCRE
  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
  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
 Documentation/config.txt           |   7 ++
 Documentation/git-grep.txt         |   4 +-
 Documentation/rev-list-options.txt |   6 +-
 Makefile                           |  28 ++++-
 configure.ac                       |  61 +++++++++-
 grep.c                             | 233 ++++++++++++++++++++++++++++++++-----
 grep.h                             |  36 +++++-
 revision.c                         |   2 +-
 t/README                           |  16 ++-
 t/perf/p7820-grep-engines.sh       |  25 ++++
 t/t4202-log.sh                     |  86 +++++++++++++-
 t/t7810-grep.sh                    |  69 ++++++++---
 t/t7812-grep-icase-non-ascii.sh    |   4 +-
 t/t7813-grep-icase-iso.sh          |  11 +-
 t/test-lib.sh                      |   4 +-
 15 files changed, 516 insertions(+), 76 deletions(-)
 create mode 100755 t/perf/p7820-grep-engines.sh
-- 
2.11.0
Next: Ævar Arnfjörð Bjarmason
Message 1 of 14 in “PCRE v1 improvements & PCRE v2 support”
  1. 00/13 PCRE v1 improvements & PCRE v2 supportÆvar Arnfjörð Bjarmason, Apr 19, 2017
  2. 01/13 grep: remove redundant regflags assignment under PCREÆvar Arnfjörð Bjarmason, Apr 19, 2017
  3. 02/13 Makefile & configure: reword outdated comment about PCREÆvar Arnfjörð Bjarmason, Apr 19, 2017
  4. 03/13 grep: add a test for backreferences in PCRE patternsÆvar Arnfjörð Bjarmason, Apr 19, 2017
  5. 04/13 log: add exhaustive tests for pattern style options & configÆvar Arnfjörð Bjarmason, Apr 19, 2017
  6. 05/13 log: add -P as a synonym for --perl-regexpÆvar Arnfjörð Bjarmason, Apr 19, 2017
  7. 06/13 grep & rev-list doc: stop promising libpcre for --perl-regexpÆvar Arnfjörð Bjarmason, Apr 19, 2017
  8. 08/13 test-lib: rename the LIBPCRE prerequisite to PCREÆvar Arnfjörð Bjarmason, Apr 19, 2017
  9. 09/13 grep: change the internal PCRE macro names to be PCRE1Ævar Arnfjörð Bjarmason, Apr 19, 2017
  10. 07/13 grep: make grep.patternType=[pcre|pcre1] a synonym for "perl"Ævar Arnfjörð Bjarmason, Apr 19, 2017
  11. 10/13 grep: change the internal PCRE code & header names to be PCRE1Ævar Arnfjörð Bjarmason, Apr 19, 2017
  12. 11/13 perf: add a performance comparison test of grep -E and -PÆvar Arnfjörð Bjarmason, Apr 19, 2017
  13. 12/13 grep: add support for the PCRE v1 JIT APIÆvar Arnfjörð Bjarmason, Apr 19, 2017
  14. 13/13 grep: add support for PCRE v2Ævar Arnfjörð Bjarmason, Apr 19, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.