0.18.0
rtti: parse now mirrors validate's container factories, and the shared container guards and types move into the common kernel #853tf: add the fmtImport output format (import("./f.ts").path()), null call markers in paths, file on Reporter.pass, and relative module keys #851tf: Reporter.test owns execution; parseTestSet is uncurried and defaultTest exported; Sandbox drops out of the runModuleMap constraints #844types: extract the shared bsearch helper used by sorted_list.find and range_map.get, and move the curried Cmp<T> alias to function/compare #845tf: export runModuleMap and add the experimental run2 in module.ts #843tf: extract runModule / runModuleMap, flatten the walk signature, and filter before reduce #842tf: virtual tests via JsModule plus a pass-through sandbox; Reporter<O> and Program<O> become generic #840- Effects: Node: Virtual: new file type —
JsModule #834 tf: extract the Reporter interface; test takes a Reporter and returns a NodeProgram, moving the isGitHub branching out of the walker #831fjs: convert main to NodeProgram, dispatching sub-commands by returning Effects directly and dropping the Io dependency #830tf: convert main to NodeProgram — replaces the Io dependency with loadModuleMap2, the sandbox effect, and csiWrite #828tf: eliminate the double sandbox call for throw-tests; parseTestSet returns TestEntry = { fn, throws }. Adds the no-type-predicate rule to AGENTS.md #827uint8array: mark the module deprecated — use utf8 / utf8ToString from fs/text and bit_vec directly #823tf: remove the unused anyLog helper #823- Effects: retire the
Log / Error / Console operation types; log and error are now helpers built on write #822 - Effects: add the
Write effect (write(stream, data)) and WriteConsoles to NodeOp; add std to NodeProgramOptions and csiWrite to fs/text/sgr #816 - IO: add
write(stream, data) to Io with backpressure via stream.write() plus once(stream, 'drain') #821