Hi, all, I am pleased to announce the availability of Remind 06.01.01 at https://dianne.skoll.ca/projects/remind/
This release fixes long-standing problems with UTF-8 / Unicode string
handling in Remind.
The built-in string functions were not Unicode-aware: They operated on
bytes, not characters. So something like:
SET b "🙂🙂🙂🙂🙂"
SET a substr(b, 1, 2)
sets a to an invalid UTF-8 sequece 0xF0, 0x9F
The new function mbsubstr works correctly:
SET b "🙂🙂🙂🙂🙂"
SET a mbsubstr(b, 1, 2)
sets a to "🙂🙂"
Direct download links:
Tar: https://dianne.skoll.ca/projects/remind/download/remind-06.01.01.tar.gz
GPG: https://dianne.skoll.ca/projects/remind/download/remind-06.01.01.tar.gz.sig
Git: https://git.skoll.ca/Skollsoft-Public/Remind
The git repo is password-protected to avoid AI scrapers; log in as
user "notabot" with password "notabot". Alternatively, the mirror
https://salsa.debian.org/dskoll/remind does not require a login.
Complete release notes since the last release are below.
Regards,
Dianne.
* VERSION 6.1 Patch 1 - 2025-09-12
- NEW FEATURE: remind: Add the new --max-expr-complexity=n
command-line argument. It is possible to write expressions that use
enormous amounts of CPU time, such as the following:
FSET fib(n) iif(n <= 2, 1, fib(n-1)+fib(n-2))
SET a fib(100)
That will take essentially forever to execute, but will not hit the
built-in recursion limit. Using a command-line argument of
--max-expr-complexity=1000000 will terminate evaluation in a few
dozen milliseconds on modern hardware, and should not affect
realistic reminder scripts. See the man page for details.
- IMPROVEMENT: remind: Add UTF-8-aware functions to complement the
byte-aware functions that could give incorrect results by splitting
a UTF-8 character sequence. The correspondence between old and new
functions is:
NON-UTF-8-AWARE UTF-8-AWARE
=============== ===========
strlen mbstrlen
substr mbsubstr
index mbindex
char mbchar
asc codepoint
See the remind(1) man page for details.
- MINOR NEW FEATURE: remind: You can use hexadecimal integer constants
like 0xFE12 in expressions. This is mostly useful for using
codepoint() since Unicode code points are often expressed in
hexadecimal.
- BUG FIX: remind: When truncating a string when executing DUMPVARS or
during debugging of expression evaluation, Remind could sometimes
cut the string in the middle of a UTF-8 sequence. This has been
fixed.
* VERSION 6.1 Patch 0 - 2025-09-08
pgpCkE3vIc0rt.pgp
Description: OpenPGP digital signature
_______________________________________________ Remind-fans mailing list [email protected] https://dianne.skoll.ca/mailman/listinfo/remind-fans Remind is at https://dianne.skoll.ca/projects/remind/
