This release fixes several bugs and replaces the random number generator.
# Security / Reliability:
- Replaced Mersenne Twister (std::mt19937, 2496 bytes of state) with PCG-XSL-RR-128/64 (pcg64, 32 bytes of state). Seeded from /dev/urandom with ASLR+time fallback. Unbiased rejection sampling for bounded output. Falls back to PCG-XSH-RR-64/32 (pcg32) on platforms without native 128-bit integers. - Removed SQLite calls from SIGUSR2, SIGSEGV, and crash signal handlers. Write-through makes them unnecessary and they risk WAL corruption.
# Bug Fixes:
- Fixed IPv6 subnet comparison: operator== compared array pointers instead of contents (always false); operator< didn't early-exit correctly. Also fixed mux_sockaddr IPv6 memcmp using wrong size. - Fixed subnet tree remove/reset: reset() discarded return value so @reset_site was a no-op; kContainedBy case deleted unrelated siblings; kEqual case didn't detach children before deletion. - Fixed parse_to_lite reading past boundary when scanning for closing ')' inside bounded mux_exec calls (affected parenmatch and nested function evaluation). - Fixed trim_space_sep_LEN declaration/definition signature mismatch (const SEP& vs SEP*) that prevented cross-file linking. - Fixed null handle crash in ModuleUnload when dlopen handle is NULL.
# Known Issue (fixed post-release):
- @restart hangs on GANL builds due to a mutex deadlock in the adapter shutdown path. A second @restart after the first also drops the connection. Both are fixed in the current git master. If you need @restart, build from git head rather than the tarball.
# Miscellaneous:
- Suppressed verbose per-event GANL debug logging in production. - Updated help topics for Unicode-aware string functions (ord, chr, strlen, strmem, mid, citer, stripaccents). - Improved smoke test script reliability.