Skip to content

release: add complete Linux packages and container images - #2814

Merged
cpunion merged 9 commits into
xgo-dev:mainfrom
cpunion:codex/linux-container-release-20261014
Oct 15, 2026
Merged

cpunion merged 9 commits into
xgo-dev:mainfrom
cpunion:codex/linux-container-release-20261014

Conversation

@cpunion

@cpunion cpunion commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Enable complete Linux amd64/arm64 DEB/RPM packages and GHCR images.

  • Include the runtime, targets, and LLVM 22, with Go/native dependencies.
  • Build both image platforms from the DEBs with Go 1.27. Stable images get version, major.minor, major, and latest tags; prereleases get only their exact version.
  • Test package installation and compilation on both architectures before publishing. Stable releases also upload all four packages publicly to Gemfury; snapshots and prereleases skip Fury.

Configuration: set FURY_TOKEN to a Push token. Optional FURY_ACCOUNT defaults to the repository owner. GHCR uses GITHUB_TOKEN; enable public package visibility if needed for anonymous pulls.

Validated with v0.999.1 on cpunion/llgo: all 20 release jobs passed. Release checksums, anonymous image pulls on both platforms, and anonymous downloads of all four Gemfury packages were verified.

@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: Linux DEB/RPM packages and container image

This is a well-structured, correctness-first release/packaging change. The GoReleaser nfpms / dockers_v2 wiring is schema-correct, the multi-stage Dockerfile correctly uses dpkg-deb --extract so Go comes from the base image, version pins are consistent (1.27.0 across .go-version/goreleaser-cross/Dockerfile base), and the README additions were cross-checked claim-by-claim against the config and verified accurate (install paths, filenames, Go >= 1.20, LLVM 22, container tag/prerelease behavior, platforms). The smoke test (test-installed.sh) is thorough — it exercises cgo via C.abs, the goroutine/channel runtime, the symlink target, and the LLVM major version on fresh distro images.

No release-breaking defects or exploitable security issues were found. The inline comments below are minor hardening / maintainability suggestions, all reasonable to accept as-is with a short justifying comment.

A few additional non-inline observations:

  • arm64 image build runs under QEMU emulation (.goreleaser.yaml dockers_v2.platforms: [linux/amd64, linux/arm64] built on the single amd64 release runner). The test-linux-distributions job correctly uses native per-arch runners, but the published image build has no native-arm path. Acceptable; if arm64 publish time becomes a bottleneck, split across native runners and merge a manifest.
  • Supply-chain pinning (defense-in-depth): GORELEASER_CROSS_IMAGE (release-build.yml:22) and the golang:1.27.0-bookworm base image are pinned by mutable tag rather than @sha256: digest. The goreleaser-cross image is the most-privileged pipeline input (it receives GITHUB_TOKEN, the GHCR push credential, and the host Docker socket), so digest-pinning it would meaningfully strengthen the supply chain. This matches the repo's existing action-tag convention, so it's informational.
  • CI/token handling is correct: contents: write + packages: write is scoped only to the tag-gated release job (not global), GITHUB_TOKEN is passed via quoted env, and the bash scripts (set -euo pipefail, single-quoted docker run bash -c body, validated/quoted positional args) have no injection paths.

Comment thread Dockerfile
Comment thread Dockerfile
Comment thread .github/workflows/release-build.yml
Comment thread .github/workflows/release-build.yml Outdated
Comment thread .github/linux/test-packages.sh Outdated
@codecov

codecov Bot commented Oct 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@cpunion
cpunion force-pushed the codex/linux-container-release-20261014 branch 2 times, most recently from 2a74b76 to bb090ea Compare October 14, 2026 11:18
@cpunion
cpunion force-pushed the codex/linux-container-release-20261014 branch from bb090ea to 374511b Compare October 14, 2026 12:49
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

LLGo WebAssembly build benchmarks

