Enable go 1.27 support - #52
Conversation
|
Thanks! Did you verify that the aliased structures in the runtime are unchanged (at least the prefix that we're using)? |
|
Claude checked: ⏺ Verified — and I ran it, not just read it. Source check (github.com/golang/go @ tag go1.27.0) internal/abi.Type — field-for-field identical to swiss's rtType: Size_, PtrBytes uintptr; Hash uint32; TFlag, Align_, FieldAlign_, Kind_ uint8; Equal func; GCData internal/abi.MapType (src/internal/abi/map.go) — the aliased prefix is unchanged: type MapType struct { Everything past Hasher was reworked in 1.27 for the mapsplitgroup experiment, but that's all beyond the prefix swiss reads. Note internal/abi/map_swiss.go and the runtime.eface — still {_type *_type; data unsafe.Pointer}. runtime.fastrand64 — still exists as a push-linknamed compat shim (src/runtime/rand.go:341, //go:linkname legacy_fastrand64 runtime.fastrand64), so swiss's pull Empirical check Pulled the real go1.27.0 toolchain from the module proxy and ran swiss against it with -tags untested_go_version:
Conclusion Safe to widen the build tag to (go1.20 && !go1.28) || untested_go_version. This was tested on darwin/arm64 only, but since the struct definitions are textually |
Adds support for Go 1.27. Follows the pattern of changes in #50.