Skip to content

test(wasm): verify acceptance child runner argument order - #2718

Merged
cpunion merged 1 commit into
xgo-dev:mainfrom
cpunion:codex/fix-wasm-std-issue28-20261003
Oct 5, 2026
Merged

cpunion merged 1 commit into
xgo-dev:mainfrom
cpunion:codex/fix-wasm-std-issue28-20261003

Conversation

@cpunion

@cpunion cpunion commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

The original GoJS child-loader fix is already on main through #2730. Rebased onto ec9c2488b and retained only the stronger regression test; this PR now changes no production code.

Check the complete child argument list for J32-GoJS, J32-Emscripten and J64-Emscripten, instead of checking only whether --browser-only is present. This also verifies the correct runner, browser flag placement, artifact and selector order:

J32-GoJS:       node emscripten-runner.mjs --browser-only <artifact> <selector>
J32-Emscripten: node emscripten-runner.mjs <artifact> <selector>
J64-Emscripten: node emscripten-memory64-runner.mjs <artifact> <selector>

The existing timeout wrapper remains part of the exact assertion. This protects the host-side print/panic/finalizer/Goexit acceptance checks from invoking raw GoJS glue with the wrong loader mode.

Refs llgo-compat/ci#28. The remaining diff is one test file (+9/-2).

Validation after rebase:

  • go test -race ./dev/wasmstdlib -count=1 passed (90.5s).
  • git diff --check passed.

@fennoai fennoai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review summary

Small, well-scoped fix. fullChildCommand now appends --browser-only for the raw J32-GoJS profile (p.Target == "" && p.GOOS == "js"), placed immediately after the runner path and before the artifact. This matches:

  • the emscripten-runner.mjs contract, which only parses --browser-only when it is argv[2] (before the module), and
  • how llgo test runs raw GoJS output (internal/build/build.go:1318 → node runner.mjs --browser-only {module}), so the added comment's "same browser mode as llgo test" is accurate.

The guard correctly excludes the Emscripten JS profiles (which set Target) and GoJS-reference (handled by the earlier Reference branch). The new slices.Equal assertion is a genuine strengthening — the previous Contains-based checks could not have caught a misordered --browser-only.

Correctness, security, performance, and the new code comment all check out. One minor, optional maintainability note is left inline. Nothing blocking.

