From 97dfaa7526792226fccfc06b92d3d11598656a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Balv=C3=ADn?= Date: Sun, 20 Sep 2026 14:25:47 +0200 Subject: [PATCH] docs: changelog for macro expansion and the corrected corpus audit Assisted-by: GLM 5.3 Flash --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49ccb91..b434567 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- **Macro expansion and include splicing.** `gasm asm`, `gasm diff` and + `gasm audit-instructions` now preprocess assembly the way the + toolchain does: object and parameterised `#define` macros expand at + the point of use, `#undef` and the `#ifdef`/`#ifndef`/`#else`/ + `#endif` family select branches, `#include` splices headers resolved + through the source directory and the new repeatable `-I` flag, `;` + separates statements, and constant expressions left in operands + (`$(32-7)`, `$~63`, `(index*4)(base)`) fold at parse. Expansion + happens only on the assembly path: `gasm lint`, `gasm fmt` and the + language server keep reading the raw file. - **The GOROOT instruction wave, part 1.** The encoder now covers the instruction families GOROOT's real code uses that gasm lacked, byte-verified against `go tool asm`: on amd64 the carry ALU, the @@ -129,6 +139,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- **The corpus audit attempts fewer files that no build would compile.** + Files named for Go ports gasm does not target (arm, 386, s390x, ...) + are reported as other-port and never attempted, the headline rate is + computed over attemptable files, and the audit searches the + toolchain's shipped headers (funcdata.h and friends) automatically. - **riscv64 JALR silently jumped to the wrong register.** The trampoline form `JALR X0, 0(X5)` read the memory operand's base as the destination, encoding a jump to X0 with no diagnostic; the destination is the first