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@xxxxxx 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html