e6396d7439c9 | 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 147057 B 0 B / +0.0% 88541 B 0 B / +0.0%
cprintf/j32-goos-js/LLGo 145666 B 0 B / +0.0% 72985 B 0 B / +0.0%
cprintf/j64-emscripten-memory64/LLGo 134526 B 0 B / +0.0% 91712 B 0 B / +0.0%
cprintf/w32-goos-wasip1/LLGo 156385 B 0 B / +0.0% 0 B 0 B / 0.0%
cprintf/w32-wasi/LLGo 157083 B 0 B / +0.0% 0 B 0 B / 0.0%
fmtprintf/j32-emscripten/LLGo 3003665 B 0 B / +0.0% 131047 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 3094062 B 0 B / +0.0% 102110 B 0 B / +0.0%
fmtprintf/j64-emscripten-memory64/LLGo 2766011 B 0 B / +0.0% 136527 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 2343602 B 0 B / +0.0% 0 B 0 B / 0.0%
fmtprintf/w32-wasi/LLGo 2340298 B 0 B / +0.0% 0 B 0 B / 0.0%
j32-emscripten/LLGo 146574 B 0 B / +0.0% 88541 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 145414 B 0 B / +0.0% 72985 B 0 B / +0.0%
j64-emscripten-memory64/LLGo 134083 B 0 B / +0.0% 91712 B 0 B / +0.0%
reflectcall/j32-emscripten/LLGo 1446585 B 0 B / +0.0% 105303 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 1495430 B 0 B / +0.0% 89743 B 0 B / +0.0%
reflectcall/j64-emscripten-memory64/LLGo 1338918 B 0 B / +0.0% 109882 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 1273789 B 0 B / +0.0% 0 B 0 B / 0.0%
reflectcall/w32-wasi/LLGo 1271430 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 156059 B 0 B / +0.0% 0 B 0 B / 0.0%
w32-wasi/LLGo 156757 B 0 B / +0.0% 0 B 0 B / 0.0%
LLGo WebAssembly build measurements
Example and profile Build vs base
j32-emscripten 7.591 s +136.1 ms / +1.8% (worse)
j32-goos-js 7.423 s +228.7 ms / +3.2% (worse)
j64-emscripten-memory64 6.906 s +743.5 ms / +12.1% (worse)
reflectcall/w32-wasi 23.336 s -171.6 ms / -0.7% (better)
w32-goos-wasip1 4.629 s -120.9 ms / -2.5% (better)
w32-wasi 4.465 s +368.4 ms / +9.0% (worse)

Compared with 762d7bd73a34 measured in the same runner job.

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

LLGo baseline benchmarks

