$ the-wire · showcase
Plan 9 Mkdir race fixed, riscv64 gets clobberdead mode
By RepoJournal · Filed · About Go · Composed from the cited sources · methodology
The day's Go work is concentrated in port and platform corners: a Plan 9 directory-creation race that returned the wrong error, clobberdead debugging extended to riscv64, and mips64x atomic intrinsics that cut single-operator latency about 20 percent.
syscall: create directories exclusively in Mkdir on Plan 9 golang/go
Mkdir on Plan 9 used to check whether the path existed and then create it, and a directory created by another process in that window became an open-with-truncation that file servers like ramfs reject as "permission denied". The commit makes the create exclusive so that race surfaces as fs.ErrExist, where a caller checking for an existing directory will actually catch it.
runtime: crash the GC at clobberdead pointer on riscv64 golang/go
The clobberdead-triggered GC crash check now runs on riscv64, extending the earlier work that the compiler change in the paired CL made possible. One clobberdead extension and its runtime counterpart, landed together, so a stale-pointer bug on riscv64 fails loudly instead of silently.
cmd/compile: intrinsify atomic And/Or for mips64x golang/go
Value-returning atomic And32, And64, Or32 and Or64 are now intrinsics on mips64, benchmarked on linux/mips64le at roughly a 20 percent reduction for the single-operator cases (49.26n to 39.33n for And32) and about 3 percent under parallel contention. Only code using those four operations on mips64 changes; the rest of the port is untouched.
test: fix issue11656.go on plan9/arm golang/go
Since the test directory started running on the Plan 9 builders, issue11656.go has been failing on plan9/arm because the Plan 9 kernel only synchronizes the instruction and data caches for text pages, so the test executes stale instructions from an executable stack. This is test-harness repair for one arm builder, not a change to arm code generation.