If you actually read OPs second E-Mail, they did and they didn't find it very clear. With that in mind, your message isn't very nice. (Also, not to be repetitive or anything: ~80% of the messages in this thread aren't actually concerned with what the complexity class *is*, but whether it matters)
On Tue, Jun 9, 2020 at 5:12 PM 'Thomas Bushnell, BSG' via golang-nuts < golang-nuts@googlegroups.com> wrote: > I'm surprised none of you have taken all this time to just go read the > code, where it is clearly linear. > > On Mon, Jun 8, 2020 at 9:12 PM Robert Engels <reng...@ix.netcom.com> > wrote: > >> The OP specifically asked about compilation - in fact it’s in the title. >> You stated the compilation complexity is a DoS attack vector. I argued that >> it is not. That is all. >> >> On Jun 8, 2020, at 6:39 PM, Michael Jones <michael.jo...@gmail.com> >> wrote: >> >> >> Ray, only the discussion is exponential. >> >> On Mon, Jun 8, 2020 at 4:23 PM 'Axel Wagner' via golang-nuts < >> golang-nuts@googlegroups.com> wrote: >> >>> On Tue, Jun 9, 2020 at 12:48 AM Kurtis Rader <kra...@skepticism.us> >>> wrote: >>> >>>> You're talking past each other. Robert is talking about limiting the >>>> length of the regex, not the string(s) evaluated by the regex. >>>> >>> >>> So am I. Note that e.g. a Code Search based on PCRE would break, even if >>> you limit *both* (or rather, any limit causing it to not break would result >>> in a completely useless piece of software). >>> >>> It should be possible to compile any regex of a reasonable length in a >>>> matter of microseconds. Regardless of whether the application of the regex >>>> to a given input is near linear (as in the case of the Go RE >>>> implementation) or exponential (as in the case of PCRE). >>>> >>> >>> This might be, where we talk past each other. I am using application as >>> an example for concrete numbers on how quickly exponential growth can >>> devolve. Of course, compilation of a regexp is fast - I am aware of that. >>> As it turns out, so is application of a regexp, if you use RE2 (or Go's >>> regexp package). >>> >>> What I take issue with are the statements that a) the question about the >>> complexity of compiling a regexp is irrelevant, because b) limiting the >>> algorithmic complexity of a function to counteract resource exhaustion >>> attacks "never works". RE2 is an excellent example to show that it does >>> work; it is carefully designed for linear complexity of the combined >>> compilation+matching of a regular expression. >>> >>> I'm not saying compiling a regular expression is an >>> exponential operation. I'm saying *if it was*, you could never reasonably >>> build something like Code Search. And we can use the fact that >>> *application* indeed is (in most engines) exponential in the combined input >>> length of expression+search text as a good basis to make that case. >>> >>> Of course we don't even need this fantasy world to make the case - after >>> all, saying "you can't build Code Search on PCRE, but you can on RE2" is >>> just as effective to prove the effectiveness of lowering algorithmic >>> complexity. It's just that OP's question was about compilation, so to talk >>> about why OP's question *is* relevant, we need to talk about what would >>> happen if the answer *wasn't* "it's linear". >>> >>> (I also genuinely don't understand the instinct to tell someone "why >>> would you care?" instead of telling them the answer, FWIW. Especially in a >>> case like this, where the answer is pretty simple) >>> >>> I'm pretty sure Robert is not arguing that the scaling problems of the >>>> regex implementation used by Perl, and too many others, can be mitigated >>>> simply by limiting the size of the string to be matched by the regex. If >>>> compiling a regex of reasonable length takes a non-negligible amount of >>>> time something is wrong. >>>> >>>> On Mon, Jun 8, 2020 at 3:22 PM Wojciech S. Czarnecki <o...@fairbe.org> >>>> wrote: >>>> >>>>> Dnia 2020-06-08, o godz. 16:22:24 >>>>> Robert Engels <reng...@ix.netcom.com> napisał(a): >>>>> >>>>> > it is trivial to limit the input size to something a user could >>>>> input. >>>>> >>>>> With exponential complexity simple regex /(x+x+)+y/ blows up at input >>>>> of 20 to 30 x-es. >>>>> See: https://www.regular-expressions.info/catastrophic.html >>>>> >>>>> [Cut long explanations... Axel just posted most of what I was writing >>>>> regarding trade-offs). >>>>> >>>>> Hope this helps, >>>>> >>>>> -- >>>>> Wojciech S. Czarnecki >>>>> << ^oo^ >> OHIR-RIPE >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "golang-nuts" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to golang-nuts+unsubscr...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/golang-nuts/20200609002207.0a161adf%40xmint >>>>> . >>>>> >>>> >>>> >>>> -- >>>> Kurtis Rader >>>> Caretaker of the exceptional canines Junior and Hank >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "golang-nuts" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to golang-nuts+unsubscr...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD9sKeHnqUAqB61y5Ts-U_f%2BctVAuS4BC0ae8phhhcp1iw%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD9sKeHnqUAqB61y5Ts-U_f%2BctVAuS4BC0ae8phhhcp1iw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts+unsubscr...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/CAEkBMfGnRrAt%3Dx3buNcfoOc9xGqVj_tfMEviU%3D7Amjw01e%3Df_w%40mail.gmail.com >>> <https://groups.google.com/d/msgid/golang-nuts/CAEkBMfGnRrAt%3Dx3buNcfoOc9xGqVj_tfMEviU%3D7Amjw01e%3Df_w%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> >> >> -- >> >> *Michael T. jonesmichael.jo...@gmail.com <michael.jo...@gmail.com>* >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/CALoEmQwXi99-PCpfrwzgfBkk5H6-u82ROYeNG9%2B-0yeNirDx-g%40mail.gmail.com >> <https://groups.google.com/d/msgid/golang-nuts/CALoEmQwXi99-PCpfrwzgfBkk5H6-u82ROYeNG9%2B-0yeNirDx-g%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/1580060C-120D-429C-9108-FE43D9992F6D%40ix.netcom.com >> <https://groups.google.com/d/msgid/golang-nuts/1580060C-120D-429C-9108-FE43D9992F6D%40ix.netcom.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/CA%2BYjuxuSgcy_GeiCJJDCYbbxK%2BpbssQAvG15wp2ssrvRirAj0w%40mail.gmail.com > <https://groups.google.com/d/msgid/golang-nuts/CA%2BYjuxuSgcy_GeiCJJDCYbbxK%2BpbssQAvG15wp2ssrvRirAj0w%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfEfG2ORsbxceyZau2DpoiODJPiPzXXQjVoyxKSchrO_4Q%40mail.gmail.com.