Skip to content

windows: qualify debuggers and host shells (R12; depends on xgo-dev/llgo#2463) - #216

Closed
cpunion wants to merge 25 commits into
codex/windows-r11-mingw-arch-upstream-20260831from
codex/windows-r12-debug-shell-20260831
Closed

cpunion wants to merge 25 commits into
codex/windows-r11-mingw-arch-upstream-20260831from
codex/windows-r12-debug-shell-20260831

Conversation

@cpunion

@cpunion cpunion commented Aug 30, 2026 •

Copy link
Copy Markdown
Owner

Purpose

Advance R12 of the Windows support proposal by qualifying debugger metadata and native host-shell invocation across the supported Windows profiles and architectures.

Related proposal: xgo-dev#2325

Depends on:

Current scope

  • extract and use the official target-native LLVM 19.1.7 LLDB installations for Windows/ARM64 and Windows/386 instead of asking the x64 debugger to cross architecture-specific exception dispatch;
  • pair those debuggers with their actual embedded Python ABIs (3.11 ARM64 and 3.10 x86), independently of the Python 3.12 demo target;
  • run LLDB integration on MSVC and MinGW for amd64, ARM64, and 386;
  • honor the configured LLGO_LLDB before probing PATH, so a cross-architecture lane cannot silently select the host debugger;
  • select the resolved source frame before evaluating variables, because Windows/386 can expose the WoW64 exception dispatcher as frame zero;
  • keep 64-bit integer debug values addressable on Windows/386 so LLVM cannot truncate an unsigned value to one 32-bit DWARF stack item;
  • preserve DWARF for package C/C++ sources whenever the typed Go debug policy preserves it, with no debug metadata added to normal -w or default release builds;
  • verify source breakpoints and ordered mixed Go -> C -> Go callback stacks, including a C nil-fault instruction reached through a callback boundary;
  • isolate the mixed-language stack fixture from the large variable-formatting fixture so foreign calls cannot perturb unrelated Go variable locations;
  • parse, verify, and semantically inspect LLGo DWARF in PE files at every optimization level;
  • retain the verifier fixture's COFF sections for both MSVC and MinGW, avoiding zero-address section-GC tombstones that llvm-dwarfdump --verify misdiagnoses while normal LLDB tests continue to exercise section GC;
  • preserve an explicit COFF /debug linker choice and emit CodeView file/line records for the companion PDB while retaining embedded DWARF;
  • verify that the PDB contains Go source files, Go public symbols, and usable line/address mappings;
  • run profile-preserving builds from PowerShell, cmd.exe, a fresh Visual Studio Developer Shell, MSYS2, and Cygwin;
  • keep shell scripts LF-terminated in Windows checkouts so the same checked-in host-shell qualification runs under MSYS2 and Cygwin;
  • reject accidental msys-2.0.dll, cygwin1.dll, and, for MSVC, libwinpthread dependencies in shell-produced executables.

The explicit-PDB path does not introduce a second Go type system in CodeView. The companion PDB provides discovery, public symbols, and source/line mappings; embedded DWARF remains the type authority. Default release builds and explicit /debug:none builds do not emit the extra metadata.

Validation

  • rebased without conflicts onto R11 head 14aedcde5; range-diff confirms all 25 R12 commits are unchanged apart from their rewritten parents;
  • the host-shell fix preserves architecture-selected compilers for non-amd64 targets and passes native Windows output/inspection paths explicitly from Cygwin, which unlike MSYS2 does not translate native-program arguments; no speculative DLL-path override remains;
  • go test -count=1 ./test/go ./ssa ./internal/build ./internal/debuginfo passes on macOS ARM64 (internal/build completed in 446s);
  • Windows/386 MSVC with official Win32 LLDB 19.1.7: 224/224 variable assertions and 3/3 mixed Go/C callback/fault-stack assertions pass, including all auxiliary marker/plugin checks;
  • Windows/386 MinGW with official Win32 LLDB 19.1.7: the same 224/224, 3/3, and auxiliary checks pass;
  • the MinGW/386 suite also passes with the host lldb first on PATH and the target-native debugger selected only through LLGO_LLDB;
  • Windows/ARM64 MinGW with native Go 1.27 and CLANGARM64 22.1.8: the complete test/go package passes with LLGO_TEST_JOBS=1;
  • Windows/amd64 MSVC TestStandardDWARF passes at O0, O1, O2, O3, Os, and Oz;
  • Python bytecode validation, YAML parsing, actionlint, and git diff --check pass;
  • the complete Windows architecture/profile CI matrix is running on the current head.

@cpunion cpunion added the windows Windows platform support label Aug 30, 2026
@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown

LLGo baseline benchmarks

5ce14445e7b8 | 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 19608 B 0 B / +0.0% 387 B 0 B / +0.0% 356.348 ms +8.321 ms / +2.4% (worse) 1.339 ms +92.18 us / +7.4% (worse)
Linux cprintf-lto 19440 B 0 B / +0.0% 368 B 0 B / +0.0% 357.500 ms -2.371 ms / -0.7% (better) 1.275 ms -68.15 us / -5.1% (better)
Linux fmtprintf 1615576 B 0 B / +0.0% 493418 B 0 B / +0.0% 2.534 s +26.67 ms / +1.1% (worse) 3.034 ms +12.78 us / +0.4% (worse)
Linux fmtprintf-lto 1491368 B 0 B / +0.0% 453936 B 0 B / +0.0% 8.336 s -89.4 ms / -1.1% (better) 2.924 ms -256.6 us / -8.1% (better)
Linux println 62808 B 0 B / +0.0% 15360 B 0 B / +0.0% 349.342 ms +2.191 ms / +0.6% (worse) 1.689 ms +9.758 us / +0.6% (worse)
Linux println-lto 54648 B 0 B / +0.0% 12985 B 0 B / +0.0% 528.047 ms +3.527 ms / +0.7% (worse) 1.726 ms +82.03 us / +5.0% (worse)
macOS cprintf 84480 B 0 B / +0.0% 16845 B 0 B / +0.0% 375.460 ms -161.4 ms / -30.1% (better) 2.506 ms -161.3 us / -6.0% (better)
macOS cprintf-lto 100704 B 0 B / +0.0% 16825 B 0 B / +0.0% 415.988 ms -193 ms / -31.7% (better) 2.595 ms -164.6 us / -6.0% (better)
macOS fmtprintf 1473136 B 0 B / +0.0% 869200 B 0 B / +0.0% 2.045 s -1.375 s / -40.2% (better) 4.112 ms -1.189 ms / -22.4% (better)
macOS fmtprintf-lto 1176000 B 0 B / +0.0% 864760 B 0 B / +0.0% 6.323 s -301.2 ms / -4.5% (better) 4.685 ms -2.073 ms / -30.7% (better)
macOS println 114944 B 0 B / +0.0% 35377 B 0 B / +0.0% 371.122 ms -128.6 ms / -25.7% (better) 2.901 ms -917.5 us / -24.0% (better)
macOS println-lto 118736 B 0 B / +0.0% 33029 B 0 B / +0.0% 481.634 ms -330.5 ms / -40.7% (better) 3.382 ms -507.9 us / -13.1% (better)
Windows MinGW cprintf 20480 B 0 B / +0.0% 4662 B 0 B / +0.0% 867.966 ms +26.93 ms / +3.2% (worse) 3.365 ms -48.5 us / -1.4% (better)
Windows MinGW cprintf-lto 18432 B 0 B / +0.0% 4582 B 0 B / +0.0% 889.217 ms +2.683 ms / +0.3% (worse) 3.525 ms -54.1 us / -1.5% (better)
Windows MinGW fmtprintf 1932800 B 0 B / +0.0% 597574 B 0 B / +0.0% 3.582 s +15.41 ms / +0.4% (worse) 8.197 ms +276.8 us / +3.5% (worse)
Windows MinGW fmtprintf-lto 1982464 B 0 B / +0.0% 589622 B 0 B / +0.0% 9.773 s +134.2 ms / +1.4% (worse) 8.543 ms +472 us / +5.8% (worse)
Windows MinGW println 74240 B 0 B / +0.0% 25014 B 0 B / +0.0% 870.191 ms -6.034 ms / -0.7% (better) 6.700 ms -792.7 us / -10.6% (better)
Windows MinGW println-lto 67584 B 0 B / +0.0% 21830 B 0 B / +0.0% 1.074 s -37.76 ms / -3.4% (better) 6.813 ms +20.3 us / +0.3% (worse)
Windows MinGW 386 cprintf 37888 B 0 B / +0.0% 5228 B 0 B / +0.0% 890.784 ms -63.5 ms / -6.7% (better) 5.013 ms -525.5 us / -9.5% (better)
Windows MinGW 386 cprintf-lto 21504 B 0 B / +0.0% 5028 B 0 B / +0.0% 920.100 ms -63.25 ms / -6.4% (better) 4.994 ms -134.2 us / -2.6% (better)
Windows MinGW 386 fmtprintf 1947136 B 0 B / +0.0% 472062 B 0 B / +0.0% 3.568 s -180.5 ms / -4.8% (better) 12.172 ms -92.8 us / -0.8% (better)
Windows MinGW 386 fmtprintf-lto 2188288 B 0 B / +0.0% 472002 B 0 B / +0.0% 10.193 s -704.9 ms / -6.5% (better) 10.939 ms -1.184 ms / -9.8% (better)
Windows MinGW 386 println 88064 B 0 B / +0.0% 20726 B 0 B / +0.0% 878.525 ms -58.97 ms / -6.3% (better) 8.441 ms -1.782 ms / -17.4% (better)
Windows MinGW 386 println-lto 72192 B 0 B / +0.0% 18790 B 0 B / +0.0% 1.117 s -84.65 ms / -7.0% (better) 8.479 ms -592.5 us / -6.5% (better)
Windows MinGW ARM64 cprintf 19968 B 0 B / +0.0% 4632 B 0 B / +0.0% 994.459 ms -27.4 ms / -2.7% (better) 6.093 ms -1.254 ms / -17.1% (better)
Windows MinGW ARM64 cprintf-lto 18432 B 0 B / +0.0% 4552 B 0 B / +0.0% 1.028 s -23.98 ms / -2.3% (better) 6.414 ms -64.8 us / -1.0% (better)
Windows MinGW ARM64 fmtprintf 1820160 B 0 B / +0.0% 510596 B 0 B / +0.0% 3.552 s +122.4 ms / +3.6% (worse) 14.141 ms +1.566 ms / +12.5% (worse)
Windows MinGW ARM64 fmtprintf-lto 1886720 B 0 B / +0.0% 506320 B 0 B / +0.0% 8.698 s -61.77 ms / -0.7% (better) 12.812 ms -632.9 us / -4.7% (better)
Windows MinGW ARM64 println 71680 B 0 B / +0.0% 23832 B 0 B / +0.0% 984.448 ms -26.85 ms / -2.7% (better) 11.211 ms -57.4 us / -0.5% (better)
Windows MinGW ARM64 println-lto 67072 B 0 B / +0.0% 21068 B 0 B / +0.0% 1.166 s -47.91 ms / -3.9% (better) 11.408 ms -285.3 us / -2.4% (better)
Windows MSVC cprintf 12288 B 0 B / +0.0% 4438 B 0 B / +0.0% 767.110 ms +148.9 ms / +24.1% (worse) 4.152 ms -230.1 us / -5.3% (better)
Windows MSVC cprintf-lto 11776 B 0 B / +0.0% 4278 B 0 B / +0.0% 751.976 ms +63.45 ms / +9.2% (worse) 3.601 ms +47.4 us / +1.3% (worse)
Windows MSVC fmtprintf 1471488 B 0 B / +0.0% 597142 B 0 B / +0.0% 2.830 s -34.77 ms / -1.2% (better) 8.494 ms +378.8 us / +4.7% (worse)
Windows MSVC fmtprintf-lto 1517056 B 0 B / +0.0% 596502 B 0 B / +0.0% 8.411 s +79.96 ms / +1.0% (worse) 8.735 ms +137.2 us / +1.6% (worse)
Windows MSVC println 47104 B 0 B / +0.0% 25030 B 0 B / +0.0% 652.750 ms +35.67 ms / +5.8% (worse) 6.681 ms +247.8 us / +3.9% (worse)
Windows MSVC println-lto 44032 B 0 B / +0.0% 22198 B 0 B / +0.0% 804.147 ms -19.16 ms / -2.3% (better) 6.715 ms +346.9 us / +5.4% (worse)
Windows MSVC 386 cprintf 9728 B 0 B / +0.0% 3930 B 0 B / +0.0% 896.692 ms +48.39 ms / +5.7% (worse) 5.717 ms -67.9 us / -1.2% (better)
Windows MSVC 386 cprintf-lto 9216 B 0 B / +0.0% 3840 B 0 B / +0.0% 918.634 ms +53.15 ms / +6.1% (worse) 5.454 ms -516.5 us / -8.7% (better)
Windows MSVC 386 fmtprintf 1189888 B 0 B / +0.0% 456032 B 0 B / +0.0% 3.554 s -16.98 ms / -0.5% (better) 12.680 ms +1.04 ms / +8.9% (worse)
Windows MSVC 386 fmtprintf-lto 1252352 B 0 B / +0.0% 452437 B 0 B / +0.0% 10.214 s +139.8 ms / +1.4% (worse) 11.133 ms -293.2 us / -2.6% (better)
Windows MSVC 386 println 35328 B 0 B / +0.0% 19712 B 0 B / +0.0% 851.232 ms +14.78 ms / +1.8% (worse) 9.129 ms -41.6 us / -0.5% (better)
Windows MSVC 386 println-lto 34304 B 0 B / +0.0% 17927 B 0 B / +0.0% 1.073 s -9.456 ms / -0.9% (better) 9.103 ms -231.4 us / -2.5% (better)
Windows MSVC ARM64 cprintf 11264 B 0 B / +0.0% 3976 B 0 B / +0.0% 1.812 s +25.16 ms / +1.4% (worse) 8.351 ms +10.9 us / +0.1% (worse)
Windows MSVC ARM64 cprintf-lto 10752 B 0 B / +0.0% 3844 B 0 B / +0.0% 1.816 s +31.38 ms / +1.8% (worse) 7.493 ms -23.9 us / -0.3% (better)
Windows MSVC ARM64 fmtprintf 1365504 B 0 B / +0.0% 510268 B 0 B / +0.0% 6.015 s +8.718 ms / +0.1% (worse) 16.221 ms -8.3 us / -0.1% (better)
Windows MSVC ARM64 fmtprintf-lto 1413120 B 0 B / +0.0% 507148 B 0 B / +0.0% 18.314 s +91.77 ms / +0.5% (worse) 16.415 ms +476.8 us / +3.0% (worse)
Windows MSVC ARM64 println 43008 B 0 B / +0.0% 22824 B 0 B / +0.0% 1.771 s +23.57 ms / +1.3% (worse) 13.343 ms -317.9 us / -2.3% (better)
Windows MSVC ARM64 println-lto 40960 B 0 B / +0.0% 20732 B 0 B / +0.0% 2.206 s -9.145 ms / -0.4% (better) 13.685 ms +427.6 us / +3.2% (worse)
Core language and compiler benchmarks
Platform Benchmark ns/op vs base
Linux BenchmarkLookupPCRandom 13.400 ns/op +0.17 ns/op / +1.3% (worse)
Linux BenchmarkMergeCompilerFlags 139.800 ns/op -0.6 ns/op / -0.4% (better)
Linux BenchmarkMergeLinkerFlags 89.530 ns/op +0.42 ns/op / +0.5% (worse)
Linux BenchmarkChannelBuffered 36.490 ns/op +0.02 ns/op / +0.1% (worse)
Linux BenchmarkChannelHandoff 26929 ns/op +494 ns/op / +1.9% (worse)
Linux BenchmarkDefer 45.770 ns/op +0.29 ns/op / +0.6% (worse)
Linux BenchmarkDirectCall 1.558 ns/op +0.002 ns/op / +0.1% (worse)
Linux BenchmarkGlobalRead 1.870 ns/op +0.001 ns/op / +0.1% (worse)
Linux BenchmarkGlobalWrite 2.488 ns/op -0.01 ns/op / -0.4% (better)
Linux BenchmarkGoroutine 31861 ns/op +200 ns/op / +0.6% (worse)
Linux BenchmarkInterfaceCall 7.782 ns/op -0.003 ns/op / -0.03854% (better)
Linux BenchmarkRuntimeGetG 1.868 ns/op +0.001 ns/op / +0.1% (worse)
macOS BenchmarkLookupPCRandom 11.920 ns/op -2.54 ns/op / -17.6% (better)
macOS BenchmarkMergeCompilerFlags 121.900 ns/op -7 ns/op / -5.4% (better)
macOS BenchmarkMergeLinkerFlags 66.660 ns/op -7.25 ns/op / -9.8% (better)
macOS BenchmarkChannelBuffered 24.540 ns/op -2.27 ns/op / -8.5% (better)
macOS BenchmarkChannelHandoff 5431 ns/op -4809 ns/op / -47.0% (better)
macOS BenchmarkDefer 29.670 ns/op -7.33 ns/op / -19.8% (better)
macOS BenchmarkDirectCall 0.985 ns/op -0.2488 ns/op / -20.2% (better)
macOS BenchmarkGlobalRead 1.090 ns/op -0.171 ns/op / -13.6% (better)
macOS BenchmarkGlobalWrite 1.118 ns/op -0.09 ns/op / -7.5% (better)
macOS BenchmarkGoroutine 45652 ns/op +4248 ns/op / +10.3% (worse)
macOS BenchmarkInterfaceCall 4.295 ns/op -0.827 ns/op / -16.1% (better)
macOS BenchmarkRuntimeGetG 2.465 ns/op -0.354 ns/op / -12.6% (better)
Windows MinGW BenchmarkLookupPCRandom 13.200 ns/op +0.08 ns/op / +0.6% (worse)
Windows MinGW BenchmarkMergeCompilerFlags 606 ns/op +0.9 ns/op / +0.1% (worse)
Windows MinGW BenchmarkMergeLinkerFlags 538.600 ns/op +2.7 ns/op / +0.5% (worse)
Windows MinGW BenchmarkChannelBuffered 34.390 ns/op -0.02 ns/op / -0.1% (better)
Windows MinGW BenchmarkChannelHandoff 846.400 ns/op +22.1 ns/op / +2.7% (worse)
Windows MinGW BenchmarkDefer 58.320 ns/op -0.32 ns/op / -0.5% (better)
Windows MinGW BenchmarkDirectCall 1.857 ns/op -0.001 ns/op / -0.1% (better)
Windows MinGW BenchmarkGlobalRead 1.551 ns/op +0.001 ns/op / +0.1% (worse)
Windows MinGW BenchmarkGlobalWrite 2.471 ns/op +0.002 ns/op / +0.1% (worse)
Windows MinGW BenchmarkGoroutine 80973 ns/op -1321 ns/op / -1.6% (better)
Windows MinGW BenchmarkInterfaceCall 9.301 ns/op -0.002 ns/op / -0.0215% (better)
Windows MinGW BenchmarkRuntimeGetG 2.787 ns/op -0.003 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkLookupPCRandom 27.770 ns/op -0.16 ns/op / -0.6% (better)
Windows MinGW 386 BenchmarkMergeCompilerFlags 722.500 ns/op -38.4 ns/op / -5.0% (better)
Windows MinGW 386 BenchmarkMergeLinkerFlags 673.700 ns/op -0.9 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkChannelBuffered 47.430 ns/op -0.03 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkChannelHandoff 962.300 ns/op +159.7 ns/op / +19.9% (worse)
Windows MinGW 386 BenchmarkDefer 43.180 ns/op -2.98 ns/op / -6.5% (better)
Windows MinGW 386 BenchmarkDirectCall 1.747 ns/op -0.001 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkGlobalRead 1.747 ns/op -0.001 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkGlobalWrite 8.987 ns/op -0.004 ns/op / -0.04449% (better)
Windows MinGW 386 BenchmarkGoroutine 71063 ns/op -1664 ns/op / -2.3% (better)
Windows MinGW 386 BenchmarkInterfaceCall 11.190 ns/op 0 ns/op / +0.0%
Windows MinGW 386 BenchmarkRuntimeGetG 1.774 ns/op +0.003 ns/op / +0.2% (worse)
Windows MinGW ARM64 BenchmarkLookupPCRandom 12.040 ns/op -0.02 ns/op / -0.2% (better)
Windows MinGW ARM64 BenchmarkMergeCompilerFlags 567.800 ns/op -41.1 ns/op / -6.7% (better)
Windows MinGW ARM64 BenchmarkMergeLinkerFlags 533.300 ns/op -44.6 ns/op / -7.7% (better)
Windows MinGW ARM64 BenchmarkChannelBuffered 43.680 ns/op +0.31 ns/op / +0.7% (worse)
Windows MinGW ARM64 BenchmarkChannelHandoff 2328 ns/op +79 ns/op / +3.5% (worse)
Windows MinGW ARM64 BenchmarkDefer 55.710 ns/op -0.06 ns/op / -0.1% (better)
Windows MinGW ARM64 BenchmarkDirectCall 0.590 ns/op +0.0004 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkGlobalRead 0.737 ns/op -0.0038 ns/op / -0.5% (better)
Windows MinGW ARM64 BenchmarkGlobalWrite 0.663 ns/op -0.001 ns/op / -0.2% (better)
Windows MinGW ARM64 BenchmarkGoroutine 58463 ns/op -1462 ns/op / -2.4% (better)
Windows MinGW ARM64 BenchmarkInterfaceCall 4.720 ns/op +0.001 ns/op / +0.02119% (worse)
Windows MinGW ARM64 BenchmarkRuntimeGetG 1.805 ns/op +0.034 ns/op / +1.9% (worse)
Windows MSVC BenchmarkLookupPCRandom 9.825 ns/op +0.052 ns/op / +0.5% (worse)
Windows MSVC BenchmarkMergeCompilerFlags 485.100 ns/op +8.1 ns/op / +1.7% (worse)
Windows MSVC BenchmarkMergeLinkerFlags 426.300 ns/op 0 ns/op / +0.0%
Windows MSVC BenchmarkChannelBuffered 48.900 ns/op -0.29 ns/op / -0.6% (better)
Windows MSVC BenchmarkChannelHandoff 1245 ns/op -230 ns/op / -15.6% (better)
Windows MSVC BenchmarkDefer 48.470 ns/op -0.26 ns/op / -0.5% (better)
Windows MSVC BenchmarkDirectCall 0.950 ns/op -0.0132 ns/op / -1.4% (better)
Windows MSVC BenchmarkGlobalRead 0.906 ns/op -0.0523 ns/op / -5.5% (better)
Windows MSVC BenchmarkGlobalWrite 7.238 ns/op +0.001 ns/op / +0.01382% (worse)
Windows MSVC BenchmarkGoroutine 59933 ns/op +2355 ns/op / +4.1% (worse)
Windows MSVC BenchmarkInterfaceCall 5.483 ns/op +0.029 ns/op / +0.5% (worse)
Windows MSVC BenchmarkRuntimeGetG 1.285 ns/op +0.015 ns/op / +1.2% (worse)
Windows MSVC 386 BenchmarkLookupPCRandom 26.770 ns/op +0.24 ns/op / +0.9% (worse)
Windows MSVC 386 BenchmarkMergeCompilerFlags 727.400 ns/op -34.3 ns/op / -4.5% (better)
Windows MSVC 386 BenchmarkMergeLinkerFlags 697.200 ns/op +38.7 ns/op / +5.9% (worse)
Windows MSVC 386 BenchmarkChannelBuffered 43.100 ns/op -0.01 ns/op / -0.0232% (better)
Windows MSVC 386 BenchmarkChannelHandoff 886.800 ns/op -4.4 ns/op / -0.5% (better)
Windows MSVC 386 BenchmarkDefer 50.510 ns/op +0.92 ns/op / +1.9% (worse)
Windows MSVC 386 BenchmarkDirectCall 1.551 ns/op 0 ns/op / +0.0%
Windows MSVC 386 BenchmarkGlobalRead 1.864 ns/op -0.005 ns/op / -0.3% (better)
Windows MSVC 386 BenchmarkGlobalWrite 7.811 ns/op +0.009 ns/op / +0.1% (worse)
Windows MSVC 386 BenchmarkGoroutine 90849 ns/op +1508 ns/op / +1.7% (worse)
Windows MSVC 386 BenchmarkInterfaceCall 9.951 ns/op +0.01 ns/op / +0.1% (worse)
Windows MSVC 386 BenchmarkRuntimeGetG 2.178 ns/op +0.008 ns/op / +0.4% (worse)
Windows MSVC ARM64 BenchmarkLookupPCRandom 12.040 ns/op -0.06 ns/op / -0.5% (better)
Windows MSVC ARM64 BenchmarkMergeCompilerFlags 582.100 ns/op +3.2 ns/op / +0.6% (worse)
Windows MSVC ARM64 BenchmarkMergeLinkerFlags 543.100 ns/op -3.7 ns/op / -0.7% (better)
Windows MSVC ARM64 BenchmarkChannelBuffered 43.690 ns/op +0.12 ns/op / +0.3% (worse)
Windows MSVC ARM64 BenchmarkChannelHandoff 2681 ns/op +2 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkDefer 66 ns/op -2.19 ns/op / -3.2% (better)
Windows MSVC ARM64 BenchmarkDirectCall 0.664 ns/op -0.0003 ns/op / -0.04517% (better)
Windows MSVC ARM64 BenchmarkGlobalRead 0.737 ns/op -0.0008 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkGlobalWrite 3.796 ns/op +0.001 ns/op / +0.02635% (worse)
Windows MSVC ARM64 BenchmarkGoroutine 58618 ns/op +888 ns/op / +1.5% (worse)
Windows MSVC ARM64 BenchmarkInterfaceCall 4.723 ns/op 0 ns/op / +0.0%
Windows MSVC ARM64 BenchmarkRuntimeGetG 1.771 ns/op 0 ns/op / +0.0%

Timer runtime benchmarks

Platform Operation and runtime ns/op vs base
Linux AfterFuncZeroDelivery/Go 607 ns/op +6.3 ns/op / +1.0% (worse)
Linux AfterFuncZeroDelivery/LLGo 53934 ns/op +269 ns/op / +0.5% (worse)
Linux CreateStop/Go 149 ns/op +0.9 ns/op / +0.6% (worse)
Linux CreateStop/LLGo 706.300 ns/op -218.3 ns/op / -23.6% (better)
Linux RearmStopped/Go 55.040 ns/op -0.11 ns/op / -0.2% (better)
Linux RearmStopped/LLGo 652.200 ns/op -42.4 ns/op / -6.1% (better)
Linux ResetActive/Go 41.180 ns/op -0.57 ns/op / -1.4% (better)
Linux ResetActive/LLGo 407.600 ns/op +62.2 ns/op / +18.0% (worse)
Linux ResetHeap1024/Go 41.570 ns/op -0.1 ns/op / -0.2% (better)
Linux ResetHeap1024/LLGo 146.800 ns/op +1 ns/op / +0.7% (worse)
macOS AfterFuncZeroDelivery/Go 452.100 ns/op -13.9 ns/op / -3.0% (better)
macOS AfterFuncZeroDelivery/LLGo 94377 ns/op -7865 ns/op / -7.7% (better)
macOS CreateStop/Go 128.800 ns/op -31.1 ns/op / -19.4% (better)
macOS CreateStop/LLGo 652.800 ns/op +120.1 ns/op / +22.5% (worse)
macOS RearmStopped/Go 60.560 ns/op -24.85 ns/op / -29.1% (better)
macOS RearmStopped/LLGo 380.400 ns/op -61.2 ns/op / -13.9% (better)
macOS ResetActive/Go 43.800 ns/op -9.04 ns/op / -17.1% (better)
macOS ResetActive/LLGo 161.400 ns/op -67.7 ns/op / -29.6% (better)
macOS ResetHeap1024/Go 40.710 ns/op -5.44 ns/op / -11.8% (better)
macOS ResetHeap1024/LLGo 87.460 ns/op -13.94 ns/op / -13.7% (better)
Windows MinGW AfterFuncZeroDelivery/Go 558.500 ns/op +1.1 ns/op / +0.2% (worse)
Windows MinGW AfterFuncZeroDelivery/LLGo 163362 ns/op +3176 ns/op / +2.0% (worse)
Windows MinGW CreateStop/Go 116.400 ns/op -1.8 ns/op / -1.5% (better)
Windows MinGW CreateStop/LLGo 479.500 ns/op -1.3 ns/op / -0.3% (better)
Windows MinGW RearmStopped/Go 31.470 ns/op +0.07 ns/op / +0.2% (worse)
Windows MinGW RearmStopped/LLGo 300.100 ns/op -12.1 ns/op / -3.9% (better)
Windows MinGW ResetActive/Go 20.070 ns/op +0.01 ns/op / +0.04985% (worse)
Windows MinGW ResetActive/LLGo 172.500 ns/op +14.3 ns/op / +9.0% (worse)
Windows MinGW ResetHeap1024/Go 20.570 ns/op +0.1 ns/op / +0.5% (worse)
Windows MinGW ResetHeap1024/LLGo 146.300 ns/op +2.5 ns/op / +1.7% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/Go 989.400 ns/op +2.4 ns/op / +0.2% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/LLGo 160825 ns/op +1697 ns/op / +1.1% (worse)
Windows MinGW 386 CreateStop/Go 251.900 ns/op +34.3 ns/op / +15.8% (worse)
Windows MinGW 386 CreateStop/LLGo 2233 ns/op -61 ns/op / -2.7% (better)
Windows MinGW 386 RearmStopped/Go 74.270 ns/op +1.6 ns/op / +2.2% (worse)
Windows MinGW 386 RearmStopped/LLGo 379.100 ns/op +8.9 ns/op / +2.4% (worse)
Windows MinGW 386 ResetActive/Go 47.050 ns/op +5.12 ns/op / +12.2% (worse)
Windows MinGW 386 ResetActive/LLGo 1062 ns/op +769.8 ns/op / +263.4% (worse)
Windows MinGW 386 ResetHeap1024/Go 42.300 ns/op -0.05 ns/op / -0.1% (better)
Windows MinGW 386 ResetHeap1024/LLGo 203.700 ns/op +1.5 ns/op / +0.7% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/Go 678.200 ns/op +4.2 ns/op / +0.6% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/LLGo 130662 ns/op -61 ns/op / -0.04666% (better)
Windows MinGW ARM64 CreateStop/Go 207.800 ns/op +10.1 ns/op / +5.1% (worse)
Windows MinGW ARM64 CreateStop/LLGo 397.500 ns/op -15.4 ns/op / -3.7% (better)
Windows MinGW ARM64 RearmStopped/Go 70.610 ns/op +0.01 ns/op / +0.01416% (worse)
Windows MinGW ARM64 RearmStopped/LLGo 294 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 ResetActive/Go 31.010 ns/op +0.03 ns/op / +0.1% (worse)
Windows MinGW ARM64 ResetActive/LLGo 126.100 ns/op -2.6 ns/op / -2.0% (better)
Windows MinGW ARM64 ResetHeap1024/Go 31.110 ns/op +0.02 ns/op / +0.1% (worse)
Windows MinGW ARM64 ResetHeap1024/LLGo 142.600 ns/op -0.8 ns/op / -0.6% (better)
Windows MSVC AfterFuncZeroDelivery/Go 588.700 ns/op -1.2 ns/op / -0.2% (better)
Windows MSVC AfterFuncZeroDelivery/LLGo 118749 ns/op -4586 ns/op / -3.7% (better)
Windows MSVC CreateStop/Go 160.700 ns/op +0.1 ns/op / +0.1% (worse)
Windows MSVC CreateStop/LLGo 537.800 ns/op -75.1 ns/op / -12.3% (better)
Windows MSVC RearmStopped/Go 59.820 ns/op +0.1 ns/op / +0.2% (worse)
Windows MSVC RearmStopped/LLGo 300.400 ns/op +26.1 ns/op / +9.5% (worse)
Windows MSVC ResetActive/Go 26.470 ns/op -0.1 ns/op / -0.4% (better)
Windows MSVC ResetActive/LLGo 193.100 ns/op +36.4 ns/op / +23.2% (worse)
Windows MSVC ResetHeap1024/Go 26.770 ns/op -0.05 ns/op / -0.2% (better)
Windows MSVC ResetHeap1024/LLGo 117.500 ns/op -0.4 ns/op / -0.3% (better)
Windows MSVC 386 AfterFuncZeroDelivery/Go 951.800 ns/op -10.4 ns/op / -1.1% (better)
Windows MSVC 386 AfterFuncZeroDelivery/LLGo 188522 ns/op -1126 ns/op / -0.6% (better)
Windows MSVC 386 CreateStop/Go 191.500 ns/op -1.7 ns/op / -0.9% (better)
Windows MSVC 386 CreateStop/LLGo 1684 ns/op +1 ns/op / +0.1% (worse)
Windows MSVC 386 RearmStopped/Go 63.510 ns/op -0.04 ns/op / -0.1% (better)
Windows MSVC 386 RearmStopped/LLGo 332.400 ns/op -12.6 ns/op / -3.7% (better)
Windows MSVC 386 ResetActive/Go 39.180 ns/op -0.15 ns/op / -0.4% (better)
Windows MSVC 386 ResetActive/LLGo 966 ns/op +18.4 ns/op / +1.9% (worse)
Windows MSVC 386 ResetHeap1024/Go 39.310 ns/op -0.16 ns/op / -0.4% (better)
Windows MSVC 386 ResetHeap1024/LLGo 180.200 ns/op -0.7 ns/op / -0.4% (better)
Windows MSVC ARM64 AfterFuncZeroDelivery/Go 673 ns/op +4.9 ns/op / +0.7% (worse)
Windows MSVC ARM64 AfterFuncZeroDelivery/LLGo 130934 ns/op -7730 ns/op / -5.6% (better)
Windows MSVC ARM64 CreateStop/Go 200.900 ns/op -0.4 ns/op / -0.2% (better)
Windows MSVC ARM64 CreateStop/LLGo 435.500 ns/op +12 ns/op / +2.8% (worse)
Windows MSVC ARM64 RearmStopped/Go 70.710 ns/op +0.14 ns/op / +0.2% (worse)
Windows MSVC ARM64 RearmStopped/LLGo 305.500 ns/op +2.7 ns/op / +0.9% (worse)
Windows MSVC ARM64 ResetActive/Go 31.010 ns/op +0.06 ns/op / +0.2% (worse)
Windows MSVC ARM64 ResetActive/LLGo 131.300 ns/op -2.9 ns/op / -2.2% (better)
Windows MSVC ARM64 ResetHeap1024/Go 31.160 ns/op +0.02 ns/op / +0.1% (worse)
Windows MSVC ARM64 ResetHeap1024/LLGo 149 ns/op +0.2 ns/op / +0.1% (worse)

Compared with 14aedcde5c1c measured in the same runner job.

@cpunion
cpunion force-pushed the codex/windows-r12-debug-shell-20260831 branch from a94854c to fcb384c Compare August 31, 2026 10:44
@cpunion cpunion changed the title windows: qualify debuggers and host shells (R12; depends on R10 and R11) windows: qualify debuggers and host shells (R12; depends on xgo-dev/llgo#2463) Aug 31, 2026
@cpunion
cpunion changed the base branch from codex/windows-r11-mingw-arch-20260829 to codex/windows-r11-mingw-arch-upstream-20260831 August 31, 2026 10:44
@cpunion
cpunion force-pushed the codex/windows-r12-debug-shell-20260831 branch from fcb384c to f036b39 Compare August 31, 2026 11:07
@cpunion
cpunion force-pushed the codex/windows-r11-mingw-arch-upstream-20260831 branch from 18c0635 to 14aedcd Compare August 31, 2026 12:24
@cpunion
cpunion force-pushed the codex/windows-r12-debug-shell-20260831 branch from 338b20e to 5ce1444 Compare August 31, 2026 12:32
@cpunion
cpunion marked this pull request as ready for review August 31, 2026 13:32
@cpunion

cpunion commented Aug 31, 2026

Copy link
Copy Markdown
Owner Author

R12 validation is complete and the upstream contribution is now tracked in xgo-dev#2465.

@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