if name == "J32-GoJS" {
want = append(want, "--browser-only")
} else if name == "J64-Emscripten" {
want[3] = filepath.Join("/repo", "targets", "emscripten-memory64-runner.mjs")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor maintainability nit (non-blocking): want[3] mutates a positional slot whose correctness silently depends on the fixed timeout prefix length (--kill-after=10s, 30s, node, <runner>) built in fullChildCommand. The literal 3 is a magic index — if that prefix ever changes, this would substitute the wrong element rather than fail loudly. Consider locating the runner slot by searching for the .mjs entry (or building want per-profile from a shared base) so the assertion documents intent. Current value is correct.

@codecov

codecov Bot commented Oct 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

LLGo baseline benchmarks

cbfbe1e912a6 | 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 8568 B 0 B / +0.0% 387 B 0 B / +0.0% 986.575 ms -2.959 ms / -0.3% (better) 1.329 ms +26.97 us / +2.1% (worse)
Linux cprintf-lto 8408 B 0 B / +0.0% 368 B 0 B / +0.0% 1.000 s +965.2 us / +0.1% (worse) 1.261 ms -29.07 us / -2.3% (better)
Linux fmtprintf 4880944 B -8 B / -0.0001639% (better) 501619 B 0 B / +0.0% 7.292 s -20.02 ms / -0.3% (better) 3.006 ms -54.16 us / -1.8% (better)
Linux fmtprintf-lto 3600808 B 0 B / +0.0% 438538 B 0 B / +0.0% 16.049 s -451.8 ms / -2.7% (better) 2.906 ms -345.5 us / -10.6% (better)
Linux println 674952 B 0 B / +0.0% 16855 B 0 B / +0.0% 996.348 ms -18.31 ms / -1.8% (better) 1.650 ms +42.47 us / +2.6% (worse)
Linux println-lto 190024 B 0 B / +0.0% 14273 B 0 B / +0.0% 1.295 s +18.77 ms / +1.5% (worse) 1.653 ms +100.5 us / +6.5% (worse)
macOS cprintf 50736 B 0 B / +0.0% 4409 B 0 B / +0.0% 744.620 ms -3.786 ms / -0.5% (better) 2.350 ms -46.25 us / -1.9% (better)
macOS cprintf-lto 50496 B 0 B / +0.0% 161 B 0 B / +0.0% 730.112 ms -32.27 ms / -4.2% (better) 2.276 ms +93.33 us / +4.3% (worse)
macOS fmtprintf 1773456 B 0 B / +0.0% 877780 B 0 B / +0.0% 3.423 s -712.5 ms / -17.2% (better) 6.832 ms -448.5 us / -6.2% (better)
macOS fmtprintf-lto 1360928 B 0 B / +0.0% 762428 B 0 B / +0.0% 7.490 s +256.6 ms / +3.5% (worse) 2.912 ms -130.5 us / -4.3% (better)
macOS println 99344 B 0 B / +0.0% 24216 B 0 B / +0.0% 715.860 ms -51.59 ms / -6.7% (better) 3.219 ms +108.1 us / +3.5% (worse)
macOS println-lto 83664 B 0 B / +0.0% 21457 B 0 B / +0.0% 859.918 ms -59.84 ms / -6.5% (better) 2.814 ms -167.9 us / -5.6% (better)
Windows MinGW cprintf 651264 B 0 B / +0.0% 4550 B 0 B / +0.0% 1.330 s -215.9 ms / -14.0% (better) 2.506 ms +37.5 us / +1.5% (worse)
Windows MinGW cprintf-lto 43520 B 0 B / +0.0% 4486 B 0 B / +0.0% 1.315 s -51.88 ms / -3.8% (better) 2.228 ms +61.4 us / +2.8% (worse)
Windows MinGW fmtprintf 5432832 B 0 B / +0.0% 600310 B 0 B / +0.0% 6.067 s +366.8 ms / +6.4% (worse) 5.573 ms +555.5 us / +11.1% (worse)
Windows MinGW fmtprintf-lto 4127232 B 0 B / +0.0% 546582 B 0 B / +0.0% 12.209 s +1.305 s / +12.0% (worse) 5.499 ms +503.9 us / +10.1% (worse)
Windows MinGW println 706560 B 0 B / +0.0% 25190 B 0 B / +0.0% 1.467 s +279.2 ms / +23.5% (worse) 4.390 ms -198.4 us / -4.3% (better)
Windows MinGW println-lto 208896 B 0 B / +0.0% 22054 B 0 B / +0.0% 1.577 s -101.9 ms / -6.1% (better) 4.749 ms +808.8 us / +20.5% (worse)
Windows MinGW 386 cprintf 601600 B 0 B / +0.0% 5326 B 0 B / +0.0% 1.676 s +29.41 ms / +1.8% (worse) 5.159 ms +172.5 us / +3.5% (worse)
Windows MinGW 386 cprintf-lto 103424 B 0 B / +0.0% 5094 B 0 B / +0.0% 1.690 s -52.34 ms / -3.0% (better) 5.018 ms -102.3 us / -2.0% (better)
Windows MinGW 386 fmtprintf 4745216 B 0 B / +0.0% 472478 B 0 B / +0.0% 7.323 s -77.52 ms / -1.0% (better) 11.250 ms +1.024 ms / +10.0% (worse)
Windows MinGW 386 fmtprintf-lto 4148736 B 0 B / +0.0% 451114 B 0 B / +0.0% 14.433 s -54.98 ms / -0.4% (better) 10.533 ms +123.2 us / +1.2% (worse)
Windows MinGW 386 println 653312 B 0 B / +0.0% 21490 B 0 B / +0.0% 1.657 s -7.574 ms / -0.5% (better) 8.773 ms +280.1 us / +3.3% (worse)
Windows MinGW 386 println-lto 258560 B 0 B / +0.0% 19306 B 0 B / +0.0% 2.002 s +66.75 ms / +3.4% (worse) 8.722 ms +357.5 us / +4.3% (worse)
Windows MinGW ARM64 cprintf 661504 B 0 B / +0.0% 4408 B 0 B / +0.0% 1.851 s -28.22 ms / -1.5% (better) 6.333 ms +92.3 us / +1.5% (worse)
Windows MinGW ARM64 cprintf-lto 43520 B 0 B / +0.0% 4340 B 0 B / +0.0% 1.834 s -61.51 ms / -3.2% (better) 6.184 ms +25.2 us / +0.4% (worse)
Windows MinGW ARM64 fmtprintf 5343744 B 0 B / +0.0% 510876 B 0 B / +0.0% 6.881 s -58.71 ms / -0.8% (better) 11.706 ms -229.9 us / -1.9% (better)
Windows MinGW ARM64 fmtprintf-lto 4302336 B 0 B / +0.0% 477264 B 0 B / +0.0% 13.371 s -41.27 ms / -0.3% (better) 11.890 ms -823 us / -6.5% (better)
Windows MinGW ARM64 println 714240 B 0 B / +0.0% 23884 B 0 B / +0.0% 1.806 s -52.22 ms / -2.8% (better) 10.198 ms -1.204 ms / -10.6% (better)
Windows MinGW ARM64 println-lto 215552 B 0 B / +0.0% 21232 B 0 B / +0.0% 2.054 s -83.67 ms / -3.9% (better) 10.329 ms -60.9 us / -0.6% (better)
Windows MSVC cprintf 893952 B 0 B / +0.0% 65798 B 0 B / +0.0% 1.072 s -271.4 ms / -20.2% (better) 2.060 ms -221.6 us / -9.7% (better)
Windows MSVC cprintf-lto 289792 B 0 B / +0.0% 65734 B 0 B / +0.0% 1.270 s -84.65 ms / -6.2% (better) 2.134 ms -240.5 us / -10.1% (better)
Windows MSVC fmtprintf 5732864 B 0 B / +0.0% 695862 B 0 B / +0.0% 6.266 s +63.12 ms / +1.0% (worse) 5.915 ms -11 us / -0.2% (better)
Windows MSVC fmtprintf-lto 4449792 B 0 B / +0.0% 646134 B 0 B / +0.0% 10.398 s -1.232 s / -10.6% (better) 6.048 ms -234 us / -3.7% (better)
Windows MSVC println 1017344 B 0 B / +0.0% 120854 B 0 B / +0.0% 1.212 s -72.48 ms / -5.6% (better) 4.965 ms +187.5 us / +3.9% (worse)
Windows MSVC println-lto 528384 B 0 B / +0.0% 118390 B 0 B / +0.0% 1.398 s -262.7 ms / -15.8% (better) 5.626 ms +822.9 us / +17.1% (worse)
Windows MSVC 386 cprintf 513536 B 0 B / +0.0% 3931 B 0 B / +0.0% 1.527 s -236.7 ms / -13.4% (better) 5.647 ms -595.8 us / -9.5% (better)
Windows MSVC 386 cprintf-lto 44032 B 0 B / +0.0% 3853 B 0 B / +0.0% 1.551 s -21.82 ms / -1.4% (better) 7.264 ms +417.8 us / +6.1% (worse)
Windows MSVC 386 fmtprintf 4479488 B 0 B / +0.0% 455868 B 0 B / +0.0% 7.158 s +18.96 ms / +0.3% (worse) 12.330 ms +869.2 us / +7.6% (worse)
Windows MSVC 386 fmtprintf-lto 3899392 B 0 B / +0.0% 426651 B 0 B / +0.0% 13.466 s +27.35 ms / +0.2% (worse) 11.745 ms -534.4 us / -4.4% (better)
Windows MSVC 386 println 567296 B 0 B / +0.0% 20340 B 0 B / +0.0% 1.513 s -48.89 ms / -3.1% (better) 9.393 ms +87.8 us / +0.9% (worse)
Windows MSVC 386 println-lto 199168 B 0 B / +0.0% 18501 B 0 B / +0.0% 1.774 s +9.199 ms / +0.5% (worse) 10.211 ms +1.049 ms / +11.4% (worse)
Windows MSVC ARM64 cprintf 662528 B 0 B / +0.0% 4192 B 0 B / +0.0% 1.614 s -20.6 ms / -1.3% (better) 7.012 ms -344 us / -4.7% (better)
Windows MSVC ARM64 cprintf-lto 47616 B 0 B / +0.0% 4084 B 0 B / +0.0% 1.653 s +3.975 ms / +0.2% (worse) 7.337 ms +367.6 us / +5.3% (worse)
Windows MSVC ARM64 fmtprintf 5339648 B 0 B / +0.0% 510808 B 0 B / +0.0% 6.762 s -29.04 ms / -0.4% (better) 14.440 ms +109.7 us / +0.8% (worse)
Windows MSVC ARM64 fmtprintf-lto 4309504 B 0 B / +0.0% 477924 B 0 B / +0.0% 13.006 s -112 ms / -0.9% (better) 14.522 ms -282.4 us / -1.9% (better)
Windows MSVC ARM64 println 715264 B 0 B / +0.0% 23908 B 0 B / +0.0% 1.627 s -14.22 ms / -0.9% (better) 12.983 ms -609.4 us / -4.5% (better)
Windows MSVC ARM64 println-lto 220672 B 0 B / +0.0% 21380 B 0 B / +0.0% 1.858 s -9.453 ms / -0.5% (better) 11.808 ms -647.5 us / -5.2% (better)
Core language and compiler benchmarks
Platform Benchmark ns/op vs base
Linux BenchmarkLookupPCRandom 14.650 ns/op +0.24 ns/op / +1.7% (worse)
Linux BenchmarkMergeCompilerFlags 202.600 ns/op +4.6 ns/op / +2.3% (worse)
Linux BenchmarkMergeLinkerFlags 128.400 ns/op -3.1 ns/op / -2.4% (better)
Linux BenchmarkChannelBuffered 55.270 ns/op +0.26 ns/op / +0.5% (worse)
Linux BenchmarkChannelHandoff 13664 ns/op +14 ns/op / +0.1% (worse)
Linux BenchmarkDefer 47.100 ns/op -1.68 ns/op / -3.4% (better)
Linux BenchmarkDirectCall 1.166 ns/op -0.009 ns/op / -0.8% (better)
Linux BenchmarkGlobalRead 1.164 ns/op -0.001 ns/op / -0.1% (better)
Linux BenchmarkGlobalWrite 7.768 ns/op -0.066 ns/op / -0.8% (better)
Linux BenchmarkGoroutine 24908 ns/op +590 ns/op / +2.4% (worse)
Linux BenchmarkInterfaceCall 5.829 ns/op -0.012 ns/op / -0.2% (better)
Linux BenchmarkRuntimeGetG 3.018 ns/op +0.037 ns/op / +1.2% (worse)
macOS BenchmarkLookupPCRandom 10.080 ns/op -0.05 ns/op / -0.5% (better)
macOS BenchmarkMergeCompilerFlags 79.830 ns/op +0.74 ns/op / +0.9% (worse)
macOS BenchmarkMergeLinkerFlags 61.220 ns/op +7.1 ns/op / +13.1% (worse)
macOS BenchmarkChannelBuffered 20.410 ns/op -0.74 ns/op / -3.5% (better)
macOS BenchmarkChannelHandoff 6648 ns/op +92 ns/op / +1.4% (worse)
macOS BenchmarkDefer 29.770 ns/op -0.41 ns/op / -1.4% (better)
macOS BenchmarkDirectCall 0.863 ns/op -0.0014 ns/op / -0.2% (better)
macOS BenchmarkGlobalRead 0.865 ns/op -0.0669 ns/op / -7.2% (better)
macOS BenchmarkGlobalWrite 0.906 ns/op +0.035 ns/op / +4.0% (worse)
macOS BenchmarkGoroutine 36170 ns/op -8313 ns/op / -18.7% (better)
macOS BenchmarkInterfaceCall 3.453 ns/op -0.085 ns/op / -2.4% (better)
macOS BenchmarkRuntimeGetG 1.727 ns/op -0.012 ns/op / -0.7% (better)
Windows MinGW BenchmarkLookupPCRandom 7.373 ns/op +0.454 ns/op / +6.6% (worse)
Windows MinGW BenchmarkMergeCompilerFlags 584.300 ns/op -274.9 ns/op / -32.0% (better)
Windows MinGW BenchmarkMergeLinkerFlags 654 ns/op +43.4 ns/op / +7.1% (worse)
Windows MinGW BenchmarkChannelBuffered 27.940 ns/op -0.13 ns/op / -0.5% (better)
Windows MinGW BenchmarkChannelHandoff 765.900 ns/op +7 ns/op / +0.9% (worse)
Windows MinGW BenchmarkDefer 35.020 ns/op +0.09 ns/op / +0.3% (worse)
Windows MinGW BenchmarkDirectCall 0.886 ns/op -0.0033 ns/op / -0.4% (better)
Windows MinGW BenchmarkGlobalRead 0.890 ns/op +0.0032 ns/op / +0.4% (worse)
Windows MinGW BenchmarkGlobalWrite 4.423 ns/op -0.008 ns/op / -0.2% (better)
Windows MinGW BenchmarkGoroutine 40730 ns/op -1683 ns/op / -4.0% (better)
Windows MinGW BenchmarkInterfaceCall 4.460 ns/op -0.067 ns/op / -1.5% (better)
Windows MinGW BenchmarkRuntimeGetG 1.019 ns/op -0.016 ns/op / -1.5% (better)
Windows MinGW 386 BenchmarkLookupPCRandom 26.550 ns/op +0.06 ns/op / +0.2% (worse)
Windows MinGW 386 BenchmarkMergeCompilerFlags 757.200 ns/op +21.9 ns/op / +3.0% (worse)
Windows MinGW 386 BenchmarkMergeLinkerFlags 675.200 ns/op +8.7 ns/op / +1.3% (worse)
Windows MinGW 386 BenchmarkChannelBuffered 41.350 ns/op -0.11 ns/op / -0.3% (better)
Windows MinGW 386 BenchmarkChannelHandoff 865.200 ns/op -30.8 ns/op / -3.4% (better)
Windows MinGW 386 BenchmarkDefer 42.100 ns/op +0.36 ns/op / +0.9% (worse)
Windows MinGW 386 BenchmarkDirectCall 1.552 ns/op +0.001 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkGlobalRead 1.552 ns/op +0.002 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkGlobalWrite 7.782 ns/op 0 ns/op / +0.0%
Windows MinGW 386 BenchmarkGoroutine 107157 ns/op +4057 ns/op / +3.9% (worse)
Windows MinGW 386 BenchmarkInterfaceCall 8.377 ns/op -0.004 ns/op / -0.04773% (better)
Windows MinGW 386 BenchmarkRuntimeGetG 1.930 ns/op +0.002 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkLookupPCRandom 12.100 ns/op -0.05 ns/op / -0.4% (better)
Windows MinGW ARM64 BenchmarkMergeCompilerFlags 581.400 ns/op +15.7 ns/op / +2.8% (worse)
Windows MinGW ARM64 BenchmarkMergeLinkerFlags 530.400 ns/op -5.7 ns/op / -1.1% (better)
Windows MinGW ARM64 BenchmarkChannelBuffered 39.480 ns/op +1.84 ns/op / +4.9% (worse)
Windows MinGW ARM64 BenchmarkChannelHandoff 2271 ns/op +112 ns/op / +5.2% (worse)
Windows MinGW ARM64 BenchmarkDefer 52.760 ns/op -2.58 ns/op / -4.7% (better)
Windows MinGW ARM64 BenchmarkDirectCall 0.663 ns/op -0.0001 ns/op / -0.01508% (better)
Windows MinGW ARM64 BenchmarkGlobalRead 0.663 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 BenchmarkGlobalWrite 0.737 ns/op -0.0001 ns/op / -0.01357% (better)
Windows MinGW ARM64 BenchmarkGoroutine 60868 ns/op -3033 ns/op / -4.7% (better)
Windows MinGW ARM64 BenchmarkInterfaceCall 4.139 ns/op +0.001 ns/op / +0.02417% (worse)
Windows MinGW ARM64 BenchmarkRuntimeGetG 1.806 ns/op +0.037 ns/op / +2.1% (worse)
Windows MSVC BenchmarkLookupPCRandom 7.057 ns/op -0.204 ns/op / -2.8% (better)
Windows MSVC BenchmarkMergeCompilerFlags 905.200 ns/op +261.7 ns/op / +40.7% (worse)
Windows MSVC BenchmarkMergeLinkerFlags 1174 ns/op +697.5 ns/op / +146.4% (worse)
Windows MSVC BenchmarkChannelBuffered 28.870 ns/op +0.32 ns/op / +1.1% (worse)
Windows MSVC BenchmarkChannelHandoff 729.100 ns/op +54.7 ns/op / +8.1% (worse)
Windows MSVC BenchmarkDefer 31 ns/op -0.24 ns/op / -0.8% (better)
Windows MSVC BenchmarkDirectCall 0.903 ns/op -0.0008 ns/op / -0.1% (better)
Windows MSVC BenchmarkGlobalRead 0.913 ns/op -0.019 ns/op / -2.0% (better)
Windows MSVC BenchmarkGlobalWrite 4.448 ns/op -0.168 ns/op / -3.6% (better)
Windows MSVC BenchmarkGoroutine 39936 ns/op +841 ns/op / +2.2% (worse)
Windows MSVC BenchmarkInterfaceCall 4.994 ns/op -0.016 ns/op / -0.3% (better)
Windows MSVC BenchmarkRuntimeGetG 1.051 ns/op +0.027 ns/op / +2.6% (worse)
Windows MSVC 386 BenchmarkLookupPCRandom 26.590 ns/op +0.13 ns/op / +0.5% (worse)
Windows MSVC 386 BenchmarkMergeCompilerFlags 760.300 ns/op +0.9 ns/op / +0.1% (worse)
Windows MSVC 386 BenchmarkMergeLinkerFlags 713.800 ns/op +24.4 ns/op / +3.5% (worse)
Windows MSVC 386 BenchmarkChannelBuffered 38.720 ns/op 0 ns/op / +0.0%
Windows MSVC 386 BenchmarkChannelHandoff 887.900 ns/op -70.8 ns/op / -7.4% (better)
Windows MSVC 386 BenchmarkDefer 45.540 ns/op +0.73 ns/op / +1.6% (worse)
Windows MSVC 386 BenchmarkDirectCall 1.550 ns/op +0.001 ns/op / +0.1% (worse)
Windows MSVC 386 BenchmarkGlobalRead 1.552 ns/op +0.003 ns/op / +0.2% (worse)
Windows MSVC 386 BenchmarkGlobalWrite 7.783 ns/op +0.002 ns/op / +0.0257% (worse)
Windows MSVC 386 BenchmarkGoroutine 110782 ns/op -2842 ns/op / -2.5% (better)
Windows MSVC 386 BenchmarkInterfaceCall 8.360 ns/op -0.008 ns/op / -0.1% (better)
Windows MSVC 386 BenchmarkRuntimeGetG 2.173 ns/op +0.005 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkLookupPCRandom 12.070 ns/op -0.01 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkMergeCompilerFlags 565.300 ns/op +6.4 ns/op / +1.1% (worse)
Windows MSVC ARM64 BenchmarkMergeLinkerFlags 517.300 ns/op -6.9 ns/op / -1.3% (better)
Windows MSVC ARM64 BenchmarkChannelBuffered 38.570 ns/op -0.88 ns/op / -2.2% (better)
Windows MSVC ARM64 BenchmarkChannelHandoff 1879 ns/op -257 ns/op / -12.0% (better)
Windows MSVC ARM64 BenchmarkDefer 62.190 ns/op -0.39 ns/op / -0.6% (better)
Windows MSVC ARM64 BenchmarkDirectCall 0.663 ns/op -0.0001 ns/op / -0.01508% (better)
Windows MSVC ARM64 BenchmarkGlobalRead 0.664 ns/op +0.0004 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkGlobalWrite 3.797 ns/op +0.001 ns/op / +0.02634% (worse)
Windows MSVC ARM64 BenchmarkGoroutine 58533 ns/op +94 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkInterfaceCall 4.145 ns/op +0.003 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkRuntimeGetG 1.806 ns/op -0.005 ns/op / -0.3% (better)
Timer runtime benchmarks
Platform Operation and runtime ns/op vs base
Linux AfterFuncZeroDelivery/Go 902.300 ns/op -0.2 ns/op / -0.02216% (better)
Linux AfterFuncZeroDelivery/LLGo 36418 ns/op -1480 ns/op / -3.9% (better)
Linux CreateStop/Go 289 ns/op -1 ns/op / -0.3% (better)
Linux CreateStop/LLGo 1908 ns/op +24 ns/op / +1.3% (worse)
Linux RearmStopped/Go 115.800 ns/op -0.2 ns/op / -0.2% (better)
Linux RearmStopped/LLGo 1140 ns/op -242 ns/op / -17.5% (better)
Linux ResetActive/Go 68.630 ns/op -0.08 ns/op / -0.1% (better)
Linux ResetActive/LLGo 882.300 ns/op -75.1 ns/op / -7.8% (better)
Linux ResetHeap1024/Go 67.040 ns/op -0.18 ns/op / -0.3% (better)
Linux ResetHeap1024/LLGo 175.900 ns/op -2.2 ns/op / -1.2% (better)
macOS AfterFuncZeroDelivery/Go 330 ns/op +4.2 ns/op / +1.3% (worse)
macOS AfterFuncZeroDelivery/LLGo 70162 ns/op -120 ns/op / -0.2% (better)
macOS CreateStop/Go 106.500 ns/op -7.2 ns/op / -6.3% (better)
macOS CreateStop/LLGo 434.500 ns/op +1.1 ns/op / +0.3% (worse)
macOS RearmStopped/Go 51.250 ns/op -3.05 ns/op / -5.6% (better)
macOS RearmStopped/LLGo 340.900 ns/op -2.3 ns/op / -0.7% (better)
macOS ResetActive/Go 35.570 ns/op -0.04 ns/op / -0.1% (better)
macOS ResetActive/LLGo 163.900 ns/op -0.1 ns/op / -0.1% (better)
macOS ResetHeap1024/Go 35.840 ns/op +0.21 ns/op / +0.6% (worse)
macOS ResetHeap1024/LLGo 70.350 ns/op +1.92 ns/op / +2.8% (worse)
Windows MinGW AfterFuncZeroDelivery/Go 411.500 ns/op +8.3 ns/op / +2.1% (worse)
Windows MinGW AfterFuncZeroDelivery/LLGo 89515 ns/op +4840 ns/op / +5.7% (worse)
Windows MinGW CreateStop/Go 123.200 ns/op +6.8 ns/op / +5.8% (worse)
Windows MinGW CreateStop/LLGo 301.100 ns/op -10.3 ns/op / -3.3% (better)
Windows MinGW RearmStopped/Go 47.870 ns/op +2.5 ns/op / +5.5% (worse)
Windows MinGW RearmStopped/LLGo 194.200 ns/op +13.8 ns/op / +7.6% (worse)
Windows MinGW ResetActive/Go 21.140 ns/op +0.96 ns/op / +4.8% (worse)
Windows MinGW ResetActive/LLGo 451.900 ns/op -37.4 ns/op / -7.6% (better)
Windows MinGW ResetHeap1024/Go 20.530 ns/op +0.58 ns/op / +2.9% (worse)
Windows MinGW ResetHeap1024/LLGo 92.460 ns/op +4.1 ns/op / +4.6% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/Go 969.500 ns/op +21.7 ns/op / +2.3% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/LLGo 199008 ns/op +2367 ns/op / +1.2% (worse)
Windows MinGW 386 CreateStop/Go 189.700 ns/op -5.1 ns/op / -2.6% (better)
Windows MinGW 386 CreateStop/LLGo 510.600 ns/op -16.2 ns/op / -3.1% (better)
Windows MinGW 386 RearmStopped/Go 63.440 ns/op -0.09 ns/op / -0.1% (better)
Windows MinGW 386 RearmStopped/LLGo 361.800 ns/op +7.8 ns/op / +2.2% (worse)
Windows MinGW 386 ResetActive/Go 39.090 ns/op -0.06 ns/op / -0.2% (better)
Windows MinGW 386 ResetActive/LLGo 968.500 ns/op +8.3 ns/op / +0.9% (worse)
Windows MinGW 386 ResetHeap1024/Go 39.370 ns/op -0.06 ns/op / -0.2% (better)
Windows MinGW 386 ResetHeap1024/LLGo 188.900 ns/op +0.7 ns/op / +0.4% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/Go 673.300 ns/op +12.9 ns/op / +2.0% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/LLGo 141794 ns/op +222 ns/op / +0.2% (worse)
Windows MinGW ARM64 CreateStop/Go 197.600 ns/op -1.1 ns/op / -0.6% (better)
Windows MinGW ARM64 CreateStop/LLGo 365.900 ns/op +4.8 ns/op / +1.3% (worse)
Windows MinGW ARM64 RearmStopped/Go 70.550 ns/op -0.08 ns/op / -0.1% (better)
Windows MinGW ARM64 RearmStopped/LLGo 247 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 ResetActive/Go 30.980 ns/op -0.08 ns/op / -0.3% (better)
Windows MinGW ARM64 ResetActive/LLGo 120.900 ns/op -0.8 ns/op / -0.7% (better)
Windows MinGW ARM64 ResetHeap1024/Go 31.070 ns/op -0.02 ns/op / -0.1% (better)
Windows MinGW ARM64 ResetHeap1024/LLGo 124.300 ns/op -0.7 ns/op / -0.6% (better)
Windows MSVC AfterFuncZeroDelivery/Go 416 ns/op -7.8 ns/op / -1.8% (better)
Windows MSVC AfterFuncZeroDelivery/LLGo 84600 ns/op -3513 ns/op / -4.0% (better)
Windows MSVC CreateStop/Go 120 ns/op -4.4 ns/op / -3.5% (better)
Windows MSVC CreateStop/LLGo 328.200 ns/op +3.2 ns/op / +1.0% (worse)
Windows MSVC RearmStopped/Go 46.360 ns/op -1.12 ns/op / -2.4% (better)
Windows MSVC RearmStopped/LLGo 184 ns/op -24.3 ns/op / -11.7% (better)
Windows MSVC ResetActive/Go 20.430 ns/op -1.2 ns/op / -5.5% (better)
Windows MSVC ResetActive/LLGo 388 ns/op -84.4 ns/op / -17.9% (better)
Windows MSVC ResetHeap1024/Go 20.250 ns/op -0.55 ns/op / -2.6% (better)
Windows MSVC ResetHeap1024/LLGo 88.580 ns/op -3.77 ns/op / -4.1% (better)
Windows MSVC 386 AfterFuncZeroDelivery/Go 952.500 ns/op +4.2 ns/op / +0.4% (worse)
Windows MSVC 386 AfterFuncZeroDelivery/LLGo 211100 ns/op +2067 ns/op / +1.0% (worse)
Windows MSVC 386 CreateStop/Go 192.100 ns/op +0.4 ns/op / +0.2% (worse)
Windows MSVC 386 CreateStop/LLGo 455.200 ns/op -10.9 ns/op / -2.3% (better)
Windows MSVC 386 RearmStopped/Go 63.440 ns/op +0.23 ns/op / +0.4% (worse)
Windows MSVC 386 RearmStopped/LLGo 324.200 ns/op +1.1 ns/op / +0.3% (worse)
Windows MSVC 386 ResetActive/Go 38.940 ns/op -0.11 ns/op / -0.3% (better)
Windows MSVC 386 ResetActive/LLGo 975.300 ns/op +694.7 ns/op / +247.6% (worse)
Windows MSVC 386 ResetHeap1024/Go 39.340 ns/op +0.02 ns/op / +0.1% (worse)
Windows MSVC 386 ResetHeap1024/LLGo 170.300 ns/op +1 ns/op / +0.6% (worse)
Windows MSVC ARM64 AfterFuncZeroDelivery/Go 670.700 ns/op -4.9 ns/op / -0.7% (better)
Windows MSVC ARM64 AfterFuncZeroDelivery/LLGo 174434 ns/op +2782 ns/op / +1.6% (worse)
Windows MSVC ARM64 CreateStop/Go 202 ns/op -6.7 ns/op / -3.2% (better)
Windows MSVC ARM64 CreateStop/LLGo 430.900 ns/op +0.1 ns/op / +0.02321% (worse)
Windows MSVC ARM64 RearmStopped/Go 70.680 ns/op +0.06 ns/op / +0.1% (worse)
Windows MSVC ARM64 RearmStopped/LLGo 277.100 ns/op -6 ns/op / -2.1% (better)
Windows MSVC ARM64 ResetActive/Go 31.190 ns/op +0.07 ns/op / +0.2% (worse)
Windows MSVC ARM64 ResetActive/LLGo 148.500 ns/op +4.8 ns/op / +3.3% (worse)
Windows MSVC ARM64 ResetHeap1024/Go 31.030 ns/op -0.21 ns/op / -0.7% (better)
Windows MSVC ARM64 ResetHeap1024/LLGo 135.300 ns/op -1.3 ns/op / -1.0% (better)

Compared with ec9c2488bc37 measured in the same runner job.

@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

LLGo WebAssembly build benchmarks

cbfbe1e912a6 | workflow run | long-term charts

WebAssembly output sizes
Example, profile and compiler Wasm module vs base Generated JS glue vs base
cprintf/j32-emscripten/LLGo 149240 B 0 B / +0.0% 88157 B 0 B / +0.0%
cprintf/j32-goos-js/LLGo 148511 B 0 B / +0.0% 72985 B 0 B / +0.0%
cprintf/j64-emscripten-memory64/LLGo 136707 B 0 B / +0.0% 91328 B 0 B / +0.0%
cprintf/w32-goos-wasip1/LLGo 153508 B 0 B / +0.0% 0 B 0 B / 0.0%
cprintf/w32-wasi/LLGo 154198 B 0 B / +0.0% 0 B 0 B / 0.0%
fmtprintf/j32-emscripten/LLGo 3049126 B 0 B / +0.0% 130373 B 0 B / +0.0%
fmtprintf/j32-goos-js/Go 2526852 B 0 B / +0.0% 0 B 0 B / 0.0%
fmtprintf/j32-goos-js/LLGo 3145152 B 0 B / +0.0% 100773 B 0 B / +0.0%
fmtprintf/j64-emscripten-memory64/LLGo 2811842 B 0 B / +0.0% 135853 B 0 B / +0.0%
fmtprintf/w32-goos-wasip1/Go 2500019 B 0 B / +0.0% 0 B 0 B / 0.0%
fmtprintf/w32-goos-wasip1/LLGo 2349336 B 0 B / +0.0% 0 B 0 B / 0.0%
fmtprintf/w32-wasi/LLGo 2345976 B 0 B / +0.0% 0 B 0 B / 0.0%
j32-emscripten/LLGo 148582 B 0 B / +0.0% 88157 B 0 B / +0.0%
j32-goos-js/Go 1895533 B 0 B / +0.0% 0 B 0 B / 0.0%
j32-goos-js/LLGo 148002 B 0 B / +0.0% 72985 B 0 B / +0.0%
j64-emscripten-memory64/LLGo 136047 B 0 B / +0.0% 91328 B 0 B / +0.0%
reflectcall/j32-emscripten/LLGo 1473259 B 0 B / +0.0% 104917 B 0 B / +0.0%
reflectcall/j32-goos-js/Go 2191221 B 0 B / +0.0% 0 B 0 B / 0.0%
reflectcall/j32-goos-js/LLGo 1523186 B 0 B / +0.0% 89743 B 0 B / +0.0%
reflectcall/j64-emscripten-memory64/LLGo 1366025 B 0 B / +0.0% 109492 B 0 B / +0.0%
reflectcall/w32-goos-wasip1/Go 2205707 B 0 B / +0.0% 0 B 0 B / 0.0%
reflectcall/w32-goos-wasip1/LLGo 1277776 B 0 B / +0.0% 0 B 0 B / 0.0%
reflectcall/w32-wasi/LLGo 1275362 B 0 B / +0.0% 0 B 0 B / 0.0%
w32-goos-wasip1/Go 1909947 B 0 B / +0.0% 0 B 0 B / 0.0%
w32-goos-wasip1/LLGo 153155 B 0 B / +0.0% 0 B 0 B / 0.0%
w32-wasi/LLGo 153845 B 0 B / +0.0% 0 B 0 B / 0.0%
LLGo WebAssembly build measurements
Example and profile Build vs base
j32-emscripten 6.856 s -86.7 ms / -1.2% (better)
j32-goos-js 6.651 s -189.6 ms / -2.8% (better)
j64-emscripten-memory64 6.097 s -12.34 ms / -0.2% (better)
reflectcall/w32-wasi 23.345 s -279.7 ms / -1.2% (better)
w32-goos-wasip1 4.299 s -21.16 ms / -0.5% (better)
w32-wasi 4.098 s -1.374 ms / -0.03351% (better)

Compared with ec9c2488bc37 measured in the same runner job.

@cpunion
cpunion force-pushed the codex/fix-wasm-std-issue28-20261003 branch from b6422e9 to cbfbe1e Compare October 4, 2026 22:56
@cpunion cpunion changed the title fix(wasm): run GoJS acceptance children in browser mode test(wasm): verify acceptance child runner argument order Oct 4, 2026
@cpunion
cpunion merged commit 29037d8 into xgo-dev:main Oct 5, 2026
92 checks passed
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