From 4fe5bc6f3867096965270c90f2e1e5df77b8825f Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sun, 28 Jun 2026 00:39:51 +0200 Subject: terex is the new regular expression engine now and replaces PCRE (GRegex) * terex is based on Henry Spencer's regular expression engine for Tcl. It is a hybrid NFA/DFA design which has better worst-time runtimes than the backtracking PCRE. Memory usage is also limited and can no longer increase catastrophically. * It should no longer be possible to crash SciTECO with pathological searches. * Since it reliably supports partial matches (REG_EXPECT) we can now enable the new backwards-search algorithm by default. This used to be broken because of a glib bug, which I already fixed. It would however take a long time until this ends up on the majority of glib installations. * Regexp executions can still be quite slow if you are looking for a pattern at the end of a huge file, which can hang the editor, but this can now at least theoretically be solved by adding hooks into terex to poll for interruptions. * We can now also get rid of a TECO-pattern to regexp translation step by directly generating terex tokens (TODO). * Performance-wise terex appears to be slower than PCRE for simple forward searches even when linking everything with optimzations (FIXME). * Having a stand-alone regular expression engine is also a huge step in getting rid of glib. See also: https://git.fmsbw.de/terex/about/ --- src/error.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/error.h') diff --git a/src/error.h b/src/error.h index 67de4aa..3d4334f 100644 --- a/src/error.h +++ b/src/error.h @@ -57,6 +57,7 @@ typedef enum { TECO_ERROR_CLIPBOARD, TECO_ERROR_WIN32, TECO_ERROR_MODULE, + TECO_ERROR_REGEX, /** Interrupt current operation */ TECO_ERROR_INTERRUPTED, -- cgit v1.2.3