• v0.31.0
    Release / build (amd64, linux) (push) Successful in 42s
    Release / build (arm64, linux) (push) Successful in 40s
    Release / build (loong64, linux) (push) Successful in 42s
    Release / build (riscv64, linux) (push) Successful in 45s
    Release / release (push) Successful in 18s
    Stable

    petrbalvin released this 2026-08-20 14:24:44 +00:00 | 197 commits to main since this release

    The arm64 encoder (Phase 5 — complete) ships with ELF64 and GOOBJ emission,
    verified byte-for-byte against GOARCH=arm64 go tool asm and linked into a
    real go build. The encoder covers the full integer instruction set, FP
    arithmetic, conditional select, CRC32, and the MOV pseudo-instruction with
    bitmask immediate encoding. The project now requires Go 1.27.

    Added

    • arm64 encoder (Phase 5 — complete). gasm asm can now assemble _arm64.s
      files: the AArch64 integer instruction set with the MOV pseudo-instruction and
      its immediate-constant expansions (MOVZ/MOVN/MOVK for wide immediates, ORR with
      logical bitmask encoding for values like $1), data-processing (shifted
      register and immediate forms), load/store (scaled unsigned and unscaled9-bit
      immediate), conditional and unconditional branches, FP/SP frame mapping,
      SB/global symbol references (ADRP+ADD pairs with R_ADDRARM64 relocations),
      jump chain folding, and ELF64 emission (gasm asm --format elf). Ground-truth
      verification against GOARCH=arm64 go tool asm matches byte-for-byte. Phase 5
      (the other architectures — RISC-V, LoongArch, arm64) is now complete.

    Changed

    • Go 1.27 required. The project now requires Go 1.27 (toolchain go1.27.0).
      The R_DWTXTADDR_U4 relocation type is detected at runtime for backward
      compatibility.
    Downloads