Skip to content

v0.82.0 — the three-platform release: Linux, macOS and Windows from one tree

Choose a tag to compare

@derekbsnider derekbsnider released this 17 Aug 01:03
· 103 commits to master since this release

Release v0.82.0 — 2026-08-17

The three-platform release. Linux, macOS and Windows ship together from one
tree, each validated on its own terms — and the macOS regression that blocked
that is fixed at its root rather than worked around. The Mac battery is back to
exact parity with v0.77.0, the last darwin release built, with every regressed
leg restored.

  • std::cout << "hi" works again on macOS. A class-nested enum tag was
    stamped a forest type-id but never given a record, so std::ios_base's
    event_callback *__fn_ could not be rebuilt when a forest was bound — and the
    fill silently dropped the whole class, taking the entire iostream family with
    it. Eleven aggregates died on one member, because members flatten from bases.
    Without ios_base there was no vptr slot, so __vptr was never emitted and
    operator<< never resolved.
  • The fix is where the id is stamped. Enums reached through a class's
    type_aliases — where the live parse writes them — are now recorded through
    one shared writer that the existing datatype_map walk also calls, so the two
    surfaces cannot drift. The record carries its owner's provenance and a
    DF_ENUM_CLASS_NESTED flag, so the restore re-attaches the tag as its owner's
    alias only. It still does not leak to file scope, which is what
    [basic.scope.class]/1 requires and what the parser guard was protecting.
  • madc's embedded <stdarg.h> no longer declares the v*printf family.
    gcc and clang declare zero stdio functions there. Under darwin's
    _FORTIFY_SOURCE=2 those declarations expanded mid-header into fortify
    builtins and failed to parse, killing every hosted-*-macos forest pack.
  • Three silent losses became measurements. A bound forest now names every
    aggregate the fill dropped and every derived type the materialisation fixpoint
    could not build, with the blocking member, base or parameter. Each was
    previously a bare continue.
  • Every artifact lane builds the binary it validates. headerless-win had
    been testing a PE built eight hours before the fix under test. packed and
    headerless shared the same trap. Freshness now comes from the Makefile.
  • Validated on all three platforms at the released tree. Linux
    1054/0/0/9 JIT, 1021/0 exe, 1021/0 obj, 1054/0 packed, 1028/0/0/35 headerless,
    zero warnings on every lane. Windows 1011/0/0/52 under Wine and 1011/0/0/52
    headerless. macOS both arches packed at 835 units with the Mach-O release
    verifier green, and 7/3 on real Apple-Silicon hardware.
  • New regression gate. forest_bind_gate case [nestedenumfn] reproduces
    the darwin defect on Linux and is negative-controlled — it fails with the fix
    reverted.

Known gaps unchanged from v0.77.0 on macOS: ostringstream::str, the
include-free madc::value intrinsic, and the exec:// channel. madc still
has no --version flag on any platform.

See CHANGELOG.md for full details.