Skip to content

fix: validate reported assembly regressions against the PR40 repair head - #259

Draft
cpunion wants to merge 20 commits into
codex/pr40-assembly-base-20261002from
codex/pr40-assembly-user-regressions-20261002
Draft

cpunion wants to merge 20 commits into
codex/pr40-assembly-base-20261002from
codex/pr40-assembly-user-regressions-20261002

Conversation

@cpunion

@cpunion cpunion commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Draft staging for the dependent llgo contribution, rebased onto upstream main d98b43f90. This base branch copies upstream main; targeting fork main would include unrelated upstream commits. Only the allowed cpunion fork is pushed. This PR is not Ready and does not claim all assembly issues are resolved.

Dependency

Use a public go.mod replace resolved by Go from the actual published repair head of cpunion/plan9asm#4, staging xgo-dev/plan9asm#40. No local path, invented pseudo-version or alternate LLVM fallback is committed. The workflow retains the exact replacement, compiler build-info/hash, source HEAD, Go version and LLVM 22 tool identities.

Current published replacement: github.com/cpunion/plan9asm v0.0.0-20261001201022-0dad3b634810, resolved from actual head 0dad3b63481041973937f88276af10b4ff961d32. Actual Go module download and checksum verification succeeded. LLGo source 4bbc5cec9324bf9b0363b5b1bc0062e6194863d0 was frozen for the following execution results.

Exact issue regressions

Report Pinned source Validation
#2464 klauspost/compress v1.20.0 Independent Huffman table/bitstream oracle, actual 1X/4X kernels, truncation and guards
#2552 coder/websocket v1.8.15 Public frames versus raw RFC6455 server; separately labeled direct private assembly mask kernel
#2576 tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc Upper/lower independent alphabets, bulk/unaligned data, invalid inputs and logged actual ISA dispatch
#2708 klauspost/crc32 v1.3.0 Independent bitwise polynomial oracle, bulk/threshold/unaligned/update/streaming paths
#2691 modernc.org/libc v1.75.7 Public Uint128 multiplication/overflow through the real ABI0 assembly wrapper
#2707 ebitengine/purego v0.9.1 Real public Dlopen/Dlsym/SyscallN/memmove/error regression; still failing at native syscall15X entry

The nested test/asm module is not reached by root ./test/.... Dedicated Linux/AMD64 and Darwin/ARM64 jobs explicitly list and execute every source-applicable package with the checkout compiler. A failed sibling does not prevent execution of the remaining fixtures; an empty/broken package list fails. Required tools and runtime probes fail instead of skipping. Native Go baselines run alongside actual llgo compilation, linking and execution.

The Linux job also requires the ARM64 typed runtime.memmove contract and actual overlap/continuation execution under pinned QEMU 10.2.3. Native Go's declaration determines the three register arguments; no extra return or speculative hidden inputs are introduced. Runtime-module selection, temporary-object lifetime, bounded assembly input, active include/header handling and runtime.getAuxv regressions remain tested.

Known unfinished contracts

Fresh public-pinned runs used Go 1.27.1, LLVM 22.1.8, the normal checkout compiler, and unchanged default assembly selection. Neither a local dependency replacement nor a standard-library suppression filter was used.

Actual platform Native Go fixture baseline LLGo compile, link and execution Whole internal/plan9asm
Linux/AMD64 All 6 packages passed 5 passed: CRC32, go-hex, huff0, modernc/libc, websocket; purego failed at missing native syscall15X declaration Passed, including required ARM64 memmove counterpart under QEMU 10.2.3
Darwin/ARM64 All 4 source-applicable packages passed All 4 remain blocked by original standard-library runtime.memequal_varlen R26 closure-entry contract Failed in the 2 corresponding signature tests

These are local actual-execution results, not remote CI success. CRC AVX512 and go-hex AVX were unavailable in the Linux runtime; execution of those ISA branches is not claimed. The websocket public path uses maskGo in this version, so only the explicit private-kernel oracle proves its assembly execution.

Purego's unchanged syscall15X is a native C/g0 trampoline with a dynamic 15-GP/8-FP call, callbacks, Go closure representation and fixed callback-address table. An invented Go declaration, dropping callbacks, an allowlist that suppresses standard-library assembly or an ordinary context skip would not fix it. The Darwin/ARM64 whole translator also retains runtime.memequal_varlen's missing R26 native closure-entry contract. Keep these as failures until their actual ABI/runtime contracts are implemented; no Fixes #2707 claim is made.

All 53 CI-policy regression tests, actionlint and tracked-source formatting checks pass locally. New public-pinned compiler/runtime execution and remote CI are separate required gates. The final upstream contribution will target upstream main after fork validation; no upstream merge, settings change or direct push is performed.

The first full fork run finished with failures; downstream or skipped jobs are not successes. The next repair batch fixes the undownloaded replacement yielding an empty installer directory on Linux and the formatting error. Two fixture modules also incorrectly required Go 1.27.1 although the regular CI toolchain is 1.27.0: their actual native-source selection tests now pass on both patch releases. Windows canonicalization diagnostics retain the actual package/source paths and failed stage without relaxing symlink/source-root guards. This is investigation support, not a claimed Windows fix. R26/native purego contracts and Windows source-directory investigation remain required before Ready. The execution table above still describes frozen LLGo source 4bbc5cec, not execution of these later commits.

@codecov

codecov Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 86.59218% with 48 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (codex/pr40-assembly-base-20261002@d98b43f). Learn more about missing BASE report.

Files with missing lines Patch % Lines
internal/plan9asm/assembly_source.go 84.73% 20 Missing ⚠️
internal/asmselect/overlay.go 85.50% 10 Missing ⚠️
internal/build/nativeasm_selection.go 81.63% 9 Missing ⚠️
internal/build/build.go 71.42% 6 Missing ⚠️
internal/build/plan9asm.go 83.33% 2 Missing ⚠️
internal/plan9asm/assembly_read.go 96.00% 1 Missing ⚠️
Additional details and impacted files
@@                         Coverage Diff                          @@
##             codex/pr40-assembly-base-20261002     #259   +/-   ##
====================================================================
  Coverage                                     ?   94.36%           
====================================================================
  Files                                        ?      206           
  Lines                                        ?    33623           
  Branches                                     ?        0           
====================================================================
  Hits                                         ?    31730           
  Misses                                       ?     1892           
  Partials                                     ?        1           
Flag Coverage Δ
dev-lto-globaldce 47.23% <28.30%> (?)
go-tests 94.39% <86.59%> (?)
llgo-tests 75.70% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant