From b08885bd31071af3fcfaba9d509f96950498e3b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Balv=C3=ADn?= Date: Thu, 13 Aug 2026 18:27:12 +0200 Subject: [PATCH] chore(release): prepare v0.30.0 Assisted-by: DeepSeek V4 Pro --- .gitea/workflows/release.yml | 2 +- .gitea/workflows/test.yml | 6 +++--- AGENTS.md | 2 +- CHANGELOG.md | 14 ++++++++++++++ CONTRIBUTING.md | 2 +- cmd/gasm/main.go | 2 +- docs/ARCHITECTURE.md | 3 ++- docs/development.md | 2 +- go.mod | 2 +- justfile | 2 +- 10 files changed, 26 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 868f38e..a4ac7df 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/setup-go@v6 with: - go-version: "1.26" + go-version: "1.27rc1" - name: Download dependencies run: go mod download diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index ef10e20..0046152 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/setup-go@v6 with: - go-version: "1.26" + go-version: "1.27rc1" - name: Download dependencies run: go mod download @@ -41,7 +41,7 @@ jobs: - uses: actions/setup-go@v6 with: - go-version: "1.26" + go-version: "1.27rc1" - name: Download dependencies run: go mod download @@ -84,7 +84,7 @@ jobs: - uses: actions/setup-go@v6 with: - go-version: "1.26" + go-version: "1.27rc1" - name: Download dependencies run: go mod download diff --git a/AGENTS.md b/AGENTS.md index 59cda8b..a7f1248 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -55,7 +55,7 @@ No body, no footers, no trailing period on the subject. ## Code Style -Language: Go 1.26 (`toolchain go1.26.5`). +Language: Go 1.27 (`toolchain go1.27rc1`). ### Formatter diff --git a/CHANGELOG.md b/CHANGELOG.md index b614510..9f28a68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,17 @@ and this project adheres to [Conventional Commits](https://www.conventionalcommi Unreleased changes on the `development` branch. +## [0.30.0] — 2026-08-13 + +The LoongArch encoder (Phase 5) ships with ELF64 and GOOBJ emission, verified +byte-for-byte against `GOARCH=loong64 go tool asm` and linked into a real +`go build`; the shared GOOBJ emitter now writes the per-function DWARF symbols +the linker's DWARF pass reads. The RISC-V encoder reaches byte-for-byte parity +with `go tool asm`: the frame model, operand ordering, RVC compression, +large-immediate and `MOV $imm` materialisation, branch/jump encodings, and +`CALL sym(SB)` (now a `JAL` with an `R_RISCV_JAL` relocation). The debugger +tracks four hardware watchpoint slots, and the toolkit is Linux-only. + ### Added - **LoongArch encoder (Phase 5).** `gasm asm` can now assemble `_loong64.s` @@ -100,6 +111,9 @@ Unreleased changes on the `development` branch. - **Linux only.** The toolkit, its CI and the released binaries are now Linux-only; cross-compiled to linux/{amd64,arm64,riscv64,loong64}. +- **Go 1.27 toolchain.** The build and CI toolchain moves to `go1.27rc1` + (the release-candidate line used to ship Go 1.27 features on release day), + so the emitted GOOBJ relocation types match the toolchain that links them. - **Phase 4 closed.** README's "Remaining" list for the debugger is gone; disassembly at PC, memory-write, watchpoints, and source-line mapping are all shipped. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f02cc5..06ce7c9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ## Prerequisites -- Go 1.26 or later (`toolchain go1.26.5`) +- Go 1.27 or later (`toolchain go1.27rc1`) - `just` command runner - A Linux host on amd64, arm64, riscv64 or loong64 diff --git a/cmd/gasm/main.go b/cmd/gasm/main.go index c0bc1eb..6a37031 100644 --- a/cmd/gasm/main.go +++ b/cmd/gasm/main.go @@ -34,7 +34,7 @@ import ( // version is the release version, stamped at build time via // -ldflags "-X main.version=…" (defaulting to the current release). -var version = "0.29.0" +var version = "0.30.0" func main() { if len(os.Args) < 2 { diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index a35100b..e7bf73e 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -302,7 +302,8 @@ verbatim) is captured from the installed `go tool asm`, so the output is always consistent with the toolchain that links it. RISC-V and LoongArch GOOBJ emission share this emitter: the loong64 marker with R_LOONG64_ADDR_HI/LO relocation types, and the riscv64 marker with a single -R_RISCV_PCREL_ITYPE/STYPE relocation per AUIPC pair — the model `cmd/asm` +R_RISCV_PCREL_ITYPE/STYPE relocation per AUIPC pair (plus `R_RISCV_JAL` for +`CALL sym(SB)`) — the model `cmd/asm` writes, not the ELF HI20/LO12 pair — and both link into a real `go build` for their `GOARCH`. Per function, the emitter also writes the two DWARF symbols the linker's DWARF pass reads verbatim — the subprogram DIE diff --git a/docs/development.md b/docs/development.md index b1e1e09..ffee4e6 100644 --- a/docs/development.md +++ b/docs/development.md @@ -4,7 +4,7 @@ Repository: [sourcedock.dev/petrbalvin/gasm-devkit](https://sourcedock.dev/petrb ## Prerequisites -- **Go** 1.26+ with `toolchain go1.26.5` +- **Go** 1.27+ with `toolchain go1.27rc1` - **just** — the command runner; every task below is a just recipe - No external dependencies beyond the Go toolchain diff --git a/go.mod b/go.mod index ddfa0ca..afae2fd 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,6 @@ module sourcedock.dev/petrbalvin/gasm-devkit go 1.26 -toolchain go1.26.5 +toolchain go1.27rc1 require golang.org/x/arch v0.29.0 diff --git a/justfile b/justfile index 921d3dd..899eefe 100644 --- a/justfile +++ b/justfile @@ -3,7 +3,7 @@ # gasm-devkit — developer tooling for Go's Plan 9 assembler (GAsm). -version := "0.29.0" +version := "0.30.0" default: @just --list