TinyMUX 2.13.0.8 ALPHA

2 views
Skip to first unread message

Brazil

unread,
Mar 6, 2026, 5:38:23 PMMar 6
to tinymux
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

# TinyMUX 2.13.0.8

I am releasing [TinyMUX 2.13.0.8](ftp://ftp.tinymux.org/tinymux-2.13/alpha/8).

# Major changes:

 - SQLite is now the always-on storage backend. All object metadata,
   attributes, comsys channels, and @mail are stored in a single SQLite
   database with write-through on every mutation. @dump performs a WAL
   checkpoint only—no flatfile serialization, no fork. Crash
   durability is immediate.
 - @search for simple cases (owner, type, zone, parent, flags) routes
   to indexed SQL queries—O(log n) instead of linear scan.
 - Unicode updated from 10.0 to 16.0. All attribute values are
   NFC-normalized at storage time.
 - String functions use grapheme cluster indexing (UAX #29) instead of
   codepoint counting.
 - Unicode collation (UCA/DUCET) is the default sort order. sort() and
   set functions use locale-correct Unicode comparison.
 - CJK width-aware string operations: center(), ljust(), rjust(),
   columns() respect double-width characters.

# Feature Additions:

 - chr() and ord() support the full Unicode range.
 - Case-insensitive Unicode collation sort type.
 - @list cache for attribute cache and SQLite storage stats.
 - dbconvert supports -C and -m flags for comsys and mail flatfile
   import/export.
 - HELP command from the connect screen.
 - @scan command.
 - @logrotate command.
 - @mail/next command.
 - @mail/review all.
 - @nameformat for things and exits in look.
 - @oemit/list and expanded oemit().
 - @cpattr wildcarding.
 - @addcommand/noeval.
 - @function/restrict.
 - /now switch for @switch, @dolist, @trigger, @force.
 - page/blind switch.
 - IDLE command.
 - NOEVAL object flag and attribute flag.
 - NOEXAMINE, NOMODIFY, and INDESTRUCTIBLE flags.
 - objid(), isobjid(), and %: substitution.
 - clone(), lock(), attrib_set(), verb(), pose(), mailreview(),
   regedit(), ledit() functions.
 - Per-player suppression of channel join/leave messages.
 - Named global registers.
 - Configurable pronoun_group for custom %s/%o/%p/%a substitutions.
 - dark @power for full in-room hiding.
 - no_mail_expire power and mail_max_per_player config.
 - no_flash, terse_nospoof, email_per_hour config parameters.
 - Possessive matching in locate() via 's' flag.
 - PIDs in command queue.
 - Purge mail on player destruction.
 - sort() ignores color in comparisons.
 - Unicode case-folding at all call sites.

# Bug Fixes:

 - Fix lrooms() DFS bug by replacing with BFS.
 - Fix @mail/review and @mail/retract recycled dbref privacy bug.
 - Allow isdbref() to accept leading/trailing spaces.
 - Fix whisper and comsys pose colon-space to match room pose behavior.
 - Fix @hook for \ command.
 - Fix chr() token parsing/range checks.
 - Fix grapheme count byte-length overreads in trunc/scramble.
 - Fix RI grapheme pairing and ord() invalid UTF-8 handling.
 - Fix 3-byte and 4-byte UTF-8 decode masks.
 - Fix vattr rename collision handling and SQLite delete sync.
 - Comprehensive UTF-8 validation hardening across all string
   processing paths.

# Performance Enhancements:

 - Indexed @search via SQLite for owner, type, zone, parent, and flag
   queries.
 - Attribute cache preloading on player connect and object move.
 - Replaced CHashTable with std::unordered_map throughout.
 - Replaced qsort() with std::sort() in sort and set functions.
 - Eliminated A_LIST attribute enumeration; replaced with direct SQLite
   queries and STL iteration.

# Miscellaneous:

 - SQLite 3.49.1 amalgamation bundled.
 - Omega converter freshened for all four server formats (T5X, T6H,
   P6H, R7H). Direct T5X-to-R7H path preserves full 24-bit color.
 - Removed CHashTable, CHashPage, CHashFile, IntArray, and legacy
   A_LIST machinery.
 - Removed MEMORY_BASED build option and have_comsys/have_mailer
   config options.
 - Removed database compression feature and deprecated stack subsystem.
 - Sort examined and decompiled attributes alphabetically.
 - Added 175 new smoke test cases expanding coverage to 348 total.

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEE8GWFNwJrhRGk25uvF80K5PxQP7EFAmmrP9wACgkQF80K5PxQ
P7FVaBAAtdlTqXGz7iX0Qp6LnzF406C0xaN4lJrctBvAEcLN/OBRH2WGYpztvu6/
mZB+gm0Y6EeX+unE83cUjTY8VHiLjI6lFxY+hx6MaeTF8HZsCqR6H0xbs23+cFSi
a86ZlE6PPT5TM80AGPCreLHDYsuK+0xGFsMoI3mhgsCFMl/DxzTlHYuepcd4ZmYU
s0G2rnP1KlxEOD1YWZqI9596K4Krartdmn2vFhRUsO6Fg2gxAxpbIvzVrAbqvD/0
u49ehJSZPxpEHnoTHWJ73Ojt2afsp3d5fm14rt798hvzzHicUMBo0qmPqnA9pz6f
2g/HkjIu7unem9zc3AiZz+1EzQtPc8MPZ+VNZPB2QMc/A8TuFhR9ArPFAg1JwLKq
xsyBYXyELNFkdIqzi4t9whlq/cDf842NWPm7G+xqGZqHc5HPk5n1mk5Xo7K1sG9n
cZ9x+l7iiOtksbXcU1ekSC2ZZtqDgwJXKiE7B24oR7f1FgQnckFaPkIfPyFQ1mnz
l6HnQHGNkNHf3sM/jep63AYQ2yQyjVnNRomBE5/TNhn8GAJvp1BDq6F35ejhl7RZ
CVFtNnQ5x/YNUWy8myOgrd5/j9Rb7XBIhpjpEzWtZs0/DjR6q/yEoIDkobSEcWuW
E8x86VnmmtDXoUqOsAiSkxYNXVblASXhssQWJCUpjyX7BONElgA=
=xp0K
-----END PGP SIGNATURE-----

Reply all
Reply to author
Forward
0 new messages