<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>It's been several more months, but now I need to ask what
      distributions you are 'supporting' here, Maxim and nginx team.<br>
    </p>
    <p>PCRE2 is in Debian, Ubuntu, CentOS, Fedora, and others.  That
      covers a large portion of the major distributions at play.</p>
    <p>This has once again popped on my radar in Ubuntu as we are trying
      to move pcre3 out of Main, and rely on pcre2.  NGINX is one of the
      few packages that hasn't had any changes to it to make it
      PCRE2-supportable.</p>
    <p>I also agree that Exim should not be the basis of support.</p>
    <p><br>
    </p>
    <p>Is it possible to revisit this decision, and determine whether it
      is possible to support PCRE2 as it is now 2019 and many things
      seem to be switching to pcre2?  Otherwise, we have to either</p>
    <p>(1) Strip out PCRE support entirely in NGINX in Ubuntu, which
      would break most if not all regex functionality.</p>
    <p>(2) No longer consider nginx supported officially and drop it to
      community-only support (which means I will be once again doing all
      the work in Ubuntu to patch it, though this isn't new for me).</p>
    <p><br>
    </p>
    <p>I would like to ask that this be re-discussed and revisited since
      PCRE2 is far from 'new' and many things're switching to it, as
      well as it being present in multiple major distributions now.</p>
    <p><br>
    </p>
    <p>Thomas</p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 9/19/18 3:19 AM, Mark Mielke wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CALm7yL2Qy49zUy2W7vB91YUfB4tH0jq3xonRFhznqXZYNri1GQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">
          <div class="gmail_quote">
            <div dir="ltr">On Tue, Sep 18, 2018 at 11:55 AM Maxim Dounin
              <<a href="mailto:mdounin@mdounin.ru"
                moz-do-not-send="true">mdounin@mdounin.ru</a>> wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">On Tue, Sep 18, 2018 at
              08:12:20AM -0400, Thomas Ward wrote:<br>
              > Downstream in Ubuntu, it has been proposed to demote
              pcre3 and <br>
              > use pcre2 instead as it is newer.<br>
              > <a href="https://trac.nginx.org/nginx/ticket/720"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://trac.nginx.org/nginx/ticket/720</a>
              shows it was marked 4 <br>
              > years ago that NGINX does not support pcre2.  Are
              there any <br>
              > plans to use pcre2 instead of pcre3?<br>
              There are no immediate plans.<br>
              When we last checked, there were no problems with PCRE,
              but PCRE2 <br>
              wasn't available in most distributions we support, making
              the <br>
              switch mostly meaningless.<br>
            </blockquote>
            <div><br>
            </div>
            <div>I think there have been changes since then. PCRE2 was
              new in 2015, but isn't new in 2018.</div>
            <div><br>
            </div>
            <div>RHEL 7 (and clones) include libpcre2. I think this is a
              pretty wide set of machines right here. I believe Ubuntu
              16.04 LTS has libpcre2 which is another wide set. Fedora
              has had it for a while now. I think that unless you go to
              older releases, all major distributions should have PCRE2
              by now.</div>
            <div><br>
            </div>
            <div>I build haproxy with PCRE2 support.</div>
            <div><br>
            </div>
            <div>One that was interesting to me, is that Git recently
              (April, 2018?) switched to building with PCRE2 by default
              when "USE_LIBPCRE=Yes" was specified:</div>
            <div><br>
            </div>
            <div><a
href="https://github.com/git/git/commit/cac5351363c5713248b8494e1e58e282c0a5bde7"
                moz-do-not-send="true">https://github.com/git/git/commit/cac5351363c5713248b8494e1e58e282c0a5bde7</a><br>
            </div>
            <div><br>
            </div>
            <div>I'm not sure about meaningless from a functionality
              perspective. All new features are going into PCRE2. PCRE
              is a stable branched with only bug fixes and security
              problems fixed. The newest features, including performance
              improvements, are all in PCRE2. I believe the reason it is
              "PCRE2-10" instead of "PCRE-10", is because of API
              changes, and the opportunity to improve or fix previous
              API decisions. This then becomes the basis for all future
              development free of the PCRE API shackles.</div>
            <div><br>
            </div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <br>
              Also, it looks like PCRE2 is still not supported even by
              Exim, <br>
              which is the parent project of PCRE and PCRE2:<br>
              <br>
              <a href="https://bugs.exim.org/show_bug.cgi?id=1878"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://bugs.exim.org/show_bug.cgi?id=1878</a></blockquote>
            <div><br>
            </div>
            <div>I don't think Exim should be the measure:</div>
            <div><br>
            </div>
            <div>"<span style="color:rgb(0,0,0);font-family:"Times
                New Roman";font-size:medium">PCRE was originally
                written for the </span><a href="https://www.exim.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Exim
                MTA</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, but is now used by many
                high-profile open source projects, including </span><a
                href="https://httpd.apache.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Apache</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://www.php.net/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">PHP</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="https://www.kde.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">KDE</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://www.postfix.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Postfix</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, and </span><a
                href="https://nmap.org/" style="font-family:"Times
                New Roman";font-size:medium" moz-do-not-send="true">Nmap</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">. PCRE has also found its
                way into some well known commercial products, like </span><a
                href="https://www.apple.com/safari/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Apple
                Safari</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">. Some other interesting
                projects using PCRE include </span><a
                href="http://www.call-with-current-continuation.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Chicken</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://www.ferite.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Ferite</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://www.canonware.com/onyx/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Onyx</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://www.hypermail-project.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Hypermail</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://leafnode.sourceforge.net/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Leafnode</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://www.askemos.org/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Askemos</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, </span><a
                href="http://www.wenlin.com/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">Wenlin</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">, and </span><a
                href="http://8th-dev.com/"
                style="font-family:"Times New
                Roman";font-size:medium" moz-do-not-send="true">8th</a><span
                style="color:rgb(0,0,0);font-family:"Times New
                Roman";font-size:medium">."</span></div>
            <div><br>
            </div>
            <div>This list is also far from complete. PCRE and PCRE2 are
              widely used, and PCRE2 is where all current improvement is
              occurring. Anybody waiting for Exim, will probably be
              among the very last to switch.</div>
            <div><br>
            </div>
            <div><br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              As such, adding PCRE2 support to nginx looks premature.<br>
            </blockquote>
          </div>
          <div dir="ltr"><br>
          </div>
          <div dir="ltr"><br>
          </div>
          <div>Before writing the above, I was debating with myself
            about when the right time to add support for a new component
            release is. For some projects and some components, it will
            be more important than others. For example, OpenSSL 1.1.1
            with TLSv1.3 support might be considered premature for some
            projects to support, and yet Nginx supports this newly
            released version long before OpenSSL 1.1.1 is readily
            available in a majority of distributions that you support. I
            think in this case, OpenSSL 1.1.1 is of strategic importance
            to Nginx, and this ensured it was on the roadmap. (However,
            it still seems to be missing an ability to configure the
            cipher suite... :-) )</div>
          <div><br>
          </div>
          <div>I don't know if PCRE2 belongs on this roadmap. I think
            there have been significant improvements with the JIT
            compilation that could prove useful for higher performance
            evaluation of regular expressions with Nginx, but I
            personally don't have this requirement, so if after
            considering all of the above - you still felt it was
            premature, I wouldn't raise any concern personally. I just
            want to make sure this is an informed position. :-)</div>
          <div><br>
          </div>
          -- <br>
          <div dir="ltr" class="gmail_signature">Mark Mielke <<a
              href="mailto:mark.mielke@gmail.com" target="_blank"
              moz-do-not-send="true">mark.mielke@gmail.com</a>><br>
            <br>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
nginx-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a>
<a class="moz-txt-link-freetext" href="http://mailman.nginx.org/mailman/listinfo/nginx-devel">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a></pre>
    </blockquote>
  </body>
</html>