Skip to content

v0.75.0 — the madc::value intrinsic + value-first <ns_madc>

Choose a tag to compare

@derekbsnider derekbsnider released this 09 Aug 21:54
· 67 commits to master since this release

Release v0.75.0 — 2026-08-09

madc::value is now a first-class script intrinsic: value, var, and
qualified madc::value work with zero includes in the default dialect,
and the whole madc:: API surface is typed in it — the value-first
<ns_madc> drops its #include <string>, so madc::-only scripts
compile at the millisecond floor (the exec-channel sort script: 15ms
packed, down from ~130ms). Two long-latent compiler defects the work
uncovered ship fixed in the same release.

  • value / var / madc::value — spellings of the one intrinsic
    DataDef (canonical madc::value); array unchanged (a madc::array IS
    a madc::value carrying an array). var declares the runtime-retaggable
    dynamic carrier (contrast compile-time auto). Bare spellings are
    --std=madc-only; qualified madc::value works in every mode.
  • Scalar surface on the intrinsic — native operator= family
    (cstr/int/real/bool/value), c_str(), printf %s coercion, and the
    channel readline/readall/write value carriers.
  • Value-first <ns_madc> — primary API in value + const char*
    (value-out eval twins with _ctx scope-capture siblings, const char*
    context keys); std::string overloads become conveniences declared
    exactly when <string> precedes <ns_madc> (auto-include orders it
    correctly for include-free scripts).
  • No-viable method overloads against value parameters now diagnose
    ([over.match.viable]) instead of silently compiling the by-name arity
    pick with the wrong parameter class (a raw std::string* passed as
    madc::value*).
  • Method default arguments work[required..total] arity plus
    call-site filling from the selected overload; previously they survived
    overload selection only via the silent fallback and then failed in
    c2mir.
  • Use-after-free fixed in the file-lane tokenizer — token file
    pointers are interned; libmadc's temp-source eval no longer leaves the
    lazy JIT build reading freed memory (valgrind-clean).
  • Suite grows to 1017 integration tests (JIT, EXE, OBJ, release,
    packed all 0-failure) and 1013/0 on the libc++ flavor lane.

See CHANGELOG.md for full details.