Skip to content

windows: qualify remaining GNU/MinGW architectures (R11; depends on xgo-dev/llgo#2454, #2461, and #2462) - #211

Closed
cpunion wants to merge 78 commits into
codex/windows-r10-msvc-arch-20260829from
codex/windows-r11-mingw-arch-20260829
Closed

cpunion wants to merge 78 commits into
codex/windows-r10-msvc-arch-20260829from
codex/windows-r11-mingw-arch-20260829

Conversation

@cpunion

@cpunion cpunion commented Aug 29, 2026 •

Copy link
Copy Markdown
Owner

Depends on xgo-dev#2454, xgo-dev#2461, and xgo-dev#2462. The foreign-thread collector and concurrent-finalizer fixes are carried as isolated commits for CI and will be dropped once xgo-dev#2461 and xgo-dev#2462 land. Plan 9 assembly support is inherited from R10 through the released xgo-dev/plan9asm v0.5.1; R11 has no temporary workspace or fork override.

Part of xgo-dev#2325.

This PR completes GNU/MinGW architecture qualification beyond the independent amd64 profile merged in R9:

  • Windows ARM64 uses the architecture-native MSYS2 CLANGARM64 LLVM 19, UCRT, and dependency packages on the native ARM64 runner.
  • Windows 386 keeps the x64 LLGo host compiler separate from a pinned LLVM 19 llvm-mingw/UCRT target and x86-mingw vcpkg dependency tree; it does not rely on the obsolete MSYS2 MINGW32 environment.
  • macOS and Linux hosts use the pinned llvm-mingw 20250114 archives to compile and inspect 386, amd64, and arm64 GNU/UCRT artifacts. Each OS/architecture pair runs in an isolated matrix job so target compiler state cannot leak between architectures and failures can be retried independently.
  • Toolchain activation keeps GOOS/GOARCH authoritative, derives the GNU ABI from the compiler physical target triple, and isolates host LLVM metadata, target pkg-config metadata, and target runtime DLLs.
  • Cross-host activation exports target-selecting compiler and pkg-config wrappers, so callers do not need to construct target flags or environment variables themselves.
  • MinGW amd64 uses the CRT __intrinsic_setjmpex spelling while preserving the MSVC _setjmpex path and LLGo direct panic/defer context restoration.
  • Native LLGo, language/runtime tests, benchmarks, scheduled GOROOT matrices, and artifact dependency audits retain architecture-matched GNU lanes. R12 remains responsible for debugger and final packaging qualification.

R11 is rebased on the current R10 head. Windows processor-feature initialization, plan9asm/x87 integration, and the other shared Windows architecture fixes are inherited from R10 unchanged; they are not duplicated in this diff.

Local validation on a macOS ARM64 host:

  • go test -count=1 ./internal/build ./internal/crosscompile ./ssa
  • actionlint for the changed benchmark, GOROOT, and LLGo workflows, plus YAML parsing for the changed composite actions
  • built and inspected seven representative PE/COFF artifacts for each of windows/386, windows/amd64, and windows/arm64: five runtime/FFI/stdlib/network programs plus compile-only test/go and test/windows suites
  • verified the expected PE machine for all 21 artifacts and rejected MSYS/Cygwin runtime imports
  • rebuilt the Go 1.27 runtime feature-query path for both 386 and ARM64 before the final rebase; that implementation now comes from R10

The fresh native execution, coverage, benchmark comparison, cross-host CI, and GOROOT results remain required before upstream review.

@cpunion cpunion added the windows Windows platform support label Aug 29, 2026
@cpunion
cpunion force-pushed the codex/windows-r11-mingw-arch-20260829 branch from 413a753 to 90a3a11 Compare August 29, 2026 15:37
@cpunion
cpunion force-pushed the codex/windows-r11-mingw-arch-20260829 branch 5 times, most recently from 13eb549 to bddb695 Compare August 29, 2026 20:19
@cpunion
cpunion force-pushed the codex/windows-r10-msvc-arch-20260829 branch 2 times, most recently from 25e15b6 to 8f9cd1d Compare August 30, 2026 07:10
@cpunion
cpunion force-pushed the codex/windows-r11-mingw-arch-20260829 branch from bddb695 to 6b3ab10 Compare August 30, 2026 09:13
@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown

LLGo baseline benchmarks

56b3d962129c | workflow run | long-term charts

Program measurements

Platform Workload File size vs base Text size vs base Build vs base Run vs base
Linux cprintf 19672 B +112 B / +0.6% (worse) 387 B 0 B / +0.0% 265.138 ms -7.971 ms / -2.9% (better) 1.052 ms +81.21 us / +8.4% (worse)
Linux cprintf-lto 19504 B +112 B / +0.6% (worse) 368 B 0 B / +0.0% 276.859 ms -4.228 ms / -1.5% (better) 932.738 us -5.083 us / -0.5% (better)
Linux fmtprintf 1606304 B +1008 B / +0.1% (worse) 490155 B +113 B / +0.02306% (worse) 2.102 s +7.816 ms / +0.4% (worse) 2.306 ms +6.389 us / +0.3% (worse)
Linux fmtprintf-lto 1483760 B +912 B / +0.1% (worse) 450907 B +95 B / +0.02107% (worse) 6.874 s -71.8 ms / -1.0% (better) 2.126 ms -101.8 us / -4.6% (better)
Linux println 62872 B +464 B / +0.7% (worse) 15360 B +74 B / +0.5% (worse) 270.075 ms +2.319 ms / +0.9% (worse) 1.116 ms -35.09 us / -3.0% (better)
Linux println-lto 54712 B +488 B / +0.9% (worse) 12985 B +71 B / +0.5% (worse) 417.531 ms -4.574 ms / -1.1% (better) 1.253 ms +68.84 us / +5.8% (worse)
macOS cprintf 84480 B 0 B / +0.0% 16909 B +112 B / +0.7% (worse) 418.658 ms +68.61 ms / +19.6% (worse) 2.382 ms +204.9 us / +9.4% (worse)
macOS cprintf-lto 100704 B 0 B / +0.0% 16889 B +112 B / +0.7% (worse) 382.668 ms +34.18 ms / +9.8% (worse) 2.304 ms +65.83 us / +2.9% (worse)
macOS fmtprintf 1454064 B +176 B / +0.01211% (worse) 865240 B +680 B / +0.1% (worse) 1.984 s +124.5 ms / +6.7% (worse) 4.284 ms +192.7 us / +4.7% (worse)
macOS fmtprintf-lto 1175616 B +80 B / +0.006805% (worse) 860856 B +676 B / +0.1% (worse) 5.459 s +650.3 ms / +13.5% (worse) 3.607 ms -249.5 us / -6.5% (better)
macOS println 114944 B +160 B / +0.1% (worse) 35441 B +196 B / +0.6% (worse) 352.040 ms +25.5 ms / +7.8% (worse) 2.914 ms +31.96 us / +1.1% (worse)
macOS println-lto 118736 B +80 B / +0.1% (worse) 33093 B +196 B / +0.6% (worse) 477.516 ms +29.17 ms / +6.5% (worse) 3.096 ms +53.58 us / +1.8% (worse)
Windows MinGW cprintf 20480 B 0 B / +0.0% 4662 B 0 B / +0.0% 866.057 ms +28.75 ms / +3.4% (worse) 3.390 ms -71.4 us / -2.1% (better)
Windows MinGW cprintf-lto 18432 B 0 B / +0.0% 4582 B 0 B / +0.0% 868.577 ms -2.056 ms / -0.2% (better) 3.486 ms -19 us / -0.5% (better)
Windows MinGW fmtprintf 1932288 B 0 B / +0.0% 597254 B -144 B / -0.0241% (better) 3.412 s -83.77 ms / -2.4% (better) 8.966 ms +910.7 us / +11.3% (worse)
Windows MinGW fmtprintf-lto 1982976 B +512 B / +0.02583% (worse) 589350 B -272 B / -0.04613% (better) 9.394 s +78.64 ms / +0.8% (worse) 7.785 ms -740.5 us / -8.7% (better)
Windows MinGW println 74240 B 0 B / +0.0% 25014 B -48 B / -0.2% (better) 933.099 ms +108.6 ms / +13.2% (worse) 6.617 ms -134 us / -2.0% (better)
Windows MinGW println-lto 67584 B 0 B / +0.0% 21830 B +96 B / +0.4% (worse) 1.049 s +8.217 ms / +0.8% (worse) 6.424 ms -12.5 us / -0.2% (better)
Windows MinGW 386 cprintf 37888 B 0 B / +0.0% 5228 B 0 B / +0.0% 971.030 ms +35.68 ms / +3.8% (worse) 5.210 ms +133 us / +2.6% (worse)
Windows MinGW 386 cprintf-lto 21504 B 0 B / +0.0% 5028 B 0 B / +0.0% 1.017 s +49.21 ms / +5.1% (worse) 5.170 ms -102 us / -1.9% (better)
Windows MinGW 386 fmtprintf 1950208 B +1024 B / +0.1% (worse) 472318 B -288 B / -0.1% (better) 3.825 s +120.9 ms / +3.3% (worse) 14.742 ms +4 ms / +37.2% (worse)
Windows MinGW 386 fmtprintf-lto 2189824 B +512 B / +0.02339% (worse) 472294 B -412 B / -0.1% (better) 11.051 s +639.3 ms / +6.1% (worse) 11.446 ms -355 us / -3.0% (better)
Windows MinGW 386 println 88064 B 0 B / +0.0% 20726 B -48 B / -0.2% (better) 982.469 ms +57.63 ms / +6.2% (worse) 9.520 ms +728.5 us / +8.3% (worse)
Windows MinGW 386 println-lto 72192 B 0 B / +0.0% 18790 B +50 B / +0.3% (worse) 1.237 s +55.22 ms / +4.7% (worse) 9.830 ms -1.252 ms / -11.3% (better)
Windows MinGW ARM64 cprintf 19968 B 0 B / +0.0% 4632 B 0 B / +0.0% 929.476 ms -46.41 ms / -4.8% (better) 6.006 ms -141.8 us / -2.3% (better)
Windows MinGW ARM64 cprintf-lto 18432 B 0 B / +0.0% 4552 B 0 B / +0.0% 935.744 ms -53.41 ms / -5.4% (better) 5.601 ms -594.5 us / -9.6% (better)
Windows MinGW ARM64 fmtprintf 1819648 B -512 B / -0.02813% (better) 510312 B -264 B / -0.1% (better) 3.195 s -230.5 ms / -6.7% (better) 11.417 ms -758.8 us / -6.2% (better)
Windows MinGW ARM64 fmtprintf-lto 1886720 B -512 B / -0.02713% (better) 506056 B -372 B / -0.1% (better) 8.371 s -264 ms / -3.1% (better) 11.784 ms +695.4 us / +6.3% (worse)
Windows MinGW ARM64 println 71680 B 0 B / +0.0% 23832 B -36 B / -0.2% (better) 896.593 ms -63.65 ms / -6.6% (better) 9.652 ms -1.641 ms / -14.5% (better)
Windows MinGW ARM64 println-lto 67072 B +512 B / +0.8% (worse) 21068 B +80 B / +0.4% (worse) 1.081 s -75.02 ms / -6.5% (better) 10.329 ms -288.5 us / -2.7% (better)
Windows MSVC cprintf 12288 B 0 B / +0.0% 4438 B 0 B / +0.0% 807.765 ms +32.53 ms / +4.2% (worse) 3.966 ms -681.7 us / -14.7% (better)
Windows MSVC cprintf-lto 11776 B 0 B / +0.0% 4278 B 0 B / +0.0% 946.005 ms +133.3 ms / +16.4% (worse) 4.687 ms +753.2 us / +19.1% (worse)
Windows MSVC fmtprintf 1470976 B 0 B / +0.0% 596822 B -160 B / -0.0268% (better) 3.568 s +23.77 ms / +0.7% (worse) 10.125 ms +385.3 us / +4.0% (worse)
Windows MSVC fmtprintf-lto 1516032 B -512 B / -0.03376% (better) 596246 B -272 B / -0.0456% (better) 10.541 s -363.6 ms / -3.3% (better) 10.090 ms +882.3 us / +9.6% (worse)
Windows MSVC println 47104 B 0 B / +0.0% 25030 B -32 B / -0.1% (better) 805.462 ms -112.7 ms / -12.3% (better) 8.570 ms -870.3 us / -9.2% (better)
Windows MSVC println-lto 44032 B 0 B / +0.0% 22198 B +96 B / +0.4% (worse) 1.055 s +9.652 ms / +0.9% (worse) 7.583 ms +236.2 us / +3.2% (worse)
Windows MSVC 386 cprintf 9728 B 0 B / +0.0% 3930 B 0 B / +0.0% 943.051 ms +117.4 ms / +14.2% (worse) 7.438 ms +2.106 ms / +39.5% (worse)
Windows MSVC 386 cprintf-lto 9216 B 0 B / +0.0% 3840 B 0 B / +0.0% 868.571 ms -50.08 ms / -5.5% (better) 5.835 ms +365.1 us / +6.7% (worse)
Windows MSVC 386 fmtprintf 1190400 B 0 B / +0.0% 456272 B -288 B / -0.1% (better) 3.514 s +91.51 ms / +2.7% (worse) 11.863 ms -746.5 us / -5.9% (better)
Windows MSVC 386 fmtprintf-lto 1252864 B 0 B / +0.0% 452629 B -416 B / -0.1% (better) 10.269 s +180.3 ms / +1.8% (worse) 11.779 ms +178.4 us / +1.5% (worse)
Windows MSVC 386 println 35328 B 0 B / +0.0% 19712 B -32 B / -0.2% (better) 832.419 ms +7.664 ms / +0.9% (worse) 10.282 ms +1.38 ms / +15.5% (worse)
Windows MSVC 386 println-lto 34304 B +1024 B / +3.1% (worse) 17927 B +54 B / +0.3% (worse) 1.088 s +1.336 ms / +0.1% (worse) 11.682 ms +2.562 ms / +28.1% (worse)
Windows MSVC ARM64 cprintf 11264 B 0 B / +0.0% 3976 B 0 B / +0.0% 1.693 s -234.2 ms / -12.2% (better) 7.019 ms -1.02 ms / -12.7% (better)
Windows MSVC ARM64 cprintf-lto 10752 B 0 B / +0.0% 3844 B 0 B / +0.0% 1.738 s -213.4 ms / -10.9% (better) 7.356 ms -2.164 ms / -22.7% (better)
Windows MSVC ARM64 fmtprintf 1365504 B 0 B / +0.0% 509980 B -272 B / -0.1% (better) 5.796 s -427.2 ms / -6.9% (better) 15.543 ms -2.876 ms / -15.6% (better)
Windows MSVC ARM64 fmtprintf-lto 1412608 B 0 B / +0.0% 506876 B -384 B / -0.1% (better) 17.691 s -1.163 s / -6.2% (better) 14.913 ms -516.1 us / -3.3% (better)
Windows MSVC ARM64 println 43008 B 0 B / +0.0% 22824 B -32 B / -0.1% (better) 1.700 s -182 ms / -9.7% (better) 12.354 ms -5.013 ms / -28.9% (better)
Windows MSVC ARM64 println-lto 40960 B 0 B / +0.0% 20732 B +76 B / +0.4% (worse) 2.180 s -68.99 ms / -3.1% (better) 12.874 ms -1.282 ms / -9.1% (better)
Core language and compiler benchmarks
Platform Benchmark ns/op vs base
Linux BenchmarkLookupPCRandom 9.555 ns/op +0.001 ns/op / +0.01047% (worse)
Linux BenchmarkMergeCompilerFlags 115.100 ns/op -1.2 ns/op / -1.0% (better)
Linux BenchmarkMergeLinkerFlags 79.660 ns/op -0.17 ns/op / -0.2% (better)
Linux BenchmarkChannelBuffered 49.560 ns/op -0.09 ns/op / -0.2% (better)
Linux BenchmarkChannelHandoff 23920 ns/op -1987 ns/op / -7.7% (better)
Linux BenchmarkDefer 37.880 ns/op +0.95 ns/op / +2.6% (worse)
Linux BenchmarkDirectCall 0.976 ns/op -0.002 ns/op / -0.2% (better)
Linux BenchmarkGlobalRead 1.040 ns/op +0.1154 ns/op / +12.5% (worse)
Linux BenchmarkGlobalWrite 7.263 ns/op +0.005 ns/op / +0.1% (worse)
Linux BenchmarkGoroutine 33476 ns/op +1449 ns/op / +4.5% (worse)
Linux BenchmarkInterfaceCall 5.348 ns/op +0.022 ns/op / +0.4% (worse)
Linux BenchmarkRuntimeGetG 1.400 ns/op +0.078 ns/op / +5.9% (worse)
macOS BenchmarkLookupPCRandom 12.080 ns/op -0.44 ns/op / -3.5% (better)
macOS BenchmarkMergeCompilerFlags 92.780 ns/op +0.71 ns/op / +0.8% (worse)
macOS BenchmarkMergeLinkerFlags 68 ns/op -0.62 ns/op / -0.9% (better)
macOS BenchmarkChannelBuffered 31.500 ns/op +5.99 ns/op / +23.5% (worse)
macOS BenchmarkChannelHandoff 14365 ns/op +8412 ns/op / +141.3% (worse)
macOS BenchmarkDefer 37.570 ns/op -0.02 ns/op / -0.1% (better)
macOS BenchmarkDirectCall 1.214 ns/op +0.134 ns/op / +12.4% (worse)
macOS BenchmarkGlobalRead 1.220 ns/op +0.157 ns/op / +14.8% (worse)
macOS BenchmarkGlobalWrite 1.263 ns/op +0.239 ns/op / +23.3% (worse)
macOS BenchmarkGoroutine 30875 ns/op +1715 ns/op / +5.9% (worse)
macOS BenchmarkInterfaceCall 5.788 ns/op +1.037 ns/op / +21.8% (worse)
macOS BenchmarkRuntimeGetG 3.395 ns/op +0.857 ns/op / +33.8% (worse)
Windows MinGW BenchmarkLookupPCRandom 13.210 ns/op -0.02 ns/op / -0.2% (better)
Windows MinGW BenchmarkMergeCompilerFlags 632 ns/op +26.6 ns/op / +4.4% (worse)
Windows MinGW BenchmarkMergeLinkerFlags 529 ns/op -23.3 ns/op / -4.2% (better)
Windows MinGW BenchmarkChannelBuffered 34.210 ns/op -0.07 ns/op / -0.2% (better)
Windows MinGW BenchmarkChannelHandoff 856.300 ns/op +10.4 ns/op / +1.2% (worse)
Windows MinGW BenchmarkDefer 56.900 ns/op -1.91 ns/op / -3.2% (better)
Windows MinGW BenchmarkDirectCall 1.546 ns/op -0.002 ns/op / -0.1% (better)
Windows MinGW BenchmarkGlobalRead 1.547 ns/op -0.004 ns/op / -0.3% (better)
Windows MinGW BenchmarkGlobalWrite 2.469 ns/op -0.001 ns/op / -0.04049% (better)
Windows MinGW BenchmarkGoroutine 85032 ns/op -1257 ns/op / -1.5% (better)
Windows MinGW BenchmarkInterfaceCall 9.624 ns/op +0.329 ns/op / +3.5% (worse)
Windows MinGW BenchmarkRuntimeGetG 2.170 ns/op 0 ns/op / +0.0%
Windows MinGW 386 BenchmarkLookupPCRandom 26.580 ns/op +0.02 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkMergeCompilerFlags 760.600 ns/op +8 ns/op / +1.1% (worse)
Windows MinGW 386 BenchmarkMergeLinkerFlags 699.800 ns/op +20 ns/op / +2.9% (worse)
Windows MinGW 386 BenchmarkChannelBuffered 43.080 ns/op +0.29 ns/op / +0.7% (worse)
Windows MinGW 386 BenchmarkChannelHandoff 892.300 ns/op -6.6 ns/op / -0.7% (better)
Windows MinGW 386 BenchmarkDefer 44.970 ns/op -2.61 ns/op / -5.5% (better)
Windows MinGW 386 BenchmarkDirectCall 1.547 ns/op -0.002 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkGlobalRead 1.863 ns/op -0.001 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkGlobalWrite 7.788 ns/op +0.007 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkGoroutine 90029 ns/op +1746 ns/op / +2.0% (worse)
Windows MinGW 386 BenchmarkInterfaceCall 9.925 ns/op -0.002 ns/op / -0.02015% (better)
Windows MinGW 386 BenchmarkRuntimeGetG 1.860 ns/op +0.001 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkLookupPCRandom 12.050 ns/op +0.01 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkMergeCompilerFlags 572.700 ns/op -0.5 ns/op / -0.1% (better)
Windows MinGW ARM64 BenchmarkMergeLinkerFlags 534.600 ns/op -5.2 ns/op / -1.0% (better)
Windows MinGW ARM64 BenchmarkChannelBuffered 44.060 ns/op +0.44 ns/op / +1.0% (worse)
Windows MinGW ARM64 BenchmarkChannelHandoff 1761 ns/op -34 ns/op / -1.9% (better)
Windows MinGW ARM64 BenchmarkDefer 52.270 ns/op +1.1 ns/op / +2.1% (worse)
Windows MinGW ARM64 BenchmarkDirectCall 0.663 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 BenchmarkGlobalRead 0.885 ns/op -0.0002 ns/op / -0.0226% (better)
Windows MinGW ARM64 BenchmarkGlobalWrite 0.590 ns/op -0.0001 ns/op / -0.01696% (better)
Windows MinGW ARM64 BenchmarkGoroutine 56129 ns/op +3537 ns/op / +6.7% (worse)
Windows MinGW ARM64 BenchmarkInterfaceCall 4.721 ns/op +0.001 ns/op / +0.02119% (worse)
Windows MinGW ARM64 BenchmarkRuntimeGetG 1.806 ns/op +0.036 ns/op / +2.0% (worse)
Windows MSVC BenchmarkLookupPCRandom 12.960 ns/op -0.3 ns/op / -2.3% (better)
Windows MSVC BenchmarkMergeCompilerFlags 610.200 ns/op -6 ns/op / -1.0% (better)
Windows MSVC BenchmarkMergeLinkerFlags 536.100 ns/op -6.5 ns/op / -1.2% (better)
Windows MSVC BenchmarkChannelBuffered 35.450 ns/op +0.51 ns/op / +1.5% (worse)
Windows MSVC BenchmarkChannelHandoff 1014 ns/op -59 ns/op / -5.5% (better)
Windows MSVC BenchmarkDefer 57.370 ns/op +0.27 ns/op / +0.5% (worse)
Windows MSVC BenchmarkDirectCall 1.854 ns/op -0.005 ns/op / -0.3% (better)
Windows MSVC BenchmarkGlobalRead 1.861 ns/op +0.002 ns/op / +0.1% (worse)
Windows MSVC BenchmarkGlobalWrite 2.449 ns/op -0.004 ns/op / -0.2% (better)
Windows MSVC BenchmarkGoroutine 81859 ns/op -1397 ns/op / -1.7% (better)
Windows MSVC BenchmarkInterfaceCall 9.640 ns/op +0.622 ns/op / +6.9% (worse)
Windows MSVC BenchmarkRuntimeGetG 2.490 ns/op +0.321 ns/op / +14.8% (worse)
Windows MSVC 386 BenchmarkLookupPCRandom 26.500 ns/op -0.11 ns/op / -0.4% (better)
Windows MSVC 386 BenchmarkMergeCompilerFlags 747.500 ns/op -18.6 ns/op / -2.4% (better)
Windows MSVC 386 BenchmarkMergeLinkerFlags 691.700 ns/op +19.1 ns/op / +2.8% (worse)
Windows MSVC 386 BenchmarkChannelBuffered 44.520 ns/op +0.81 ns/op / +1.9% (worse)
Windows MSVC 386 BenchmarkChannelHandoff 855.400 ns/op -13.7 ns/op / -1.6% (better)
Windows MSVC 386 BenchmarkDefer 47.810 ns/op +0.47 ns/op / +1.0% (worse)
Windows MSVC 386 BenchmarkDirectCall 1.548 ns/op -0.001 ns/op / -0.1% (better)
Windows MSVC 386 BenchmarkGlobalRead 1.552 ns/op +0.001 ns/op / +0.1% (worse)
Windows MSVC 386 BenchmarkGlobalWrite 7.779 ns/op -0.005 ns/op / -0.1% (better)
Windows MSVC 386 BenchmarkGoroutine 89087 ns/op +2289 ns/op / +2.6% (worse)
Windows MSVC 386 BenchmarkInterfaceCall 9.931 ns/op +0.258 ns/op / +2.7% (worse)
Windows MSVC 386 BenchmarkRuntimeGetG 1.858 ns/op -0.311 ns/op / -14.3% (better)
Windows MSVC ARM64 BenchmarkLookupPCRandom 12.090 ns/op -0.03 ns/op / -0.2% (better)
Windows MSVC ARM64 BenchmarkMergeCompilerFlags 585.800 ns/op +25.3 ns/op / +4.5% (worse)
Windows MSVC ARM64 BenchmarkMergeLinkerFlags 547.800 ns/op +9 ns/op / +1.7% (worse)
Windows MSVC ARM64 BenchmarkChannelBuffered 43.630 ns/op +0.16 ns/op / +0.4% (worse)
Windows MSVC ARM64 BenchmarkChannelHandoff 2450 ns/op -20 ns/op / -0.8% (better)
Windows MSVC ARM64 BenchmarkDefer 64.190 ns/op -2.76 ns/op / -4.1% (better)
Windows MSVC ARM64 BenchmarkDirectCall 0.590 ns/op +0.0002 ns/op / +0.03392% (worse)
Windows MSVC ARM64 BenchmarkGlobalRead 0.664 ns/op -0.0007 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkGlobalWrite 3.759 ns/op +0.002 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkGoroutine 59238 ns/op +1128 ns/op / +1.9% (worse)
Windows MSVC ARM64 BenchmarkInterfaceCall 4.719 ns/op 0 ns/op / +0.0%
Windows MSVC ARM64 BenchmarkRuntimeGetG 1.770 ns/op -0.004 ns/op / -0.2% (better)

Timer runtime benchmarks

Platform Operation and runtime ns/op vs base
Linux AfterFuncZeroDelivery/Go 632 ns/op +1.8 ns/op / +0.3% (worse)
Linux AfterFuncZeroDelivery/LLGo 47492 ns/op +343 ns/op / +0.7% (worse)
Linux CreateStop/Go 199.700 ns/op -0.5 ns/op / -0.2% (better)
Linux CreateStop/LLGo 961.200 ns/op +104.8 ns/op / +12.2% (worse)
Linux RearmStopped/Go 78.440 ns/op +0.02 ns/op / +0.0255% (worse)
Linux RearmStopped/LLGo 790.200 ns/op +48 ns/op / +6.5% (worse)
Linux ResetActive/Go 45.360 ns/op -0.03 ns/op / -0.1% (better)
Linux ResetActive/LLGo 339.200 ns/op -165.9 ns/op / -32.8% (better)
Linux ResetHeap1024/Go 45.660 ns/op 0 ns/op / +0.0%
Linux ResetHeap1024/LLGo 129.900 ns/op -1.6 ns/op / -1.2% (better)
macOS AfterFuncZeroDelivery/Go 438.100 ns/op +39.5 ns/op / +9.9% (worse)
macOS AfterFuncZeroDelivery/LLGo 59344 ns/op +2834 ns/op / +5.0% (worse)
macOS CreateStop/Go 138.700 ns/op +10.8 ns/op / +8.4% (worse)
macOS CreateStop/LLGo 430.600 ns/op -13 ns/op / -2.9% (better)
macOS RearmStopped/Go 58.060 ns/op +3.36 ns/op / +6.1% (worse)
macOS RearmStopped/LLGo 320.500 ns/op -9.6 ns/op / -2.9% (better)
macOS ResetActive/Go 41.570 ns/op +1.58 ns/op / +4.0% (worse)
macOS ResetActive/LLGo 136.200 ns/op -18.9 ns/op / -12.2% (better)
macOS ResetHeap1024/Go 41.990 ns/op +2.26 ns/op / +5.7% (worse)
macOS ResetHeap1024/LLGo 92.980 ns/op +10.42 ns/op / +12.6% (worse)
Windows MinGW AfterFuncZeroDelivery/Go 566.200 ns/op +1.7 ns/op / +0.3% (worse)
Windows MinGW AfterFuncZeroDelivery/LLGo 168393 ns/op +4701 ns/op / +2.9% (worse)
Windows MinGW CreateStop/Go 115.500 ns/op -1 ns/op / -0.9% (better)
Windows MinGW CreateStop/LLGo 441.500 ns/op -41.3 ns/op / -8.6% (better)
Windows MinGW RearmStopped/Go 31.220 ns/op -0.01 ns/op / -0.03202% (better)
Windows MinGW RearmStopped/LLGo 309.500 ns/op +1.4 ns/op / +0.5% (worse)
Windows MinGW ResetActive/Go 20.090 ns/op -0.05 ns/op / -0.2% (better)
Windows MinGW ResetActive/LLGo 162.800 ns/op -11.3 ns/op / -6.5% (better)
Windows MinGW ResetHeap1024/Go 20.540 ns/op +0.17 ns/op / +0.8% (worse)
Windows MinGW ResetHeap1024/LLGo 146 ns/op +0.4 ns/op / +0.3% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/Go 963 ns/op -1.4 ns/op / -0.1% (better)
Windows MinGW 386 AfterFuncZeroDelivery/LLGo 191669 ns/op -3752 ns/op / -1.9% (better)
Windows MinGW 386 CreateStop/Go 194.800 ns/op +1.3 ns/op / +0.7% (worse)
Windows MinGW 386 CreateStop/LLGo 1688 ns/op -24 ns/op / -1.4% (better)
Windows MinGW 386 RearmStopped/Go 63.570 ns/op +0.04 ns/op / +0.1% (worse)
Windows MinGW 386 RearmStopped/LLGo 366.900 ns/op +14.5 ns/op / +4.1% (worse)
Windows MinGW 386 ResetActive/Go 39.100 ns/op +0.04 ns/op / +0.1% (worse)
Windows MinGW 386 ResetActive/LLGo 928.900 ns/op -32 ns/op / -3.3% (better)
Windows MinGW 386 ResetHeap1024/Go 39.450 ns/op -0.04 ns/op / -0.1% (better)
Windows MinGW 386 ResetHeap1024/LLGo 195.100 ns/op +0.8 ns/op / +0.4% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/Go 658.900 ns/op -6.5 ns/op / -1.0% (better)
Windows MinGW ARM64 AfterFuncZeroDelivery/LLGo 118416 ns/op -3627 ns/op / -3.0% (better)
Windows MinGW ARM64 CreateStop/Go 199.300 ns/op -0.1 ns/op / -0.1% (better)
Windows MinGW ARM64 CreateStop/LLGo 444.600 ns/op +18 ns/op / +4.2% (worse)
Windows MinGW ARM64 RearmStopped/Go 70.580 ns/op +0.02 ns/op / +0.02834% (worse)
Windows MinGW ARM64 RearmStopped/LLGo 298 ns/op -0.9 ns/op / -0.3% (better)
Windows MinGW ARM64 ResetActive/Go 31 ns/op +0.1 ns/op / +0.3% (worse)
Windows MinGW ARM64 ResetActive/LLGo 138.800 ns/op +1.2 ns/op / +0.9% (worse)
Windows MinGW ARM64 ResetHeap1024/Go 31.150 ns/op +0.05 ns/op / +0.2% (worse)
Windows MinGW ARM64 ResetHeap1024/LLGo 143.800 ns/op -0.8 ns/op / -0.6% (better)
Windows MSVC AfterFuncZeroDelivery/Go 555.300 ns/op +0.4 ns/op / +0.1% (worse)
Windows MSVC AfterFuncZeroDelivery/LLGo 153806 ns/op -1093 ns/op / -0.7% (better)
Windows MSVC CreateStop/Go 116.300 ns/op -0.9 ns/op / -0.8% (better)
Windows MSVC CreateStop/LLGo 444.200 ns/op -20.9 ns/op / -4.5% (better)
Windows MSVC RearmStopped/Go 31.350 ns/op -0.51 ns/op / -1.6% (better)
Windows MSVC RearmStopped/LLGo 294.900 ns/op +3 ns/op / +1.0% (worse)
Windows MSVC ResetActive/Go 20.120 ns/op +0.01 ns/op / +0.04973% (worse)
Windows MSVC ResetActive/LLGo 147.100 ns/op -14.1 ns/op / -8.7% (better)
Windows MSVC ResetHeap1024/Go 20.480 ns/op +0.07 ns/op / +0.3% (worse)
Windows MSVC ResetHeap1024/LLGo 144.200 ns/op +0.9 ns/op / +0.6% (worse)
Windows MSVC 386 AfterFuncZeroDelivery/Go 961.800 ns/op +15.7 ns/op / +1.7% (worse)
Windows MSVC 386 AfterFuncZeroDelivery/LLGo 192840 ns/op +4596 ns/op / +2.4% (worse)
Windows MSVC 386 CreateStop/Go 192.100 ns/op -0.2 ns/op / -0.1% (better)
Windows MSVC 386 CreateStop/LLGo 1687 ns/op -10 ns/op / -0.6% (better)
Windows MSVC 386 RearmStopped/Go 63.110 ns/op +0.1 ns/op / +0.2% (worse)
Windows MSVC 386 RearmStopped/LLGo 336 ns/op -3.5 ns/op / -1.0% (better)
Windows MSVC 386 ResetActive/Go 38.910 ns/op -0.19 ns/op / -0.5% (better)
Windows MSVC 386 ResetActive/LLGo 990 ns/op +0.7 ns/op / +0.1% (worse)
Windows MSVC 386 ResetHeap1024/Go 39.320 ns/op -0.1 ns/op / -0.3% (better)
Windows MSVC 386 ResetHeap1024/LLGo 179.200 ns/op +1.7 ns/op / +1.0% (worse)
Windows MSVC ARM64 AfterFuncZeroDelivery/Go 666 ns/op -9.3 ns/op / -1.4% (better)
Windows MSVC ARM64 AfterFuncZeroDelivery/LLGo 134071 ns/op -11811 ns/op / -8.1% (better)
Windows MSVC ARM64 CreateStop/Go 196.900 ns/op +1.4 ns/op / +0.7% (worse)
Windows MSVC ARM64 CreateStop/LLGo 432.700 ns/op +14.2 ns/op / +3.4% (worse)
Windows MSVC ARM64 RearmStopped/Go 70.610 ns/op -0.17 ns/op / -0.2% (better)
Windows MSVC ARM64 RearmStopped/LLGo 308.400 ns/op +0.3 ns/op / +0.1% (worse)
Windows MSVC ARM64 ResetActive/Go 30.990 ns/op -0.24 ns/op / -0.8% (better)
Windows MSVC ARM64 ResetActive/LLGo 134.300 ns/op -2.7 ns/op / -2.0% (better)
Windows MSVC ARM64 ResetHeap1024/Go 31.100 ns/op -0.19 ns/op / -0.6% (better)
Windows MSVC ARM64 ResetHeap1024/LLGo 147.500 ns/op -2.4 ns/op / -1.6% (better)

Compared with 416b083f59d6 measured in the same runner job.

@cpunion
cpunion marked this pull request as ready for review August 30, 2026 11:48
@cpunion
cpunion force-pushed the codex/windows-r11-mingw-arch-20260829 branch from d031f1f to 202a426 Compare August 30, 2026 14:00
@cpunion cpunion changed the title windows: qualify remaining GNU/MinGW architectures (R11; depends on #208) windows: qualify remaining GNU/MinGW architectures (R11; depends on xgo-dev/llgo#2454) Aug 30, 2026
@cpunion cpunion changed the title windows: qualify remaining GNU/MinGW architectures (R11; depends on xgo-dev/llgo#2454) windows: qualify remaining GNU/MinGW architectures (R11; depends on xgo-dev/llgo#2454 and #2461) Aug 30, 2026
@cpunion cpunion changed the title windows: qualify remaining GNU/MinGW architectures (R11; depends on xgo-dev/llgo#2454 and #2461) windows: qualify remaining GNU/MinGW architectures (R11; depends on xgo-dev/llgo#2454, #2461, and #2462) Aug 30, 2026
@cpunion
cpunion force-pushed the codex/windows-r10-msvc-arch-20260829 branch 2 times, most recently from c273d31 to cecb87f Compare August 31, 2026 02:46
@cpunion

cpunion commented Aug 31, 2026

Copy link
Copy Markdown
Owner Author

Superseded by the upstream R11 pull request rebased onto the current R10 head.

@cpunion cpunion closed this Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

windows Windows platform support

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant