madc v0.92.1
This is the download release for the v0.92 line — the first published
binaries on all three platforms since v0.82.0. Every feature below ships
in the attached packages (Linux .deb/.rpm, Windows zip, macOS
tarballs for Apple Silicon and Intel).
Features
std::format,std::print, andstd::printlnare simply part of
madc — no includes, no header parsing:
std::println("x={} y={:.3f}", x, y);works in a bare script. Literal
format strings are validated at compile time (bad presentation types,
bad indexes, and malformed strings are compile errors), and output is
pinned byte-for-byte to real libstdc++std::formatby 1430 generated
oracle rows — shortest-round-trip floats, bit-exact hex floats, the
works.std::formatreturns a realstd::string.cout << valuewith zero includes —value/varis an inherent
madc type, and streaming one works in a bare script regardless of
include order:var test = "hello"; cout << test << endl;— and it
honors<iomanip>manipulators (setprecision,setw,setfill).- UFCS in the madc dialect — free functions call as methods and
methods as free functions under--std=madc. php::print_r/php::var_dumpover ANY madc type — structs,
classes, containers, nested aggregates, not justvalue/array;
cycle-safe, with the type words a human expects (std::vector<int>,
not the canonical four-argument spelling).- Range-
forover PHP arrays with the carrier as the element —
for (value v : arr)is kind-preserving with copy semantics;auto
elements work too. valuematurity —value(N)constructors in temporaries,
direct-init, and loop headers;.count()/.size()owner semantics;
php::array_pushas one overloaded name returning the new count.- Headerless libc calls get real signatures — an undeclared
floorf(3.9f)passes a genuinefloat(nine argument shapes, three
suffixes each) instead of the variadic promotion garbage. --versionreports the build.
Fixes and internals
- win64: ucrtbase hides four C99 float-math names (
fabsf,frexpf,
hypotf,ldexpf) from runtime lookup; they are now pinned in the
name map, closing the complete hidden set (found by the new
three-platform release gate). - win64:
var_dump(long)printed the rank'sint(42); the LLP64
platformlongnow words as its source name —long(42)on every
target. - Front end: a cast binds a paren-less
sizeof/alignofoperand
((long long)sizeof chunk). - Numeric overload grading: a float argument selects
double, never
truncates. - Process: every master promotion is three-platform and the platform
suites gate it;fulltestgates the merge wave; master release notes
summarize everything since the previous master release, features
first.
Validation
Linux fulltest, native EXE/OBJ lanes, packed and headerless suites,
Windows wine packed suite, and the macOS release verifiers — all green
at this tag. Counts in docs/test-status.md and the
CHANGELOG.
Full feature detail: v0.92.0 notes
and docs/release-notes/ for the per-release stories (v0.83.0–v0.92.1).