Jeff King wrote:
3. Replace compat/regex with something faster. It still produces
exponential behavior in complex cases where glibc does not, and it
seems to be about 1/3 as fast on Paolo's regex.
I haven't looked at how large or how portable the glibc
implementation is. Another alternative is that we could provide a
simple compat/ as now, and have better support for linking against
an external library like pcre, if it is available.
The glibc implementation is quite large. Cutting the library-specific
cruft it still sits at about 10k LOC.
Using PCRE is a no-go, as it uses perl-compatible regexes even for the
posix-compatible API, as per pcreposix(3):
When PCRE is called via these functions, it is only the API that is
POSIX-like in style. The syntax and semantics of the regular expres-
sions themselves are still those of Perl, subject to the setting of
various PCRE options, as described below. "POSIX-like in style" means
that the API approximates to the POSIX definition; it is not fully
POSIX-compatible, and in multi-byte encoding domains it is probably
even less compatible.
This would probably surprise some "git grep" users quite a lot, I think.
I like your other two suggestions though. The stuff already in compat/
seems to work well enough, so with Paolo's improved pattern it should
be fine.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.