From 96cc70731fb2094284f6aebcc7076cb4c253d649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Balv=C3=ADn?= Date: Sun, 30 Aug 2026 21:31:05 +0200 Subject: [PATCH] docs: sync rule counts and feature lists with the new capabilities Assisted-by: GLM 5.3 Flash --- README.md | 9 +++++---- docs/ARCHITECTURE.md | 13 ++++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b5254f6..5df3c8c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ developer tooling to Plan 9 assembly on amd64, arm64, riscv64 and loong64. - **Formatter.** `gasm fmt` canonicalises indentation, operand spacing, per-function mnemonic alignment and blank-line layout: `gofmt` for assembly, operating recursively on directories the way `go fmt` does. -- **Linter.** `gasm lint` runs 17 conservative static checks, among them +- **Linter.** `gasm lint` runs 18 conservative static checks, among them `undefined-label`, `abi-argsize` (declared frame vs the `// func` signature), `register-clobber` (Go ABI register liveness over the control-flow graph), `stack-imbalance`, `abi0-register-args` and `unencodable-instruction`. @@ -33,9 +33,10 @@ developer tooling to Plan 9 assembly on amd64, arm64, riscv64 and loong64. breakpoints (optionally conditional), hardware watchpoints, register and memory inspection, and headless script runs with label-level coverage. - **Language server.** `gasm lsp` serves completion, hover, document symbols, - diagnostics, semantic-token highlighting, go-to-definition, find references, - rename, formatting, inlay hints, code actions, signature help, document - highlights and workspace symbol search over stdio. + push and pull diagnostics, semantic-token highlighting, go-to-definition, + find references, rename, formatting, inlay hints, code actions, signature + help, document highlights, workspace symbol search, #include document + links and folding ranges over stdio. - **Comparators and audits.** `gasm diff` compares the machine code of two assembly files byte-for-byte, `gasm profile` shows basic-block structure, `gasm audit-instructions` diffs the encoder against the installed toolchain, diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index ad98ffa..3fcaaa2 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -100,8 +100,8 @@ are `unknown-instruction`, `operand-count`, `undefined-label`, `duplicate-label`, `missing-ret`, `missing-textflag-include`, `abi-argsize`, `unreachable-code`, `register-clobber`, `funcdata-pcdata`, `unused-label`, `invalid-textflag`, `stack-imbalance`, `register-width-mismatch`, -`abi0-register-args`, `nonportable-register-name` and -`unencodable-instruction`. Every diagnostic carries a stable +`abi0-register-args`, `nonportable-register-name`, +`unencodable-instruction` and `reserved-register-write`. Every diagnostic carries a stable code so callers can disable rules individually, and arch-specific rules switch off entirely when the target architecture cannot be inferred from the file name. @@ -192,6 +192,10 @@ document store, republishes diagnostics on every change, and provides: (the frame size after the TEXT argument area), signature help (the callee's `// func` signature while the cursor is on a `CALL`), and code actions offering quick fixes for the `missing-ret` and `unused-label` diagnostics. +- **document information**: pull diagnostics (`textDocument/diagnostic`), + #include document links (resolved against the document directory, then + `$GOROOT/pkg/include`) and folding ranges (one collapsible region per + TEXT function body). Semantic tokens are the key to editor-agnostic highlighting: the editor renders them from the standard LSP legend, so no editor-specific grammar is needed. @@ -389,7 +393,10 @@ invokes a single function with user-supplied buffers (patterns: zero, ones, seq, or hex), printing the ABI0 argument block before and after the call, useful for partial functions (e.g. decoders) that crash on random input but should succeed on valid data; `--args name=value,...` supplies scalar -arguments (decimal or `0x` hex) alongside the buffers. `gasm verify +arguments (decimal or `0x` hex) alongside the buffers. `--save-corpus` +records every input that crashes or mismatches as replayable JSON, and +`--replay` re-runs saved entries in isolated child processes, reporting +whether each reproduces. `gasm verify --ground-truth` compares the assembled machine code byte-for-byte against `go tool asm` (relocation sites masked), reporting any encoding drift.