You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The override was added as a temporary workaround for a Go 1.24 conflict involving an external dependency. That dependency has since been removed, so the workaround is no longer needed.
Changes
Remove the global GOEXPERIMENT=noswissmap export from Makefile.
Run go build and go vet normally from build.sh.
Run go test normally from the Makefile and test runner.
Behavior Changes
Go build and test commands now use the selected Go toolchain's default experiment settings. This restores compatibility with the Go version declared in go.mod and avoids the unknown GOEXPERIMENT swissmap failure.
No Go source code, dependencies, or public APIs are changed.
Does this mean that before this change, make rebuild would fail with newer Go versions, such as Go 1.24 or later? I’m wondering why I didn’t run into this issue on my side before.
Does this mean that before this change, make rebuild would fail with newer Go versions, such as Go 1.24 or later? I’m wondering why I didn’t run into this issue on my side before.
Not exactly. GOEXPERIMENT=noswissmap was introduced in Go 1.24 and is supported in Go 1.24 and 1.25, but it was removed in later Go versions.
Since Ethash supports Go 1.21+, adding this flag causes builds with Go 1.21–1.23 to fail because noswissmap is not recognized in those versions. It also causes builds with Go 1.26+ to fail because the experiment has been removed.
So GOEXPERIMENT=noswissmap is only valid for Go 1.24 and 1.25.
This is probably why the issue wasn't noticed before: it depends on which Go version was being used. Go 1.24 and 1.25 work with the flag, while Go 1.21–1.23 and Go 1.26+ do not.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Remove the unconditional
GOEXPERIMENT=noswissmapoverride from the Go build and test workflow.Problem
The project declares Go 1.21 compatibility, but its build scripts always set:
Go versions that do not recognize the
swissmapexperiment fail before building:The override was added as a temporary workaround for a Go 1.24 conflict involving an external dependency. That dependency has since been removed, so the workaround is no longer needed.
Changes
GOEXPERIMENT=noswissmapexport fromMakefile.go buildandgo vetnormally frombuild.sh.go testnormally from the Makefile and test runner.Behavior Changes
Go build and test commands now use the selected Go toolchain's default experiment settings. This restores compatibility with the Go version declared in
go.modand avoids theunknown GOEXPERIMENT swissmapfailure.No Go source code, dependencies, or public APIs are changed.
Validation