Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
5861-Add-note-about-a-new-regular-expression-en...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5861-Add-note-about-a-new-regular-expression-engine-in-OT.patch of Package erlang
From 2884ebed1e513c97d84d7f715a68c84f113a29ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org> Date: Tue, 14 Mar 2023 06:54:21 +0100 Subject: [PATCH] Add note about a new regular expression engine in OTP 27 In Erlang/OTP 27, we will stop using the PCRE regular expression library, because it is no longer maintained. It is likely that we will instead use RE2 (https://github.com/google/re2). --- .../upcoming_incompatibilities.xml | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/system/doc/general_info/upcoming_incompatibilities.xml b/system/doc/general_info/upcoming_incompatibilities.xml index 62cdaf75c5..3f64dddf22 100644 --- a/system/doc/general_info/upcoming_incompatibilities.xml +++ b/system/doc/general_info/upcoming_incompatibilities.xml @@ -131,6 +131,61 @@ </item> </list> </section> + </section> + + <section> + <title>OTP 27</title> + + <section> + <marker id="new_re_engine"/> + <title>The re module will use a different regular expression engine</title> + + <p>The functionality of module <seeerl + marker="stdlib:re"><c>re</c></seeerl> is currently provided by + the PCRE library, which is no longer actively + maintained. Therefore, in OTP 27, we will switch to a different + regular expression library.</p> + <p>The source code for PCRE used by the <c>re</c> module has + been modified by the OTP team to ensure that a regular + expression match would yield when matching huge input binaries + and/or when using demanding (back-tracking) regular + expressions. Because of the those modifications, moving to a new + version of PCRE has always been a time-consuming process because + all of the modifications had to be applied by hand again to the + updated PCRE source code.</p> + + <p>Most likely, the new regular expression library will be <url + href="https://github.com/google/re2">RE2</url>. RE2 guarantees + that the match time is linear in the length of input string, and + it also eschews recursion to avoid stack overflow. That should + make it possible to use RE2 without modifying its source + code. For more information about why RE2 is a good choice, see + <url + href="https://github.com/google/re2/wiki/WhyRE2">WhyRE2</url>.</p> + + <p>Some of implications of this change are:</p> + + <list> + <item><p>We expect that the functions in the <c>re</c> module + will continue to be supported, although some of the options are likely + to be dis-continued.</p></item> + + <item><p>It is likely that only pattern matching of UTF8-encoded binaries will be + supported (not Latin1-encoded binaries).</p></item> + + <item><p>In order to guarantee the linear-time performance, + RE2 does not support all the constructs in regular expression + patterns that PCRE do. For example, backreferences and look-around + assertions are not supported. See <url + href="https://github.com/google/re2/wiki/Syntax">Syntax</url> + for a description of what RE2 supports.</p></item> + + <item><p>Compiling a regular expression is likely to be + slower, and thus more can be gained by explicitly compiling + the regular expression before matching with it.</p></item> + </list> + </section> </section> + </chapter> -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor