Soma 2.6.1 — 2026-09-19
-
Site and README: the stated guarantees now match the documented ones — distribution checks prove the declarations' coherence (the prototype replicates eventually), rollback covers slot writes and transitions (not external effects), set_budget stops the next call, default liveness means an exit stays reachable (eventually for every run), the paper's quorum is ⌊N/2⌋ + 1; the /agents payment example requires amount > 0; a homepage demo shows proven / runtime-checked / not covered.
-
soma run --fresh resets exactly this program's tables (a cell A reset another program's A_b); an unreadable soma.toml fails closed; soma run without a handler prefers main / run and never runs a _private one; soma build -o x.cell is refused and soma deploy keeps existing files; verify --json is JSON when check fails.
-
soma fix handles non-ASCII lines; soma replay keeps numeric-looking Strings as Strings and fails on unreadable or empty logs; the dashboard is same-origin only.
-
New asin, acos, pi(); tan, atan, atan2, asin, acos, pi in [native].
-
Bus: a connection must send its first line within 10 s; at most 256 are open at once (half-open connections held a thread each).
-
require <Int builtin> is a check error like if; soma run --fresh resets only this program's tables when other programs share the database.
-
New to_csv(rows); round never returns -0.0; clearer errors for negative round digits and multi-variable forall; recursion limits documented (512 interpreted, 20 000 [native]).
-
Peer bus: two processes listing each other exchange each event once (links open with HELLO); closed connections free their thread and socket; a [peers] address that is this process is refused; the reconnect back-off holds for links that drop at once.
-
The start-up audit no longer reports write-once rows; a prompt that alone overruns the remaining set_budget raises before it is sent.
-
body: String is the exact bytes received; to_json escapes </ and <!--; the injected htmx script is pinned with SRI; hmac_sha256 with an empty key fails closed; --record logs are owner-only.
-
[peers] links are supervised: a peer down at start-up, restarted, or dropped for reading too slowly is reconnected.
-
Packages: sub-directories are installed and covered by the lock's sha256; a file the lock does not list, or a case-variant use, cannot bypass the check; an installed package missing from the lock is refused.
-
Latency bound: http without timeout counts 30 s; a think without a literal timeout makes it advisory. The JSON cap weighs objects and lists; self_call catches IPv4-mapped IPv6; CSV cannot carry _type / _variant columns; invariant source is not sent to clients; duplicate Origin headers are refused; imported every / after is warned.
-
split(s, "") splits into characters; parse_int(s, base); numbers beyond the Float range are refused by from_json, HTTP bodies and bus events; NaN sorts last in descending sort_by; ipow of 0 / ±1 to huge exponents; sum_by of a non-list raises.