On 30/11/2016 10:23 p.m., Christos Tsantilas wrote: > On 29/11/2016 09:46 μμ, Amos Jeffries wrote: >> I'm thinking it might be useful to add a how-to in the release notes for >> v4+ to make the compiler update easier. Would you be able to write that >> now that you have gone through the process? > > I upgraded to newer OS, not just the compiler :-). It is something I > would have to do in the next months so I decide to do it now. > However major linux distributions still does not provide stable releases > with gcc-5.x. > >> >> It is faster, but also has a different pattern syntax and API. So we >> would need both a config directive to specify what syntax was in use and >> a wrapper layer for portability. >> >> Which is exactly what std::regex provides . Though I have not gone so >> far as to add the config directive for changing the used syntax. It >> makes a lot more sense to go through the transition pain once instead of >> twice (GNURegex -> PCRE -> std::regex). > > My sense is that std::regex is not a wrapper layer. It is just a > different implementation. Maybe it is the faster implementation, OK.
Whether its a wrapper or completely different implementation is up to the library. At the very least it is a consistent API regardless of the regex grammar being presented. And the extra requirement of std::regex is that all 6 grammars be presented one way or another, not limited to a subset of them the library wants to implement. > > We are using regex expressions in very few places and actually I believe > that we should use RegexPattern class instead of direct calls to the > external regex libraries. A such RegexPattern class can be small and can > be adjusted to use many regex implementations. > That is what the class was made for, yes. > > I know that this is a new project, I am not saying that we should > implement support for multiple regex libraries right now, but I believe > that it is something we should have in our mind when we are planning squid. > My point was that we dont have to. All we have to do is migrate to std::regex usage and the underlying library is no longer our concern. Once we are using std::regex we just add squid.conf flag(s) in relevant places to set a users prefered grammar. The RegexPattern class sends std::regex API a grammar flag depending on what the user configured. The C++11 implementation guarantees availability of all the common grammars as listed in the first table at <http://www.cplusplus.com/reference/regex/regex_constants/#syntax_option_type>. No worries about detecting libraries or what to link against for multiple grammar support. But them nice toys are stuck waiting for the CentOS 7 compiler to be irrelevant. I hope we dont have to wait the next 14 years for its EOL date. Amos _______________________________________________ squid-dev mailing list [email protected] http://lists.squid-cache.org/listinfo/squid-dev