e6396d7439c9 | 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% 772.269 ms +13.05 ms / +1.7% (worse) 1.283 ms -16.42 us / -1.3% (better)
Linux cprintf-lto 8408 B 0 B / +0.0% 368 B 0 B / +0.0% 761.361 ms -34.35 ms / -4.3% (better) 1.268 ms -67.83 us / -5.1% (better)
Linux fmtprintf 4915576 B 0 B / +0.0% 506206 B 0 B / +0.0% 5.088 s -37.67 ms / -0.7% (better) 4.041 ms -363.9 us / -8.3% (better)
Linux fmtprintf-lto 3621616 B 0 B / +0.0% 444290 B 0 B / +0.0% 14.490 s +406.4 ms / +2.9% (worse) 4.083 ms +296.1 us / +7.8% (worse)
Linux println 705080 B 0 B / +0.0% 17095 B 0 B / +0.0% 778.508 ms -73.36 ms / -8.6% (better) 1.631 ms -154.3 us / -8.6% (better)
Linux println-lto 192928 B 0 B / +0.0% 14484 B 0 B / +0.0% 1.107 s -33.45 ms / -2.9% (better) 1.634 ms -17.34 us / -1.1% (better)
macOS cprintf 50736 B 0 B / +0.0% 4409 B 0 B / +0.0% 820.174 ms -46.22 ms / -5.3% (better) 2.663 ms +52.17 us / +2.0% (worse)
macOS cprintf-lto 50496 B 0 B / +0.0% 161 B 0 B / +0.0% 739.749 ms -145.9 ms / -16.5% (better) 2.875 ms +345 us / +13.6% (worse)
macOS fmtprintf 1793088 B 0 B / +0.0% 883744 B 0 B / +0.0% 3.291 s -524.1 ms / -13.7% (better) 31.231 ms -9.928 ms / -24.1% (better)
macOS fmtprintf-lto 1362176 B 0 B / +0.0% 767588 B 0 B / +0.0% 8.541 s -389.6 ms / -4.4% (better) 59.449 ms -933.4 us / -1.5% (better)
macOS println 100080 B 0 B / +0.0% 24519 B 0 B / +0.0% 738.397 ms -176.1 ms / -19.3% (better) 3.572 ms -147.5 us / -4.0% (better)
macOS println-lto 84016 B 0 B / +0.0% 21760 B 0 B / +0.0% 872.986 ms -180.2 ms / -17.1% (better) 3.518 ms -808.6 us / -18.7% (better)
Windows MinGW cprintf 676352 B 0 B / +0.0% 4550 B 0 B / +0.0% 1.804 s +113.8 ms / +6.7% (worse) 4.540 ms +849.3 us / +23.0% (worse)
Windows MinGW cprintf-lto 44544 B 0 B / +0.0% 4502 B 0 B / +0.0% 1.836 s +93.48 ms / +5.4% (worse) 4.083 ms +568.6 us / +16.2% (worse)
Windows MinGW fmtprintf 5473792 B 0 B / +0.0% 606134 B 0 B / +0.0% 5.684 s +48.19 ms / +0.9% (worse) 12.307 ms +917.5 us / +8.1% (worse)
Windows MinGW fmtprintf-lto 4161024 B 0 B / +0.0% 553254 B 0 B / +0.0% 13.432 s -232.4 ms / -1.7% (better) 12.696 ms +1.013 ms / +8.7% (worse)
Windows MinGW println 733696 B 0 B / +0.0% 25446 B 0 B / +0.0% 1.806 s +122.9 ms / +7.3% (worse) 7.673 ms +1.009 ms / +15.1% (worse)
Windows MinGW println-lto 210944 B 0 B / +0.0% 22326 B 0 B / +0.0% 2.020 s +30.93 ms / +1.6% (worse) 7.432 ms +523.9 us / +7.6% (worse)
Windows MinGW 386 cprintf 627200 B 0 B / +0.0% 5352 B 0 B / +0.0% 1.609 s -27.28 ms / -1.7% (better) 5.115 ms -5.4 us / -0.1% (better)
Windows MinGW 386 cprintf-lto 104448 B 0 B / +0.0% 5112 B 0 B / +0.0% 1.629 s -35.23 ms / -2.1% (better) 5.134 ms -145.6 us / -2.8% (better)
Windows MinGW 386 fmtprintf 4776960 B 0 B / +0.0% 473902 B 0 B / +0.0% 5.486 s -24.72 ms / -0.4% (better) 12.402 ms -1.052 ms / -7.8% (better)
Windows MinGW 386 fmtprintf-lto 4163072 B 0 B / +0.0% 452294 B 0 B / +0.0% 12.812 s +194.1 ms / +1.5% (worse) 13.335 ms -3.056 ms / -18.6% (better)
Windows MinGW 386 println 681472 B 0 B / +0.0% 21694 B 0 B / +0.0% 1.604 s -42.51 ms / -2.6% (better) 8.484 ms -287.4 us / -3.3% (better)
Windows MinGW 386 println-lto 260608 B 0 B / +0.0% 19514 B 0 B / +0.0% 1.900 s -22.77 ms / -1.2% (better) 8.651 ms +33 us / +0.4% (worse)
Windows MinGW ARM64 cprintf 686080 B 0 B / +0.0% 4436 B 0 B / +0.0% 1.957 s +36.92 ms / +1.9% (worse) 6.793 ms +270.4 us / +4.1% (worse)
Windows MinGW ARM64 cprintf-lto 44032 B 0 B / +0.0% 4388 B 0 B / +0.0% 1.958 s +8.788 ms / +0.5% (worse) 6.820 ms +321.1 us / +4.9% (worse)
Windows MinGW ARM64 fmtprintf 5382656 B 0 B / +0.0% 514292 B 0 B / +0.0% 5.568 s +62.28 ms / +1.1% (worse) 15.596 ms +394.7 us / +2.6% (worse)
Windows MinGW ARM64 fmtprintf-lto 4327424 B 0 B / +0.0% 480352 B 0 B / +0.0% 13.033 s +712.8 ms / +5.8% (worse) 16.447 ms +1.044 ms / +6.8% (worse)
Windows MinGW ARM64 println 739840 B 0 B / +0.0% 24160 B 0 B / +0.0% 1.917 s -7.028 ms / -0.4% (better) 11.289 ms -253.3 us / -2.2% (better)
Windows MinGW ARM64 println-lto 218624 B 0 B / +0.0% 21516 B 0 B / +0.0% 2.213 s +10.67 ms / +0.5% (worse) 11.380 ms -228.3 us / -2.0% (better)
Windows MSVC cprintf 921088 B 0 B / +0.0% 66003 B 0 B / +0.0% 1.475 s +34.94 ms / +2.4% (worse) 3.831 ms +540.7 us / +16.4% (worse)
Windows MSVC cprintf-lto 292352 B 0 B / +0.0% 65971 B 0 B / +0.0% 1.481 s +22.92 ms / +1.6% (worse) 3.405 ms +102.4 us / +3.1% (worse)
Windows MSVC fmtprintf 5774848 B 0 B / +0.0% 701894 B 0 B / +0.0% 4.946 s +57.06 ms / +1.2% (worse) 10.815 ms -398 us / -3.5% (better)
Windows MSVC fmtprintf-lto 4484096 B 0 B / +0.0% 652806 B 0 B / +0.0% 11.573 s -4.357 ms / -0.03763% (better) 11.305 ms -407.6 us / -3.5% (better)
Windows MSVC println 1044992 B 0 B / +0.0% 121334 B 0 B / +0.0% 1.458 s +31.07 ms / +2.2% (worse) 6.943 ms +700 ns / +0.01008% (worse)
Windows MSVC println-lto 531456 B 0 B / +0.0% 118870 B 0 B / +0.0% 1.718 s +44.94 ms / +2.7% (worse) 7.559 ms +614.8 us / +8.9% (worse)
Windows MSVC 386 cprintf 538624 B 0 B / +0.0% 3947 B 0 B / +0.0% 1.018 s +167.8 ms / +19.7% (worse) 3.909 ms +73.9 us / +1.9% (worse)
Windows MSVC 386 cprintf-lto 44544 B 0 B / +0.0% 3901 B 0 B / +0.0% 970.649 ms +42.6 ms / +4.6% (worse) 3.867 ms -608.7 us / -13.6% (better)
Windows MSVC 386 fmtprintf 4508672 B 0 B / +0.0% 457314 B 0 B / +0.0% 3.501 s +51.43 ms / +1.5% (worse) 9.475 ms +420.7 us / +4.6% (worse)
Windows MSVC 386 fmtprintf-lto 3910656 B 0 B / +0.0% 427681 B 0 B / +0.0% 8.246 s +75.97 ms / +0.9% (worse) 9.729 ms -453.1 us / -4.4% (better)
Windows MSVC 386 println 593920 B 0 B / +0.0% 20566 B 0 B / +0.0% 966.548 ms -640.5 us / -0.1% (better) 6.729 ms -1.01 ms / -13.1% (better)
Windows MSVC 386 println-lto 200192 B 0 B / +0.0% 18711 B 0 B / +0.0% 1.114 s +27.88 ms / +2.6% (worse) 6.234 ms +166.2 us / +2.7% (worse)
Windows MSVC ARM64 cprintf 687616 B 0 B / +0.0% 4240 B 0 B / +0.0% 1.608 s +2.317 ms / +0.1% (worse) 7.004 ms +367.5 us / +5.5% (worse)
Windows MSVC ARM64 cprintf-lto 49152 B 0 B / +0.0% 4140 B 0 B / +0.0% 1.642 s +40.78 ms / +2.5% (worse) 6.760 ms +263 us / +4.0% (worse)
Windows MSVC ARM64 fmtprintf 5379072 B 0 B / +0.0% 514164 B 0 B / +0.0% 5.102 s +194.5 ms / +4.0% (worse) 16.925 ms +547.1 us / +3.3% (worse)
Windows MSVC ARM64 fmtprintf-lto 4334080 B 0 B / +0.0% 480960 B 0 B / +0.0% 11.430 s +65.58 ms / +0.6% (worse) 17.201 ms -420.3 us / -2.4% (better)
Windows MSVC ARM64 println 741376 B 0 B / +0.0% 24200 B 0 B / +0.0% 1.611 s +9.587 ms / +0.6% (worse) 12.124 ms +208.1 us / +1.7% (worse)
Windows MSVC ARM64 println-lto 223232 B 0 B / +0.0% 21688 B 0 B / +0.0% 1.824 s +7.196 ms / +0.4% (worse) 12.255 ms +981.9 us / +8.7% (worse)
Core language and compiler benchmarks
Platform Benchmark ns/op vs base
Linux BenchmarkLookupPCRandom 14.530 ns/op -0.06 ns/op / -0.4% (better)
Linux BenchmarkMergeCompilerFlags 191.600 ns/op -11.7 ns/op / -5.8% (better)
Linux BenchmarkMergeLinkerFlags 126.300 ns/op -21.3 ns/op / -14.4% (better)
Linux BenchmarkChannelBuffered 55.130 ns/op -0.01 ns/op / -0.01814% (better)
Linux BenchmarkChannelHandoff 13396 ns/op -2477 ns/op / -15.6% (better)
Linux BenchmarkDefer 46.890 ns/op -0.73 ns/op / -1.5% (better)
Linux BenchmarkDirectCall 1.166 ns/op +0.001 ns/op / +0.1% (worse)
Linux BenchmarkGlobalRead 1.165 ns/op +0.001 ns/op / +0.1% (worse)
Linux BenchmarkGlobalWrite 7.750 ns/op -0.008 ns/op / -0.1% (better)
Linux BenchmarkGoroutine 32804 ns/op -2798 ns/op / -7.9% (better)
Linux BenchmarkInterfaceCall 5.860 ns/op -0.011 ns/op / -0.2% (better)
Linux BenchmarkRuntimeGetG 2.817 ns/op -0.008 ns/op / -0.3% (better)
macOS BenchmarkLookupPCRandom 15.540 ns/op +3.09 ns/op / +24.8% (worse)
macOS BenchmarkMergeCompilerFlags 147.200 ns/op +35.2 ns/op / +31.4% (worse)
macOS BenchmarkMergeLinkerFlags 102.100 ns/op +9.64 ns/op / +10.4% (worse)
macOS BenchmarkChannelBuffered 31.710 ns/op +5.99 ns/op / +23.3% (worse)
macOS BenchmarkChannelHandoff 7154 ns/op -2519 ns/op / -26.0% (better)
macOS BenchmarkDefer 38.260 ns/op +2.22 ns/op / +6.2% (worse)
macOS BenchmarkDirectCall 1.102 ns/op -0.119 ns/op / -9.7% (better)
macOS BenchmarkGlobalRead 1.066 ns/op -0.019 ns/op / -1.8% (better)
macOS BenchmarkGlobalWrite 1.138 ns/op +0.001 ns/op / +0.1% (worse)
macOS BenchmarkGoroutine 88520 ns/op +51424 ns/op / +138.6% (worse)
macOS BenchmarkInterfaceCall 4.385 ns/op +0.303 ns/op / +7.4% (worse)
macOS BenchmarkRuntimeGetG 2.993 ns/op +0.799 ns/op / +36.4% (worse)
Windows MinGW BenchmarkLookupPCRandom 13.290 ns/op +0.08 ns/op / +0.6% (worse)
Windows MinGW BenchmarkMergeCompilerFlags 634.500 ns/op +8.9 ns/op / +1.4% (worse)
Windows MinGW BenchmarkMergeLinkerFlags 555.800 ns/op +8.7 ns/op / +1.6% (worse)
Windows MinGW BenchmarkChannelBuffered 30.670 ns/op +0.35 ns/op / +1.2% (worse)
Windows MinGW BenchmarkChannelHandoff 1124 ns/op +92 ns/op / +8.9% (worse)
Windows MinGW BenchmarkDefer 57.450 ns/op +0.83 ns/op / +1.5% (worse)
Windows MinGW BenchmarkDirectCall 1.548 ns/op -0.001 ns/op / -0.1% (better)
Windows MinGW BenchmarkGlobalRead 1.548 ns/op -0.005 ns/op / -0.3% (better)
Windows MinGW BenchmarkGlobalWrite 2.474 ns/op +0.004 ns/op / +0.2% (worse)
Windows MinGW BenchmarkGoroutine 91877 ns/op -2441 ns/op / -2.6% (better)
Windows MinGW BenchmarkInterfaceCall 8.063 ns/op -0.016 ns/op / -0.2% (better)
Windows MinGW BenchmarkRuntimeGetG 2.484 ns/op -0.009 ns/op / -0.4% (better)
Windows MinGW 386 BenchmarkLookupPCRandom 26.580 ns/op -0.03 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkMergeCompilerFlags 768.400 ns/op -10.5 ns/op / -1.3% (better)
Windows MinGW 386 BenchmarkMergeLinkerFlags 696.800 ns/op +1.1 ns/op / +0.2% (worse)
Windows MinGW 386 BenchmarkChannelBuffered 40.060 ns/op -0.11 ns/op / -0.3% (better)
Windows MinGW 386 BenchmarkChannelHandoff 756 ns/op -39.7 ns/op / -5.0% (better)
Windows MinGW 386 BenchmarkDefer 43 ns/op +0.08 ns/op / +0.2% (worse)
Windows MinGW 386 BenchmarkDirectCall 1.551 ns/op -0.001 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkGlobalRead 1.552 ns/op +0.001 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkGlobalWrite 7.802 ns/op +0.006 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkGoroutine 108475 ns/op +3171 ns/op / +3.0% (worse)
Windows MinGW 386 BenchmarkInterfaceCall 8.421 ns/op +0.021 ns/op / +0.2% (worse)
Windows MinGW 386 BenchmarkRuntimeGetG 2.480 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 BenchmarkLookupPCRandom 12.110 ns/op -0.01 ns/op / -0.1% (better)
Windows MinGW ARM64 BenchmarkMergeCompilerFlags 577.300 ns/op -8.4 ns/op / -1.4% (better)
Windows MinGW ARM64 BenchmarkMergeLinkerFlags 534 ns/op -13.4 ns/op / -2.4% (better)
Windows MinGW ARM64 BenchmarkChannelBuffered 37.670 ns/op -0.13 ns/op / -0.3% (better)
Windows MinGW ARM64 BenchmarkChannelHandoff 4778 ns/op +1347 ns/op / +39.3% (worse)
Windows MinGW ARM64 BenchmarkDefer 56.780 ns/op +1.8 ns/op / +3.3% (worse)
Windows MinGW ARM64 BenchmarkDirectCall 0.590 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 BenchmarkGlobalRead 0.593 ns/op -0.0004 ns/op / -0.1% (better)
Windows MinGW ARM64 BenchmarkGlobalWrite 0.663 ns/op -0.0001 ns/op / -0.01507% (better)
Windows MinGW ARM64 BenchmarkGoroutine 66040 ns/op +2762 ns/op / +4.4% (worse)
Windows MinGW ARM64 BenchmarkInterfaceCall 4.145 ns/op +0.003 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkRuntimeGetG 1.772 ns/op +0.003 ns/op / +0.2% (worse)
Windows MSVC BenchmarkLookupPCRandom 13.110 ns/op +0.15 ns/op / +1.2% (worse)
Windows MSVC BenchmarkMergeCompilerFlags 631.900 ns/op +32.7 ns/op / +5.5% (worse)
Windows MSVC BenchmarkMergeLinkerFlags 534.700 ns/op -2.1 ns/op / -0.4% (better)
Windows MSVC BenchmarkChannelBuffered 28.810 ns/op -0.03 ns/op / -0.1% (better)
Windows MSVC BenchmarkChannelHandoff 1097 ns/op +49 ns/op / +4.7% (worse)
Windows MSVC BenchmarkDefer 66.140 ns/op -0.08 ns/op / -0.1% (better)
Windows MSVC BenchmarkDirectCall 1.547 ns/op -0.001 ns/op / -0.1% (better)
Windows MSVC BenchmarkGlobalRead 1.548 ns/op +0.002 ns/op / +0.1% (worse)
Windows MSVC BenchmarkGlobalWrite 2.453 ns/op -0.004 ns/op / -0.2% (better)
Windows MSVC BenchmarkGoroutine 88196 ns/op -2204 ns/op / -2.4% (better)
Windows MSVC BenchmarkInterfaceCall 8.674 ns/op -0.008 ns/op / -0.1% (better)
Windows MSVC BenchmarkRuntimeGetG 2.169 ns/op +0.001 ns/op / +0.04613% (worse)
Windows MSVC 386 BenchmarkLookupPCRandom 15.830 ns/op +0.14 ns/op / +0.9% (worse)
Windows MSVC 386 BenchmarkMergeCompilerFlags 385.800 ns/op +1.1 ns/op / +0.3% (worse)
Windows MSVC 386 BenchmarkMergeLinkerFlags 374.200 ns/op +2.4 ns/op / +0.6% (worse)
Windows MSVC 386 BenchmarkChannelBuffered 36.500 ns/op -0.28 ns/op / -0.8% (better)
Windows MSVC 386 BenchmarkChannelHandoff 768.500 ns/op +69.4 ns/op / +9.9% (worse)
Windows MSVC 386 BenchmarkDefer 27.090 ns/op +0.01 ns/op / +0.03693% (worse)
Windows MSVC 386 BenchmarkDirectCall 0.927 ns/op -0.0004 ns/op / -0.04315% (better)
Windows MSVC 386 BenchmarkGlobalRead 0.930 ns/op -0.0052 ns/op / -0.6% (better)
Windows MSVC 386 BenchmarkGlobalWrite 8.360 ns/op -0.17 ns/op / -2.0% (better)
Windows MSVC 386 BenchmarkGoroutine 55025 ns/op -2376 ns/op / -4.1% (better)
Windows MSVC 386 BenchmarkInterfaceCall 4.643 ns/op +0.027 ns/op / +0.6% (worse)
Windows MSVC 386 BenchmarkRuntimeGetG 1.049 ns/op -0.038 ns/op / -3.5% (better)
Windows MSVC ARM64 BenchmarkLookupPCRandom 12.100 ns/op +0.01 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkMergeCompilerFlags 560.600 ns/op -14.6 ns/op / -2.5% (better)
Windows MSVC ARM64 BenchmarkMergeLinkerFlags 528 ns/op +9.3 ns/op / +1.8% (worse)
Windows MSVC ARM64 BenchmarkChannelBuffered 38.230 ns/op +1.26 ns/op / +3.4% (worse)
Windows MSVC ARM64 BenchmarkChannelHandoff 2698 ns/op -194 ns/op / -6.7% (better)
Windows MSVC ARM64 BenchmarkDefer 63.060 ns/op -0.22 ns/op / -0.3% (better)
Windows MSVC ARM64 BenchmarkDirectCall 0.590 ns/op +0.0003 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkGlobalRead 0.590 ns/op +0.0001 ns/op / +0.01695% (worse)
Windows MSVC ARM64 BenchmarkGlobalWrite 3.755 ns/op +0.007 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkGoroutine 57835 ns/op -2068 ns/op / -3.5% (better)
Windows MSVC ARM64 BenchmarkInterfaceCall 4.141 ns/op +0.007 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkRuntimeGetG 1.799 ns/op 0 ns/op / +0.0%
Timer runtime benchmarks
Platform Operation and runtime ns/op vs base
Linux AfterFuncZeroDelivery/Go 901 ns/op -2.2 ns/op / -0.2% (better)
Linux AfterFuncZeroDelivery/LLGo 46619 ns/op +6375 ns/op / +15.8% (worse)
Linux CreateStop/Go 288.300 ns/op -1.7 ns/op / -0.6% (better)
Linux CreateStop/LLGo 1805 ns/op -1 ns/op / -0.1% (better)
Linux RearmStopped/Go 115.800 ns/op -0.3 ns/op / -0.3% (better)
Linux RearmStopped/LLGo 1269 ns/op -13 ns/op / -1.0% (better)
Linux ResetActive/Go 69.030 ns/op +0.36 ns/op / +0.5% (worse)
Linux ResetActive/LLGo 761.300 ns/op +86.1 ns/op / +12.8% (worse)
Linux ResetHeap1024/Go 67.200 ns/op -0.13 ns/op / -0.2% (better)
Linux ResetHeap1024/LLGo 157.700 ns/op -6 ns/op / -3.7% (better)
macOS AfterFuncZeroDelivery/Go 427.500 ns/op -12 ns/op / -2.7% (better)
macOS AfterFuncZeroDelivery/LLGo 77837 ns/op +7453 ns/op / +10.6% (worse)
macOS CreateStop/Go 149.700 ns/op +3.9 ns/op / +2.7% (worse)
macOS CreateStop/LLGo 408.400 ns/op +8.1 ns/op / +2.0% (worse)
macOS RearmStopped/Go 57.760 ns/op -1.95 ns/op / -3.3% (better)
macOS RearmStopped/LLGo 301.500 ns/op +5.9 ns/op / +2.0% (worse)
macOS ResetActive/Go 42.930 ns/op -3 ns/op / -6.5% (better)
macOS ResetActive/LLGo 155.900 ns/op +2.7 ns/op / +1.8% (worse)
macOS ResetHeap1024/Go 42.840 ns/op +0.3 ns/op / +0.7% (worse)
macOS ResetHeap1024/LLGo 77.930 ns/op -1.57 ns/op / -2.0% (better)
Windows MinGW AfterFuncZeroDelivery/Go 554.600 ns/op +9.4 ns/op / +1.7% (worse)
Windows MinGW AfterFuncZeroDelivery/LLGo 184963 ns/op +1517 ns/op / +0.8% (worse)
Windows MinGW CreateStop/Go 116.700 ns/op -1.3 ns/op / -1.1% (better)
Windows MinGW CreateStop/LLGo 471.900 ns/op -12.8 ns/op / -2.6% (better)
Windows MinGW RearmStopped/Go 31.560 ns/op -0.1 ns/op / -0.3% (better)
Windows MinGW RearmStopped/LLGo 289.400 ns/op +36 ns/op / +14.2% (worse)
Windows MinGW ResetActive/Go 20.130 ns/op +0.05 ns/op / +0.2% (worse)
Windows MinGW ResetActive/LLGo 164.700 ns/op +26.7 ns/op / +19.3% (worse)
Windows MinGW ResetHeap1024/Go 20.520 ns/op -0.03 ns/op / -0.1% (better)
Windows MinGW ResetHeap1024/LLGo 118.700 ns/op +1.9 ns/op / +1.6% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/Go 954.700 ns/op -6 ns/op / -0.6% (better)
Windows MinGW 386 AfterFuncZeroDelivery/LLGo 201037 ns/op +1052 ns/op / +0.5% (worse)
Windows MinGW 386 CreateStop/Go 191.300 ns/op +0.3 ns/op / +0.2% (worse)
Windows MinGW 386 CreateStop/LLGo 487.400 ns/op +2.9 ns/op / +0.6% (worse)
Windows MinGW 386 RearmStopped/Go 63.610 ns/op +0.04 ns/op / +0.1% (worse)
Windows MinGW 386 RearmStopped/LLGo 323.400 ns/op +3.5 ns/op / +1.1% (worse)
Windows MinGW 386 ResetActive/Go 38.940 ns/op -0.21 ns/op / -0.5% (better)
Windows MinGW 386 ResetActive/LLGo 950.200 ns/op -31.7 ns/op / -3.2% (better)
Windows MinGW 386 ResetHeap1024/Go 39.470 ns/op -0.08 ns/op / -0.2% (better)
Windows MinGW 386 ResetHeap1024/LLGo 176.100 ns/op +1.8 ns/op / +1.0% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/Go 670.800 ns/op +1.2 ns/op / +0.2% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/LLGo 157330 ns/op +5717 ns/op / +3.8% (worse)
Windows MinGW ARM64 CreateStop/Go 201.900 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 CreateStop/LLGo 358.600 ns/op +8 ns/op / +2.3% (worse)
Windows MinGW ARM64 RearmStopped/Go 70.620 ns/op -0.02 ns/op / -0.02831% (better)
Windows MinGW ARM64 RearmStopped/LLGo 221.500 ns/op +7.2 ns/op / +3.4% (worse)
Windows MinGW ARM64 ResetActive/Go 30.950 ns/op -0.02 ns/op / -0.1% (better)
Windows MinGW ARM64 ResetActive/LLGo 116.700 ns/op +6.3 ns/op / +5.7% (worse)
Windows MinGW ARM64 ResetHeap1024/Go 31.130 ns/op +0.02 ns/op / +0.1% (worse)
Windows MinGW ARM64 ResetHeap1024/LLGo 110 ns/op -1.6 ns/op / -1.4% (better)
Windows MSVC AfterFuncZeroDelivery/Go 561 ns/op -4.4 ns/op / -0.8% (better)
Windows MSVC AfterFuncZeroDelivery/LLGo 171966 ns/op -2605 ns/op / -1.5% (better)
Windows MSVC CreateStop/Go 114.800 ns/op -0.3 ns/op / -0.3% (better)
Windows MSVC CreateStop/LLGo 419.100 ns/op +19.4 ns/op / +4.9% (worse)
Windows MSVC RearmStopped/Go 31.350 ns/op +0.02 ns/op / +0.1% (worse)
Windows MSVC RearmStopped/LLGo 232.800 ns/op +11 ns/op / +5.0% (worse)
Windows MSVC ResetActive/Go 20.050 ns/op -0.06 ns/op / -0.3% (better)
Windows MSVC ResetActive/LLGo 190.400 ns/op +29.9 ns/op / +18.6% (worse)
Windows MSVC ResetHeap1024/Go 20.560 ns/op +0.15 ns/op / +0.7% (worse)
Windows MSVC ResetHeap1024/LLGo 116.500 ns/op 0 ns/op / +0.0%
Windows MSVC 386 AfterFuncZeroDelivery/Go 603.100 ns/op -21.2 ns/op / -3.4% (better)
Windows MSVC 386 AfterFuncZeroDelivery/LLGo 103928 ns/op -3455 ns/op / -3.2% (better)
Windows MSVC 386 CreateStop/Go 160.200 ns/op +1.4 ns/op / +0.9% (worse)
Windows MSVC 386 CreateStop/LLGo 432.800 ns/op +6.4 ns/op / +1.5% (worse)
Windows MSVC 386 RearmStopped/Go 61.570 ns/op -0.2 ns/op / -0.3% (better)
Windows MSVC 386 RearmStopped/LLGo 236.700 ns/op -10 ns/op / -4.1% (better)
Windows MSVC 386 ResetActive/Go 29.370 ns/op -0.05 ns/op / -0.2% (better)
Windows MSVC 386 ResetActive/LLGo 526 ns/op -66.9 ns/op / -11.3% (better)
Windows MSVC 386 ResetHeap1024/Go 29.520 ns/op -0.34 ns/op / -1.1% (better)
Windows MSVC 386 ResetHeap1024/LLGo 102 ns/op -4.9 ns/op / -4.6% (better)
Windows MSVC ARM64 AfterFuncZeroDelivery/Go 662.400 ns/op -8.2 ns/op / -1.2% (better)
Windows MSVC ARM64 AfterFuncZeroDelivery/LLGo 140979 ns/op -5569 ns/op / -3.8% (better)
Windows MSVC ARM64 CreateStop/Go 198.700 ns/op +0.6 ns/op / +0.3% (worse)
Windows MSVC ARM64 CreateStop/LLGo 338.200 ns/op +7.2 ns/op / +2.2% (worse)
Windows MSVC ARM64 RearmStopped/Go 70.580 ns/op -0.08 ns/op / -0.1% (better)
Windows MSVC ARM64 RearmStopped/LLGo 224.700 ns/op -0.7 ns/op / -0.3% (better)
Windows MSVC ARM64 ResetActive/Go 31.180 ns/op -0.05 ns/op / -0.2% (better)
Windows MSVC ARM64 ResetActive/LLGo 104.300 ns/op -5.4 ns/op / -4.9% (better)
Windows MSVC ARM64 ResetHeap1024/Go 31.110 ns/op -0.07 ns/op / -0.2% (better)
Windows MSVC ARM64 ResetHeap1024/LLGo 117.700 ns/op +1 ns/op / +0.9% (worse)

Compared with 762d7bd73a34 measured in the same runner job.

@zhouguangyuan0718 zhouguangyuan0718 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed package layout and dependencies, multi-architecture image configuration, and release publishing conditions. No blocking issues found. Locally verified the published ARM64 DEB and RPM packages in clean Ubuntu 24.04 and Fedora 44 containers, including compilation as root and a regular user and package removal. Also verified anonymous GHCR image pulls and compilation as root and with Docker --user. The successful CI and fork release runs cover e6396d7; the current head differs only by README deletions, with packaging and release code unchanged.

@cpunion
cpunion merged commit d85be61 into xgo-dev:main Oct 15, 2026
@cpunion
cpunion deleted the codex/linux-container-release-20261014 branch October 15, 2026 23:14
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.

2 participants