FantASM 2.2.0 is available
October 2, 2026
FantASM
FantASM 2.2.0 is available to download. The linker grows up: fantasm link places sections by a link map, writes fxi version 3, and carries !test blocks from objects into a JSON file another host can run. A program embedding the crate can now assemble, link and write every output in memory, with no scratch files.
Breaking
fxiis version 3. A region-table entry is 7 bytes and carries its own address, so regions need not be adjacent. A version-2 reader cannot read a version-3 file.- For a program embedding the crate —
FormatContexthas atestsfield. A program constructing one suppliestests: &[].
Added
- A link map [
fantasm link --map]:REGIONplacesregion=sections at a run address apart from where they load;_run,_loadand_sizeread a region. - Brace blocks:
MACRO,IF,REP,!virtual,!test,STRUCT,MODULEandINTERFACEclose with}as well as their own closer. !testin an object build, carried through the link into a test description file [fantasm link --tests], with a ready point to run the image to first [!tests_ready,--tests-ready,--tests-ready-limit].- Linked header fields [
fantasm link --pc,--sp];!nex pcandsptake a symbol name in an object. - In-memory linking and output for embedders:
Assembler::write_to,LinkMap::parse,linker::write_to,write_sld_to,write_labels_to, andfantasm::fzobjre-exported.
Fixed
25 fixes, and the worst of each group:
- 17 wrong output, silently — a constant reading
$beside a label took the wrong value;label + Nin an object lost itsNonce linked; apage=section was left out of a linked.nex. - 4 sources that should have linked or assembled —
_page()andSIZEOF()of a macro parameter were refused; twopage=sections sharing awindow=were refused as overlapping. - 4 in debug and artifact output — a linked SLD named the wrong page for a region’s and an
fxilink’s records;--export-labelswrote a self-reference to the wrong file.
27 new diagnostic codes, 1201 to 1227. E1164 is withdrawn: a !test block in an object build is now assembled. Test coverage expanded from 1,762 to 2,015 tests.
Every change is in the full changelog under [2.2.0].
Get it from the Downloads page.