aboutsummaryrefslogtreecommitdiffhomepage
path: root/contrib/terex
AgeCommit message (Collapse)AuthorFilesLines
10 daysterex: fixed tarballs (`make dist` and `make distcheck`)Robin Haberkorn1-0/+0
It was missing a few files. Should also fix CI runs.
2026-07-24fixed case-insensitive searches with non-ANSI (Unicode) patternsRobin Haberkorn1-0/+0
* Since case-insensitivity is the default, you couldn't effectively search for non-ANSI characters, although character classes were not affected. * This was a terex bug, i.e. wasn't broken in v2.5.2. * Test cases have been added. The test case for searching for ^E (5) has been simplified using `^E<5>`.
2026-07-05terex is built with assertions now on --enable-debugRobin Haberkorn1-0/+0
* terex disables assertions by default unless you add `-DREG_DEBUG`. Since we heavily modified the original by Henry Spencer it makes sense to enable assertions. * dlmalloc will still be built without assertions even if --enable-debug is given since that has a significant speed impact and I consider dlmalloc to be rock solid. It would need `-DDEBUG=1` to enable assertions (among other things). We only disable additional checks in dlmalloc if --disable-debug.
2026-07-03terex, dlmalloc and rb3ptr are now built with `-Wall`Robin Haberkorn1-0/+0
dlmalloc had one bogus unused variable warning, so we also added `-Wno-unused-but-set-variable`. We don't want to change upstream sources unless absolutely necessary.
2026-06-29regular expression matching can now be reliably interrupted using CTRL+CRobin Haberkorn1-0/+0
* The previous checks for interruptions only helped in a few corner cases like for very high search-repeat counts or during backwards searches across the entire buffer. * But even with terex' more predictable runtime properties a single regex execution can hang quite a long time. E.g. `S^EM^X$` on a huge buffer or even more so with backreferences as in `S^~(.*)\1$`. * We now use the new tere_set_is_interrupted_cb() to register teco_interface_is_interrupted(). Types should be compatible as long as gboolean resolves to int. * It's no longer necessary to manually check for teco_interface_is_interrupted() since tere_exec() now returns REG_EINTR in case the callback returned TRUE in which case it's handled by teco_error_regex_set().
2026-06-28terex is the new regular expression engine now and replaces PCRE (GRegex)Robin Haberkorn1-0/+0
* 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/