$ the-wire · showcase
math/big zero-sign panic fixed, go mod why now exits non-zero
By RepoJournal · Filed · About Go · Composed from the cited sources · methodology
Two math/big accuracy bugs and a long-standing cmd/go exit-status gap land in the same window, while pkgsite starts consolidating its breaking-change detection and migration off private infrastructure.
math/big: normalize zero in Int.GobDecode golang/go
Int.GobDecode could rebuild a zero magnitude with a retained negative sign, producing an Int that panics in Sqrt and other arithmetic. The fix sets the sign after decoding the magnitude so zero carries no sign, matching Int.scan, with regression coverage for empty and zero-padded magnitudes, reused receivers, and Sqrt after decoding. If you decode arbitrary gob data into big.Int, that path was ...
cmd/go: make go mod why exit non-zero for unused targets golang/go
go mod why used to report unreferenced packages and modules while still exiting 0; it now exits 1 when any requested package or module is not referenced from the main module, while still printing every target and preserving the existing output format. Anything that shells out to go mod why for dependency checks will start seeing failures it previously swallowed.
math/big: fix Float.Uint64 accuracy for fractional values golang/go
Float.Uint64 reported Exact for fractional values like 1.5 whose minimum precision fits in 64 bits; it now compares MinPrec against the value's exponent, as Float.Int64 and Float.IsInt already do, so truncating those values reports Below instead. Code that trusted the accuracy flag on fractional conversions was getting the wrong signal.
internal/breakings: keep all changes golang/pkgsite
The breakings detector now returns every breaking change for a given (old, new) type pair rather than one, so a struct that both drops a field and changes another field's type surfaces both, returned through an iterator to avoid building many maps.
internal/breakings: handle embedded struct fields golang/pkgsite
Breaking-change analysis now walks embedded struct fields too, collecting all types in a package by name before comparison, which is the groundwork for named types next.
devtools/searcheval, devtools/cmd/searcheval: move from the private repo golang/pkgsite
The searcheval tool and its evaluation library moved out of the private repo into pkgsite; a change to internal/postgres, internal/embeddings, or go.mod used to break it silently because pkgsite's trybots never compiled it.
cmd/internal/obj/riscv: reject extra operands for jumps golang/go
The RISC-V assembler silently ignored a stray source register on CJ, JAL, and JMP, assembling "JMP X5, label" as if it were "JMP label"; it now rejects the extra operand.
integration_test.go: run all.bash from go test golang/pkgsite
A new integration test runs all.bash from go test so LUCI builders pick it up, the first step toward replacing kokoro.
Action items