All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Brandon Williams <bmwill@google.com>
Cc: "Jeff King" <peff@peff.net>,
	"Git Mailing List" <git@vger.kernel.org>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Jeffrey Walton" <noloader@gmail.com>,
	"Michał Kiedrowicz" <michal.kiedrowicz@gmail.com>,
	"J Smith" <dark.panda@gmail.com>,
	"Victor Leschuk" <vleschuk@gmail.com>,
	"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: Re: [PATCH 11/12] grep: change the internal PCRE code & header names to be PCRE1
Date: Tue, 11 Apr 2017 20:31:07 +0200	[thread overview]
Message-ID: <CACBZZX6HLDmWSGiQ+cJ-p0Ak6SQHcmECaGqsfVz-Js4q7aSEwg@mail.gmail.com> (raw)
In-Reply-To: <20170411165127.GC36152@google.com>

On Tue, Apr 11, 2017 at 6:51 PM, Brandon Williams <bmwill@google.com> wrote:
> On 04/11, Jeff King wrote:
>> On Tue, Apr 11, 2017 at 01:02:56PM +0200, Ęvar Arnfjörš Bjarmason wrote:
>>
>> > >> Yes, this is a bug. I'll need to add a git_options along with
>> > >> submodule_options and pass -c grep.patternType=....
>> > >
>> > > Maybe that's an indication we should have --pcre1-regexp and
>> > > --pcre2-regexp, so we don't have to resort to config tweaking.
>> >
>> > I'd rather not. To reply to both your
>> > <20170411103018.dkq5gangx3vcxhp4@sigill.intra.peff.net> & this, one
>> > thing I was trying to do in this series (and I don't think I went far
>> > enough in "grep & rev-list doc: stop promising libpcre for
>> > --perl-regexp") was to stop promising some specific version of PCRE.
>>
>> We don't necessarily have to document them. This is just in the general
>> rule of "if there's config, there should be command-line to override
>> it". Because without that, you get this exact situation where you have
>> to bolt on "-c" options to another part of the command line, which gets
>> awkward.
>>
>> I'm also not sure it would be strictly correct, if the sub-program runs
>> other sub-programs. Providing "-c" affects all child processes, whereas
>> command-line options are propagated manually. So imagine you have a
>> process tree like:
>>
>>   grep
>>    \-grep
>>       \-textconv
>>
>> I.e., grep recurses to a submodule which then has to kick off a textconv
>> filter for one of the files. If you use "-c" to pass options to the
>> second grep, then those options will continue to have an effect inside
>> the textconv filter. Which _probably_ doesn't run git commands that
>> would care, but technically it could do anything.
>>
>> > I.e. as far as the user is concerned they just want perl-y regexes,
>> > but they most likely don't care about the 1% featureset of those
>> > regexes where the various implementations of "perl-y regex" actually
>> > differ, because those cases tend to be really obscure syntax.
>>
>> Yeah, that's what led me to the "why are we even worrying about run-time
>> switching" direction. I'd think a build-time switch would be enough for
>> people to test, and it makes all of this type of complexity go away.
>
> Yeah I agree with Jeff that we should probably avoid needing to pass a
> config option down in addition to a command line switch to do perl
> regex's.  I didn't take too hard of a look at how that would be done in
> the grep code, but it might be slightly more involved than just changing
> the enum name.
>
> From [12/12] it looks like the main purpose of this series is to use a
> more preferment version of PCRE, if all else is equal it doesn't really
> make much sense to have both versions to be select-able at runtime.  Is
> there any benefit of being able to do that, that I'm missing?

Not really no. I don't think any git user is ever going to be using
both pcre1 & pcre2 at runtime.

This grew more organically out of how I started to hack the code. Due
to how different the two APIs are it's much less messier to have a new
set of wrapper functions than to ifdef around v1 & v2. Once I had all
the code & config flags it was easy to shimmy it up so I could switch
between the two, and it was handy for performance testing.

But the guy developing it is hardly the main target audience for a
feature like this, but on the other hand it's easy to support...

I'm hacking up a v2 of this series. It includes some extra goodies
like bugfixes, v1 JIT support, and I'll try to tack a patch at the end
that removes this facility to switch between the two at runtime, and
we can see if that looks better than not having it.

  reply	other threads:[~2017-04-11 18:31 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-08 13:24 [PATCH 00/12] PCREv2 & more Ævar Arnfjörð Bjarmason
2017-04-08 13:24 ` [PATCH 01/12] grep: add ability to disable threading with --threads=0 or grep.threads=0 Ævar Arnfjörð Bjarmason
2017-04-11 10:06   ` Jeff King
2017-04-11 20:20     ` Ævar Arnfjörð Bjarmason
2017-04-11 20:34       ` Jeff King
2017-04-11 20:56         ` Ævar Arnfjörð Bjarmason
2017-04-14 21:23           ` Jeff King
2017-04-16 22:25             ` Ævar Arnfjörð Bjarmason
2017-04-08 13:24 ` [PATCH 02/12] grep: remove redundant regflags assignment under PCRE Ævar Arnfjörð Bjarmason
2017-04-11 10:10   ` Jeff King
2017-04-08 13:24 ` [PATCH 03/12] Makefile & configure: reword outdated comment about PCRE Ævar Arnfjörð Bjarmason
2017-04-11 10:14   ` Jeff King
2017-04-15 12:10     ` Ævar Arnfjörð Bjarmason
2017-04-08 13:24 ` [PATCH 04/12] grep: add a test for backreferences in PCRE patterns Ævar Arnfjörð Bjarmason
2017-04-08 13:24 ` [PATCH 05/12] log: add exhaustive tests for pattern style options & config Ævar Arnfjörð Bjarmason
2017-04-11 10:23   ` Jeff King
2017-04-11 10:32     ` Ævar Arnfjörð Bjarmason
2017-04-11 10:51       ` Jeff King
2017-04-08 13:25 ` [PATCH 06/12] log: add -P as a synonym for --perl-regexp Ævar Arnfjörð Bjarmason
2017-04-10  2:39   ` Junio C Hamano
2017-04-11 10:26   ` Jeff King
2017-04-08 13:25 ` [PATCH 07/12] grep & rev-list doc: stop promising libpcre " Ævar Arnfjörð Bjarmason
2017-04-08 13:25 ` [PATCH 08/12] grep: make grep.patternType=[pcre|pcre1] a synonym for "perl" Ævar Arnfjörð Bjarmason
2017-04-11 10:30   ` Jeff King
2017-04-08 13:25 ` [PATCH 09/12] test-lib: rename the LIBPCRE prerequisite to PCRE Ævar Arnfjörð Bjarmason
2017-04-11 10:31   ` Jeff King
2017-04-08 13:25 ` [PATCH 10/12] grep: change the internal PCRE macro names to be PCRE1 Ævar Arnfjörð Bjarmason
2017-04-11 10:35   ` Jeff King
2017-04-11 10:51     ` Ævar Arnfjörð Bjarmason
2017-04-11 10:53       ` Jeff King
2017-04-08 13:25 ` [PATCH 11/12] grep: change the internal PCRE code & header " Ævar Arnfjörð Bjarmason
2017-04-11 10:37   ` Jeff King
2017-04-11 10:45     ` Ævar Arnfjörð Bjarmason
2017-04-11 10:48       ` Jeff King
2017-04-11 11:02         ` Ævar Arnfjörð Bjarmason
2017-04-11 12:57           ` Jeff King
2017-04-11 16:51             ` Brandon Williams
2017-04-11 18:31               ` Ævar Arnfjörð Bjarmason [this message]
2017-04-08 13:25 ` [PATCH 12/12] grep: add support for PCRE v2 Ævar Arnfjörð Bjarmason
2017-04-11 10:43   ` Jeff King
2017-04-11 10:47 ` [PATCH 00/12] PCREv2 & more Jeff King
2017-04-15  8:11   ` Junio C Hamano
2017-04-15  9:50     ` Ævar Arnfjörð Bjarmason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CACBZZX6HLDmWSGiQ+cJ-p0Ak6SQHcmECaGqsfVz-Js4q7aSEwg@mail.gmail.com \
    --to=avarab@gmail.com \
    --cc=bmwill@google.com \
    --cc=dark.panda@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=michal.kiedrowicz@gmail.com \
    --cc=noloader@gmail.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=vleschuk@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.