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 |
…s Go 1.27 support (#50383) #### Description Pins the govulncheck job's toolchain to `oldstable`. Go 1.27.0 released and `stable` now resolves to it, but `github.com/cockroachdb/swiss` (an indirect dependency of `extension/tailstorage/pebbletailstorageextension` via pebble) does not build with Go 1.27, so the `govulncheck (extension)` shard fails on every PR. govulncheck sweeps all modules regardless of ci-scope, which is why every PR is hit. A comment marks the pin as temporary, to revert once swiss supports Go 1.27 (upstream fix is open at cockroachdb/swiss#52) and the dependency is bumped. #### Link to tracking issue Closes #50382 #### Testing - CI on this PR, the govulncheck shards should pass again under oldstable (1.26), which was green until yesterday #### Documentation Not applicable, CI-only change. #### Authorship - [x] I, a human, wrote this pull request description myself.
|
Hi, thanks for taking a look. Yes, I can confirm that the runtime aliases all still match:
|
There was a problem hiding this comment.
Could you update these matrices to use only 1.24+? Older macos CI builds fail. Also, add fail-fast so all jobs run even if some fail. Here's a diff:
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -10,14 +10,12 @@ on:
jobs:
test:
strategy:
+ fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
go:
- - '1.21'
- - '1.22'
- - '1.23'
- '1.24'
- '1.25'
- '>=1.26.0-rc.1'
@@ -36,6 +34,7 @@ jobs:
linux-noswissmap:
strategy:
+ fail-fast: false
matrix:
go:
- '1.24'
@@ -54,6 +53,7 @@ jobs:
linux-race:
runs-on: ubuntu-latest
strategy:
+ fail-fast: false
matrix:
go:
- '1.24'
@@ -73,6 +73,7 @@ jobs:
linux-32bit:
runs-on: ubuntu-latest
strategy:
+ fail-fast: false
matrix:
go:
- '1.24'
@@ -91,6 +92,7 @@ jobs:
linux-qemu-s390x:
runs-on: ubuntu-latest
strategy:
+ fail-fast: false
matrix:
go:
- '1.24.4'There was a problem hiding this comment.
Done. Thank you!
Adds support for Go 1.27. Follows the pattern of changes in #50.