| created | 2026-04-30 | |
|---|---|---|
| last_modified | 2026-05-10 | |
| revisions | 38 | |
| doc_type |
|
All notable changes to m-stdlib are documented here. Format follows Keep a Changelog; the project adheres to Semantic Versioning. Pre-1.0 minor versions may include breaking changes.
Reading model. Each entry below is a thin index — a one-paragraph
headline plus bullet pointers into the canonical sources (tracker
tickets, per-module History sections, discoveries register). The
deep implementation narrative lives in those sources, not duplicated
here. See README.md § Bucket 4 for the rationale.
Discoverability & tooling — Wave A. First wave of the
discoverability and tooling plan:
structured-tag grammar, machine-readable manifest, CI manifest-drift
gate. Doc + tooling only — no src/STD*.m runtime behaviour change.
- Closed Wave A tasks: WA1 (M-doc tag grammar), WA4 (manifest generator), WA5 (CI manifest-drift gate), WA6 (frontmatter on all 32 module docs), WA7 (
dist/errors.json), WA8 (this release tag) — seediscoverability-tracker.md§ Wave A. - New machine-readable surface:
dist/stdlib-manifest.json(every public module + label with signature, source line, tag-derived fields),dist/errors.json(invertedU-STD*→ producing-module index), YAML frontmatter on everydocs/modules/std*.md. - Cross-cutting follow-ons (deferred): WA2 (src/ tag backfill), WA3 (
M-DOC-001lint rule in m-cli) — both unblock Wave B (m-clim docfamily) once landed. - Tag:
v0.5.0. Compare:v0.4.0..v0.5.0.
Phase 3 close + STDXML full envelope + STDFS byte-faithful I/O + deployment automation. All three Phase 3 callout modules engine- green; STDXML reaches ~100% of its 12-16d envelope; STDFS gains libc-backed byte-faithful arms. Aggregate gate at this tag: 32 suites, 2483/2483 assertions green on engine, 0E lint, fmt clean.
- Phase 3 modules engine-green — STDCRYPTO H1 (23/23, T28 closed), STDCOMPRESS H2 (59/59, T28 + T30 closed), STDHTTP H3 (68/68, T29 closed). Per-module deployment narratives in each module's § History.
- STDXML reaches feature-complete v1 — T26 (DTDs / DOCTYPE /
<!ENTITY>) + T27a (XPath wildcards + attribute axis) + T27b (XPath functions + comparison predicates).stdxml.md§ History walks all eight T-ticket landings. - STDFS byte-faithful I/O — T13 + T14 closed; new
writeBytes/appendBytes/readBytes/availableextrinsics over libc.stdfs.md§ History. - STDCSPRNG getrandom(2) callout — T12 closed; pure-M
/dev/urandomfallback unchanged.stdcsprng.md§ History. - Two more P4 promotions — STDMATH (L26) and STDXFRM (L27) — see
stdxfrm.md§ History for the@expr→ XECUTE migration that landed this release. - Deployment harness —
scripts/seed-callouts.sh(T28 + T29 close): build inside container, stage.so+.xc, idempotently injectSTDLIB_LIB+ydb_xc_<pkg>into/etc/profile.d/ydb_env.sh. Used by all four callout modules. - Discoveries that shaped this release:
discoveries.md2026-05-07$ZFmangling (m fmtrewrites$ZF→$zfind);$&pkg.fnABI prependsint argcon every C entry; YDB r2.02 caps M-strings at 1 MiB. - Tag:
v0.4.0. Compare:v0.3.0..v0.4.0.
Phase-2 close + P4 module wave + bug-fix sweep. Eleven new pure-M
modules promoted out of the proposal pipeline (see
future-modules-plan.md § Promoted out);
three m-cli companion tracks bind the new modules into m test. New
lint rule M-MOD-037 catches the YDB .x(SUBS) syntax limit at lint
time. Aggregate stable-suite gate: 16 suites, 1230+ assertions, 0E
lint, fmt clean.
- P4 promotions (L15–L25) — STDCSPRNG, STDFS, STDOS, STDSEMVER, STDSTR, STDTOML, STDCACHE, STDPROF, STDSNAP, STDENV, STDXML v0+T23+T24+T25+T25b. Per-module narratives in each module's § History (e.g.
stdfs.md,stdcsprng.md,stdxml.md). - m-cli companion tracks — C6 (
m test --timingsconsuming STDPROF), C7 (--update-snapshotsconsuming STDSNAP), C8 (--env PATHconsuming STDENV). Short-code reference inmodule-tracker.md§ m-cli integration short codes. - STDXML closes T23 + T24 + T25 + T25b during this cycle; T26/T27 close in v0.4.0. See
stdxml.md§ History. - New lint rule —
M-MOD-037(in m-cli) flags.x(SUBS)calls at lint time, anchored todiscoveries.md2026-05-06.x(SUBS)syntax. - Tag:
v0.3.0. Compare:v0.2.0..v0.3.0.
Phase 2 release. Four pure-M heavy-lift modules complete the
Phase-2 set: STDJSON, STDREGEX, STDCOLL, STDURL. Two add-ons land on
the same tag boundary: STDLOG FORMAT(kv|json) and STDSEED
loadJson. Phase 1b TDD primitives (STDFIX, STDMOCK, STDSEED) rolled
into this release as their v0.1.x minor tags were never cut.
Aggregate gate: 800+ assertions across 16 suites, 0 lint errors,
per-module label coverage ≥ 95%.
- Phase 2 core — STDJSON (L11), STDREGEX (L12), STDCOLL (L13), STDURL (L14). Per-module reference in
docs/modules/. - Add-ons — STDLOG
FORMAT(kv|json)(L4 add-on) and STDSEEDloadJson(L10 add-on); both unblocked by STDJSON in this release. - Phase 1b folded in — STDFIX (L8), STDMOCK (L9), STDSEED (L10).
- Auxiliary tracks A3/A4/A5/A6 — JSON conformance corpus, RFC-4122/9562 UUID vectors, IRIS portability CI job,
tools/build-callouts.shPhase 3 prereq. - Discoveries that shaped this release:
discoveries.md2026-05-05 P1 STDASSERT.raises ZGOTO unwind — fixed$ETRAParg-lessquitcascade in extrinsic chains; unblocks T2 (STDFMT/STDDATE/STDCSV raises tests) and partial T3 (STDLOG-JSON).discoveries.md2026-05-06 docs.x(SUBS)syntax limit — STDJSON encode/parse refactored to merge-then-pass; T6 closed.discoveries.md2026-05-05 P2$ETRAP+TROLLBACK propagation — STDFIX restructured to one-shotwith/invoke.- See
stdregex.md§ History for theraise()-helper pattern (commit3abf7e8) back-ported to STDFMT/STDARGS in8c0b419.
- Closed tickets: T1, T2, T3, T6, T7, T9, T10. Cross-references in
module-tracker.md§ Closed tickets. - Tag:
v0.2.0. Compare:v0.1.0..v0.2.0.
Phase 1 release. Seven new pure-M modules ship across tags
v0.0.2–v0.0.7, completing the Phase-1 set planned in §8 of the
implementation plan. With v0.0.1 (STDASSERT + STDUUID),
m-stdlib at v0.1.0 provides nine modules: assertions, UUIDs,
base64 + hex, printf-style formatting, structured logging, ISO-8601
datetime, RFC-4180 CSV, argparse.
- Phase 1 modules (L1–L7, L4b folded) — STDB64 (L1), STDHEX (L2), STDFMT (L3), STDLOG (L4 + L4b folded — STDDATE landed first so the inline-ts interim was never cut; see
stdlog.md§ History), STDDATE (L5), STDCSV (L6), STDARGS (L7). - Conformance corpora —
tests/conformance/b64/(RFC-4648 §10),tests/conformance/csv/(RFC-4180 §2 + excel-quirks + UTF-8 BOM);{json,uuid}/reserved for Phase 2. - Per-module gate (§9): 527/527 assertions across 9 suites, 0E lint, ≥95% label coverage per module (most at 100%), fmt clean. STDLOG inline-timestamp helper removed in favour of
$$now^STDDATE(). - Deferred: error-path
raisestests for STDFMT and STDDATE — blocked on the STDASSERT.raises P1 documented indiscoveries.md2026-05-05. Closed in v0.2.0. - Tag:
v0.1.0. Compare:v0.0.1..v0.1.0.
| Tag | Date | Commit | Modules added |
|---|---|---|---|
v0.0.2 |
2026-05-05 | 83e11b2 |
STDB64 (RFC-4648 std + URL-safe), STDHEX (RFC-4648 §8) |
v0.0.3 |
2026-05-05 | 8e6b689 |
STDFMT (printf-style; subset of Python str.format) |
v0.0.4 |
2026-05-05 | abfa9a2 |
STDLOG (kv logger; L4b folded — uses $$now^STDDATE()) |
v0.0.5 |
2026-05-05 | 1ec3b00 |
STDDATE (ISO-8601 datetime + duration arithmetic) |
v0.0.6 |
2026-05-05 | 0f7de40 |
STDCSV (RFC-4180 parser/writer + file I/O) |
v0.0.7 |
2026-05-05 | c98d5a1 |
STDARGS (argparse: long/short/grouped/positional/--) |
Bootstrap release. STDASSERT + STDUUID — the assertion library
that anchors every subsequent test suite, plus the first
non-STDASSERT module to validate the per-module §9 acceptance gate
end-to-end.
STDASSERT— assertion library; output protocol mirrors^TESTRUNbyte-for-byte so m-cli'sm testrunner accepts STDASSERT-driven suites unchanged. Internalpass/failhelpers renamed torecordPass/recordFailto dissolve the M-MOD-020 label/formal name-shadow warning (discoveries.md2026-04-30 P3).STDUUID— RFC-4122 v4 + RFC-9562 v7 UUIDs.tools/init-db.shbumped toKEY_SIZE=1019+BLOCK_SIZE=4096so YDB'sview "TRACE"can capture deepFOR_LOOP/*CHILDRENsubscripts without%YDB-E-GVSUBOFLOW(discoveries.md2026-04-30 P2).- Per-module gate (§9): 166/166 assertions across 2 suites, 22/22 labels (100%), 0E lint, fmt clean. IRIS portability fail-soft (CI re-add deferred to v0.0.4).
- Tag:
v0.0.1.
Project skeleton. Devcontainer, CI, Makefile, license, README,
STDASSERT bootstrap probe (single-test sanity check that the m-cli
m test runner accepts STDASSERT-style assertions under the existing
^TESTRUN output-protocol parser).
README.md— the four-bucket doc model this changelog follows.module-tracker.md— canonical per-module tracker (Summary table + closed-ticket archaeology).discoveries.md— discoveries register (in-project pivots + external toolchain findings).../modules/— per-module reference; each module has a § History section with deep implementation narrative.../plans/m-stdlib-implementation-plan.md— per-module specs and §9 acceptance gate.../plans/future-modules-plan.md— proposal pipeline.