rg-asm release notes
The assembler and linker for Atari ST, TT and Falcon. Newest release first.
0.7.3 — 2026-08-26
Test-infrastructure only: the shipped assembler is unchanged.
Improvements
- The test suite's scratch directories now remove themselves; the helper behind 44 tests never deleted them, leaving 177,488 on the build host.
- No assembler behaviour is affected — the change is confined to the crate's test module.
0.7.2 — 2026-08-25
Minor test suite hardening for deterministic non-terminal resolution.
Improvements
- Summary display precedence tests now resolve terminal capabilities explicitly.
0.7.1 — 2026-08-21
More floating-point coverage, a size-optimisation fix, and linker fixes for cases that could previously assemble or link to the wrong bytes. Default dialect output is unchanged.
New features
FScc,FDBcc, andFTRAPccnow recognise and encode all 32 condition predicates, completing the FPU condition-code surface.- Added a library option so callers that re-assemble their own listings can control instruction alignment independently of the selected dialect.
- Raw
#{$w0,$w1,$w2}FPU immediates now also accept the 12-byte packed (.p) form, matching rg-dis's byte-exact packed listings.
Bug fixes
- Invalid raw
#{$...}floating-point immediates are now rejected instead of being silently dropped; previously the bytes after the instruction could be misaligned. --no-opt-sizenow keepsCMPA.L #n,Anlong as written; it was the one size transform that still fired with size optimisation disabled.- Same-section PC-relative references are now recomputed by the linker when
--relaxis used, fixing cases where a function could resolve to a point inside itself. - Expressions used as displacements now relocate correctly instead of turning into zero when they involve a symbol difference.
- A BSS section that references an external symbol now produces an error instead of silently dropping the reference.
- An unknown named section type is now reported as an error instead of being assembled into the current section.
- Named typed sections now keep their name where the output format supports it, so small-data sections can be placed by name.
Known issues
- With size optimisation enabled, an explicitly sized absolute address such as
move.l ($52).l,d0can still be shortened to word form; the explicit long form is currently treated as a size hint rather than a directive.
0.7.0 — 2026-07-29
Adds GenPC dialect support — Ziggy/OVR's PC cross-assembler (Overlanders).
Use --dialect=genpc for GenPC and as68 sources.
New features
--dialect=genpc: brace{/}macros,IF/WHILE/REPEAT,@octal, Devpac-styletext/end.- Flat binary output with
--raw; optional--relocreloc-table trailer and--strip-bsstail trim. LS/LSTsymbol-file load;.SY2overlay values when assembling with--reloc.
Improvements
- Default
--dialectrestored tovasmfor FASTBuild and GODLIB Motorola sources.
Bug fixes
- GenPC: SY2 overlay reloc values, WHILE/REPEAT parse depth, and sizing defaults (forward branches word-sized, unsized MOVE defaults to word).
0.6.0 — 2026-07-27
Much broader dialect coverage and byte-level checks against classic Atari
assemblers. Devpac, TurboAss, MADMAC, Alcyon and several other tools now have
committed goldens; --strict-dialect catches foreign syntax more reliably.
New features
- Full-syntax corpora for TurboAss and DevpacST 1.01 (STANDARD / GenST TOS programs).
- Expanded MADMAC, Alcyon AS68, Lattice, SEKA, GST-ASM and other dialect packs with host oracles.
- Dialects and smoke harnesses for additional vendored assemblers (Sozobon, Josy, Brainstorm, MWC, AssemPro, GFA).
- LLVM-flavoured GAS ingestion path and a
gas-llvmcorpus. - Aztec C Mot ingestion with a self-golden DRI pin (native ST
AS.TTPstill not available).
Improvements
- GenST / TurboAss
--prgoutput matches classic empty-DATA and reloc trailers more closely. --strict-dialectpromotes foreign-syntax heuristics to hard errors across dialects.- Rejection checklists and negatives for every dialect coverage matrix.
Bug fixes
- Fixed empty-DATA padding when text length was 2 mod 4 (vlink-style pad) for GenST-family and TurboAss programs.
- GenST 1.01 treats
|as a line comment; ENDC handling matches the era.
0.5.6 — 2026-07-24
Added more vasm Mot and Pure C dialect coverage, and fixed a macro expansion crash. Building the macOS release no longer needs CoreFoundation.
New features
- Broader vasm Mot syntax: nested
\@!/\@@stacks,-allmpfor args 10–35, include / offset / section, data aliases and conditionals. - Pure C
MACRO name.sizesized-macro expansion, plus SET / EQU / MACRO / REPT / CPU coverage. - Pure C object names and FIX tables closer to PASM.
Bug fixes
- Macro
.sizeand\?0expansion no longer panics. - Dropped the
chronodependency so macOS cross-builds do not need CoreFoundation.
0.5.5 — 2026-07-22
Added support for additional dialects and improved the size optimiser. rg-asm now understands far more of RMAC's syntax, produces tighter code at the higher optimisation levels, and lays out Devpac-style object files more faithfully.
New features
- Much broader support for RMAC-style source, including its higher optimisation levels.
- Tighter code from the size optimiser: some absolute memory accesses become shorter PC-relative forms.
- Improved Devpac-compatible object output and listing formatting.
Bug fixes
- Fixed a false error on some forward references in indexed PC-relative addressing.
- More accurate instruction timing for immediate-to-register arithmetic.
- Corrected a few object-file layout details for better interoperability with other tools.
0.5.1 — 2026-07-20
Added a machine-readable JSON mode and an optional per-function size/timing table. Also fixed a pile of linker bugs — cases that used to emit subtly wrong programs now either work correctly or stop with a clear error.
New features
- A
--jsonmode that prints one structured document you can feed to other tools. - An optional
--functionstable showing the size and cycle cost of each function.
Bug fixes
- Fixed several linking bugs that could silently produce incorrect programs.
- Out-of-range jumps, bad relocations, and malformed flat images now stop with a clear error instead of emitting wrong bytes.
Breaking changes
- With no
-o, the output file is now named after the input (main.s→main.prg) instead of alwaysout.tos. Pass-o out.tosto keep the old name. - The
--summaryoptions were replaced by--functions(the per-function table),-q(quiet), and--json(machine-readable). - A few command-line flags were renamed for consistency; see the manual for the current names.
- The separate manual and man page were folded into the README that ships with the download.
0.1.0 — 2026-06-01
First public release. One self-contained assembler and linker for Atari ST and Falcon development — runs natively on Linux, macOS and Windows with nothing else to install. Free and open source (MIT or Apache-2.0).
New features
- Assembles Motorola syntax plus seven other classic assembler dialects, detected automatically per file.
- Links directly to ready-to-run Atari
.TOS/.PRGprograms. - Supports the full 680x0 line (68000–68060) and ColdFire instruction sets, floating-point targets, and a size optimiser.
- Reads and writes every common Atari object-file format, so it mixes cleanly with other toolchains.
Known issues
- A handful of 68030 memory-management instructions are recognised but not yet assembled; rg-asm reports an error for them rather than risk emitting wrong code.