all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Daniel Colascione" <dancol@dancol.org>
To: "Stefan Monnier" <monnier@IRO.UMontreal.CA>
Cc: Daniel Colascione <dancol@dancol.org>, emacs-devel@gnu.org
Subject: Re: [Emacs-diffs] master 938d252 4/4: Make regex matching reentrant;  update syntax during match
Date: Sun, 17 Jun 2018 11:51:33 -0700	[thread overview]
Message-ID: <04e89d2beffedcc102b811863910c1ec.squirrel@dancol.org> (raw)
In-Reply-To: <jwvy3fdgt0v.fsf-monnier+emacsdiffs@gnu.org>

>>     (unfreeze_pattern, freeze_pattern): New functions.
>>     (compile_pattern): Return a regexp_cache pointer instead of the
>>     re_pattern_buffer, allowing callers to use `freeze_pattern' if
>>     needed.  Do not consider busy patterns as cache hit candidates;
>>     error if we run out of non-busy cache entries.
>
> IIRC the main/only reason why you can't use a compiled pattern in
> a reentrant way is because the \{N,M\} repetitions use a counter that's
> stored directly within the compiled pattern.
>
> But these are fairly rare.
>
> So we could easily change the code to add a boolean stating whether there
> is such a repetition-counter in the pattern, and if there isn't then
> "freeze" can just do nothing because we can freely use that pattern
> multiple times at the same time.

Good idea. My reading of the "smart jump" stuff in regex.c suggested that
we use the optimization for _all_ greedy Kleene star constructs though,
not just the bounded ones. Am I wrong?

But anyway, I think the regex code needs a major overhaul.  I was actually
thinking about forking and vendoring RE2. Granted, having done that, you'd
need a C++ compiler to build Emacs, but it's probably one of the better
actively-maintained DFA-based regex engines around.




  reply	other threads:[~2018-06-17 18:51 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20180616204650.8423.73499@vcs0.savannah.gnu.org>
     [not found] ` <20180616204653.86AFC203CB@vcs0.savannah.gnu.org>
2018-06-17 18:42   ` [Emacs-diffs] master 938d252 4/4: Make regex matching reentrant; update syntax during match Stefan Monnier
2018-06-17 18:51     ` Daniel Colascione [this message]
2018-06-17 19:18       ` Daniel Colascione
2018-06-17 19:34         ` Stefan Monnier
2018-06-17 19:50           ` Daniel Colascione
2018-06-17 19:30       ` Stefan Monnier
2018-06-18 15:59       ` Perry E. Metzger
2018-06-18 17:49         ` Daniel Colascione
2018-06-19 13:40           ` Perry E. Metzger
2018-06-19 13:44             ` Perry E. Metzger
2018-06-19 13:49               ` Daniel Colascione
2018-06-19 14:30                 ` Perry E. Metzger
2018-06-19 14:33                   ` Perry E. Metzger
2018-06-19 14:48                     ` Daniel Colascione
2018-06-19 15:37                       ` Perry E. Metzger
2018-06-19 16:20                         ` Paul Eggert
2018-06-19 16:27                           ` Perry E. Metzger
2018-06-19 17:46                             ` Stefan Monnier
2018-06-19 18:18                               ` Daniel Colascione
2018-06-19 18:26                               ` Perry E. Metzger
2018-06-19 16:54                           ` John Wiegley
2018-06-19 17:04                             ` Perry E. Metzger
2018-06-19 18:20                               ` John Wiegley
2018-06-19 18:04                             ` Paul Eggert
2018-06-19 18:16                               ` Daniel Colascione
2018-06-19 18:26                                 ` Paul Eggert
2018-06-19 18:03                           ` Andreas Schwab
2018-06-19 18:48                             ` Paul Eggert
2018-06-19 14:46                   ` Daniel Colascione
2018-06-19 14:58                     ` Andreas Schwab
2018-06-19 15:32                       ` Perry E. Metzger
2018-06-18 23:25         ` Richard Stallman
2018-06-19  1:30           ` Perry E. Metzger
2018-06-19 22:54             ` Richard Stallman
2018-06-20  1:17               ` Perry E. Metzger
2018-06-20 23:26                 ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=04e89d2beffedcc102b811863910c1ec.squirrel@dancol.org \
    --to=dancol@dancol.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@IRO.UMontreal.CA \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.