test/goroot: retire stale expectations and classify full-shard outcomes - #2419
test/goroot: retire stale expectations and classify full-shard outcomes#2419cpunion wants to merge 2 commits into
Conversation
|
Full GOROOT validation run (16 configured OS/Go-version/shard jobs): https://github.com/cpunion/llgo/actions/runs/32942085570 This run is pinned to head |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Review Summary
This is a clean, well-scoped change. The bulk of the diff is data (retiring 187 validated stability expectations from xfail.yaml), and the code changes are small and targeted:
- The procPin relocation from
runtime/internal/lib/runtime/sync_runtime_llgo.gointo the new core fileruntime/internal/runtime/procpin.gois a pure relocation — the mutex/Oncelogic is byte-for-byte identical to the pre-existing code, and thedarwin || linuxbuild tag is preserved. The complementary!darwin && !linuxno-op inruntime/_patch/sync/atomic/value_other.gokeeps the linkname coverage exhaustive with no overlap. No behavior change. runtime.NumGoroutinenow reports live LLGo runtime contexts; callinggetg()first to register a lazily-initialized main/foreign thread before reading the count is correct (getg->initRuntimeContext->retainG).TestRuntimeNumGoroutineTracksWorkersis correctly designed around the worker-release race, using a deadline-boundedGoschedpoll rather than an immediate assertion.- Forcing
GOTOOLCHAIN=localand running stdlib discovery from an isolated temp dir is a sensible hardening/isolation improvement, and thestack.goglobal not-applicable reason ("recursively grows through 8,000 large frames") matches upstreamtest/stack.go(recur(8000)).
No blocking issues found. A few low-severity maintainability/documentation notes are inline.
|
The first dispatched run was cancelled after all started Linux shards exposed one deterministic runner setup error: the temporary GOPATH still linked the checkout under the pre-migration Fixed in Replacement full 16-shard validation run (exact updated head): |
LLGo baseline benchmarks
Program measurements
Core language and compiler benchmarks
Compared with |
cf428fa to
6f1a070
Compare
|
Fresh deletion-only GOROOT validation run: https://github.com/cpunion/llgo/actions/runs/32954622318 The integration ref is |
6f1a070 to
4e5c75d
Compare
|
Regular CI retry note: the only failed check on The full GOROOT run on the temporary integration ref remains an exact tree validation of the current PR content plus the separately owned workspace-path commit. |
4e5c75d to
408e13e
Compare
|
CI retry: the macOS Go job on |
|
Final deletion-only GOROOT result: https://github.com/cpunion/llgo/actions/runs/32954622318
The integration commit |
|
Focused GOROOT pass run for the deletion set only: https://github.com/cpunion/llgo/actions/runs/32961976670 The temporary fork ref keeps the exact #2419 tree, plus #2416 workspace-path setup and a workflow-only filter commit. It runs every removed selector rather than the unrelated full GOROOT corpus:
Other PR checks are intentionally not being used as the gate until this focused GOROOT run passes. |
|
Focused GOROOT replacement run: https://github.com/cpunion/llgo/actions/runs/32962217541 The first focused run was cancelled after the Go 1.24 lanes failed before case selection: the repository |
|
Supported-toolchain focused GOROOT run: https://github.com/cpunion/llgo/actions/runs/32962609618 Per maintainer direction, Go 1.24 is not a compatibility target. This final matrix runs only Go 1.25.0 and 1.26.5 on Darwin/Linux. It covers every removed selector applicable to those supported toolchains (2/61/1/9 selectors by platform/version lane); the 106 Go1.24-only entries are deletion of unsupported compatibility metadata, not runtime claims. Resource bounds remain |
|
Focused run finding: https://github.com/cpunion/llgo/actions/runs/32962609618 completed 72/73 applicable selectors successfully. Darwin Go 1.26 Replacement validation for the resulting 175-entry deletion set (60 Darwin Go1.26 selectors instead of 61): https://github.com/cpunion/llgo/actions/runs/32963761626. The PR branch itself is intentionally not updated until this GOROOT run passes, so other checks are not retriggered early. |
408e13e to
8f990d5
Compare
8f990d5 to
47647ff
Compare
|
Final focused GOROOT gate passed: https://github.com/cpunion/llgo/actions/runs/32963761626 All four supported platform/toolchain jobs are green and their artifacts report:
Final PR head |
|
Final head |
|
Correction to the focused-run evidence: run 32963761626 used a temporary modified The final full-shard run uses the repository workflow unchanged: https://github.com/cpunion/llgo/actions/runs/32972501873 Integration head |
|
Scope updated from deletion-only based on the complete 16-shard result.
New head: |
Summary
This PR retires the fully audited stale hosted expectations and classifies the outcomes found by the complete GOROOT matrix.
notapplicable.yamlglobal by construction: all 121versionand 9platformselectors are removed, duplicaterangegen.go/maymorestack.goentries are collapsed, andstack.gois added once globally;fixedbugs/issue16016.go,chan/goroutines.go, andchanlinear.go, which can exhaust LLGo's one-thread-per-goroutine host model;index0.go,fixedbugs/issue34123.go,fixedbugs/issue52612.go, and Linux Go 1.26convert5.go, and consolidatesheapsampling.goglobally;typeparam/chans.goflake global.The repository now has 133 unique global not-applicable entries, with no version/platform selectors.
stack.gois no longer present inflakes.Full-shard findings
The unmodified 16-shard Darwin/Linux × Go 1.25.0/1.26.5 run on the prior head received all 16 reports and observed all 4,170 selected cases:
Those 16 paths are now handled as follows:
fixedbugs/bug449.goremains owned by ssa: lower large array comparisons to runtime equality algorithms #2416 and is not duplicated here.The older full run also exposed
chanlinear.go; it is now a global host skip.typeparam/chans.gowas independently reproduced as flaky and is globally classified.Relationship to other PRs
mainand contains none of ssa: lower large array comparisons to runtime equality algorithms #2416 or cl: preserve diagnostics for invalid method receivers #2417.fixedbugs/bug449.goremains owned by ssa: lower large array comparisons to runtime equality algorithms #2416.fixedbugs/issue5089.goand thecldiagnostics remain owned by cl: preserve diagnostics for invalid method receivers #2417.fixedbugs/issue52612.goandgoprint.goexpectations without duplicating the runner/not-applicable classifications moved here.Validation
GOMAXPROCS=2 go test -p=2 -parallel=2 -count=1 ./test/goroot;git diff --check;The current integration head
cb9de75e5is exact PR head9501a7ba6plus #2416 head78a9f63bc;.github/workflows/goroot.ymlis byte-identical tomain. Go 1.24 is not a compatibility target; supported runtime validation is Go 1.25/1.26.