compiler: admit BigInt(value) as a conversion operator with JavaScript conversion semantics. Bare, first-class and variadic uses of BigInt remain refused. (#3499)
compiler: admit normally completing and partly returning if branches before following work. Zero or one written outer binding can cross a conditional join; early returns bypass the continuation. (#3554, #3556)
compiler: braced declaration for…of loops compile over arrays and strings, including patterns, defaults and fresh iteration captures. Spread materializes the input before the body, taking O(n) space. (#3592)
compiler: braced do…while loops execute the body before testing; owning continue tests the condition, while break, return and throw bypass it. (#3644)
compiler: function fallthrough now returns undefined. Syntax retains unreachable statements for binding checks; FAST conversion prunes their computations. Bare returns are accepted. (#3606, #3607)
compiler/tokenizer: accept explicit octal Number/BigInt literals and braced Unicode escapes. Single-quoted strings and untagged templates also accept hexadecimal and vertical-tab escapes. (#3612, #3608, #3568, #3624, #3625)
runtime: admit native String.fromCharCode, including destructuring, variadic arguments and JavaScript ToUint16 coercion. (#3501)
compiler: desugar Number.MAX_SAFE_INTEGER in dot access, constant bracket access and namespace destructuring to its numeric value. (#3597)
compiler/parser: form ASTs for constructors, unary +, == and !=. Constructors remain refused by FJS admission; the other operators report explicit AST-to-FAST conversion failures. (#3565, #3629, #3638, #3641)
compiler/parser: array-led call statements parse and retain required evaluation; newline indexing continuations remain part of the preceding expression unless a semicolon separates them. (#3632)
compiler/serializer: reconstruct shared continuations and supported immutable joins as FJS source, preserving owning exits and required work. Terminal loops no longer gain synthetic throws. (#3518, #3519, #3521, #3530, #3534, #3536)
compiler: owning self tail calls survive loops and deferred recipes; independent terminal recipes also lower to bounded-stack loops rather than recursive calls. (#3522, #3523, #3540, #3541)
compiler/serializer: preserve primitive captures and supported shared snapshots, dependent recipes and normal payloads across source readback. Unsupported invocation backedges are explicitly refused. (#3528, #3544, #3545, #3547, #3550)
types/function/operator: add Transducer, Step, Terminal, construction adapters and pure/effectful drivers. Machines use init, state-first update and terminal end; completion stops input pulls. (#3472)
crypto/sha1, crypto/sha2: hashes adopt the shared lifecycle; append(input)(state) becomes update(state, input), and initial and terminal values are machine steps. computeSync remains. (#3477)
common/monoid, types/bit_vec: expose accumulation through the shared machine lifecycle, retaining weighted grouping, absorbing completion and immediate bit-vector overflow refusal. (#3474, #3476)
zlib, git/inflater: Adler-32 and inflation adopt the shared lifecycle. Git's start/feed/finish exports become inflater; malformed, truncated and trailing input remain distinct. (#3480, #3481, #3483)
text, media/type: Unicode decoders and MIME detection adopt the shared lifecycle. Decoders flush incomplete units at EOF; MIME exports detector in place of detectInit, push and finish. (#3484, #3485)
types/patricia_trie, sul: storage-bound encoders adopt init, state-first update and terminal end; SUL retains height observation through updateWithHeight and endWithHeights. (#3486, #3487)
types/array: add generate(n, f) for dense readonly arrays. Lengths must be integers from 0 through 0xffff_ffff; invalid lengths throw before calling f. (#3463)
types/number: add numeric abs and ceil. PrimeField.reduce becomes mod, and the pattern policy's name callback becomes bindingName. (#3497)
crypto/mental_poker: add commutative card locks, deterministic shuffling and a three-player dealing demo with participant views. The educational protocol assumes honest players. (#3458)
effects: add compensateStep(e, cleanup), running cleanup only on failure and preserving the original error even if cleanup fails. (#3706)
effects/mock: add runAll; partialRun handles all through its own composed runner, so overridden handlers also apply to child effects. (#3675)
effects/node: add exists, returning false for missing, non-directory or looping paths while preserving other errors; add lexicalFileModule and the shared invalidModuleSpecifier message. (#3469, #3661)
git/loose: export write and path for loose objects. random256 moves from cas to effects/node. (#3692)
text/percent: add percentEncodeComponent; lone surrogates return null instead of producing invalid UTF-8 in shared demo links. (#3664)
text/ascii: add asciiLowercase. HTML names, Git config units, HTTP headers and virtual listen hosts now fold ASCII only, avoiding false matches with Unicode characters such as the Kelvin sign. (#3696, #3700, #3701)
text/utf16: codePoints moves here from ebnf/data, retaining well-formed-string validation. text/shell adds shellQuote, asserting that its input contains no NUL. (#3670, #3662)
edag/value: at and slice take already-converted numeric indices and return values directly. slice takes plain undefined for an omitted end rather than tagged undefined. (#3660)
edag: add the shared helper inventory and helperLength, replacing intrinsicLength. js/prototype exports prototypes and owns prohibitedAccess, formerly exported by the parser. (#3681, #3668, #3689)
js/ast/control: add children, someBlock and foldNodes for explicit stack traversal of FAST, keeping function bodies opaque while visiting their captures. (#3684, #3695)
edag/rust: remove unused expression/scope wrappers and serializer re-exports. compiler/serializer/function_text is removed; symbolic names move to js/ast/serializer/names. (#3674, #3690, #3691)
nanvm: add typed Rust L0 and its generational-handle ABI. Throws trap; host enter/leave marks let recover free abandoned handles and builders while preserving the retrieved thrown value. (#3631, #3648, #3650)
wasm/runtime: add the L0 reference view, L1 coercions, operators, member reads, calls, iteration and built-in bodies. Builders and join support one-pass construction; no WASM backend is added. (#3615, #3616, #3617, #3619, #3620, #3630, #3634, #3654)
nanvm: IVm requires with_unpacked; inspection operations borrow Any, including truthiness, type and instanceof checks. UFCS inspection calls take references; !&value is supported. (#3718)
nanvm: add vm::Module and exports, reporting non-object exports as a TypeError. Add SizedIndex::get, Array::present and Native::buffered. (#3676, #3669, #3482)
emergent_testing: fjs cov node checks each module's own proofs in a fresh process, enforcing 100% line, branch and function coverage. npm run cov is removed. (#3490, #3733)
emergent_testing: cache coverage by dependency manifest; --sync synchronizes successes with build-cache. Tool compatibility uses the FunctionalScript version; failures retain logs and reproducible commands. (#3730, #3731, #3734)
deps: fjs deps scans all authored .f.js/.f.mjs sources and writes _deps.json, following imports transitively without executing modules. Graph paths are relative to the output directory; cycles are retained. (#3502, #3595, #3603)
media/markdown: read thematic breaks, links inside bold/italic text, bounded nested emphasis, strikethrough, padded code spans and numbered lists starting at 1 immediately after a paragraph. (#3532, #3533, #3581, #3593, #3614, #3623, #3635)
media/html: add textContent, mapElement and foldElement. text/marked adds toTagged; WAT adds functionsMarked, and WASM demos display coloured Rust and WAT. (#3525, #3707, #3561, #3563, #3578)
js/marked: TypeScript primitive names receive keyword colours where js/type_position establishes a type position, preserving value names such as RTTI builders. (#3649)
compiler: the demo links multiple editable files, restores them from shared URLs and reports import cycles and sandbox path differences. (#3713)
website: heading links navigate rather than copy. Demo URLs update after typing pauses; action updates replace history entries, and refused history writes no longer freeze the demo. (#3588)
website: README titles become page headings; Issues starts collapsed. Shared links gain preview metadata and README card images; rustdoc pages gain individual Open Graph URLs. (#3599, #3538, #3525, #3546, #3715)
website/demo/graph: add table layout with row spans; B-tree demos and the compaction game show keys in order with horizontal child arrows. (#3710)
fjs: list, code-point and B-tree implementation paths change from module.f.mjs to module.f.js; monoid, list/alt, string, ordered-map and string-set modules follow. (#3494, #3495)
fjs: path, pattern, mirror, prime-field, VDF, secp, sorted-list/set, number, function/length, range-map/set and zlib/window implementation paths change from module.f.mjs to module.f.js. (#3497)
fjs: WASM instructions, Huffman, base16, personal-notes CI, mental poker, Git alternates, identifiers, UTF-16 and version implementations use .f.js. The host list/iterable adapter uses module.mjs. (#3463, #3596, #3600, #3585)
fjs: the B-tree test library and deferred-tail fixture change from .f.mjs to .f.js. (#3495, #3595)