Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1849 commits
Select commit Hold shift + click to select a range
73509ed
ci: run WAMR pthread probe in WASI cross-compile job
cpunion Sep 23, 2026
3ff7e67
ci/wasm: match Emscripten 6.0.8 with Binaryen 132
cpunion Sep 23, 2026
03a58a0
build: use common native assembly backend on Linux and Darwin
zhouguangyuan0718 Sep 23, 2026
813864b
ci/wasm: pin LLGo Binaryen llgo-v132.2 release
cpunion Sep 23, 2026
ed9eb00
build: merge naked assembly functions into package LLVM modules
zhouguangyuan0718 Sep 23, 2026
d1f343c
test/wasip1: exercise pthread handoff and retirement on WAMR
cpunion Sep 23, 2026
d174d9b
runtime/wasm: hold GC lock while reading realloc metadata
cpunion Sep 23, 2026
a730465
runtime/wasip1: harden threaded clock and GC probes
cpunion Sep 23, 2026
5039295
test/goroot: allow generated build time on Windows MSVC 386
cpunion Sep 23, 2026
c87ed14
test/goroot: clarify generated workload and selector failure
cpunion Sep 23, 2026
4bc7ce4
docs/wasm: align profile plan with patched Binaryen and threaded runt…
cpunion Sep 23, 2026
b952587
build(deps): bump actions/github-script from 8 to 9
dependabot[bot] Sep 24, 2026
a6a001a
test/wasip1: verify pthread C stack bounds on WAMR
cpunion Sep 24, 2026
43ae165
build: compile native assembly through shared LLVM IR pipeline
zhouguangyuan0718 Sep 24, 2026
1a9d937
dev: invalidate stale local WAMR builds
cpunion Sep 24, 2026
89332c1
dev: distinguish Windows WAMR cache ABIs
cpunion Sep 24, 2026
2ed881a
ssa: honor converthash for all float-to-integer conversions
cpunion Sep 24, 2026
08f21cf
ssa: document converthash target mode
cpunion Sep 24, 2026
95e0da8
build: reject dynamic import libraries parsed as linker options
zhouguangyuan0718 Sep 24, 2026
a86c46a
test/goroot: record convert5 as passing
cpunion Sep 24, 2026
b969914
build/wasm: pin Binaryen llgo-v132.3 with Memory64 DWARF fix
cpunion Sep 24, 2026
530e1fd
build: link native dynamic import libraries on Linux
zhouguangyuan0718 Sep 24, 2026
6d5b1bc
Merge main and retain native assembly platform tests
zhouguangyuan0718 Sep 24, 2026
500680e
reflect: convert TypeFor function types to Func
visualfc Sep 24, 2026
3caf345
ci: run native assembly checks in existing test batches
zhouguangyuan0718 Sep 24, 2026
ec58422
ci: apply Windows exception stack overlay to compiler tests
zhouguangyuan0718 Sep 24, 2026
85b5bc3
reflect: use two-word closure layout for array and slice funcs
visualfc Sep 24, 2026
aa0eead
reflect: use two-word closure stride in Slice, Slice3, and Clear
visualfc Sep 24, 2026
0f86310
Merge pull request #2667 from visualfc/fix/reflect-typefor-func
xushiwei Sep 24, 2026
d6a41d7
Merge pull request #2668 from visualfc/fix/reflect-index-func-closure
xushiwei Sep 24, 2026
e747bf5
build: use upstream plan9asm v0.6.1
zhouguangyuan0718 Sep 24, 2026
0318cf8
Merge pull request #2659 from cpunion/codex/goroot-issue16037-windows…
cpunion Sep 25, 2026
75fbba7
Merge pull request #2623 from zhouguangyuan0718/codex/tsgo-darwin-bui…
xushiwei Sep 25, 2026
fda1717
Merge pull request #2626 from zhouguangyuan0718/codex/wasm-stack-boun…
cpunion Sep 25, 2026
4dbedca
Merge pull request #2664 from cpunion/codex/converthash-integer-20260924
cpunion Sep 25, 2026
250c4eb
ssa: check full shift count before narrowing
cpunion Sep 24, 2026
e9227e2
test/goroot: assert bug356 passes on Windows 386
cpunion Sep 24, 2026
49eea3d
test/ssa: clarify and tighten shift-count regression
cpunion Sep 24, 2026
68581ce
cl: refresh shift-count IR expectations
cpunion Sep 25, 2026
74cda8e
Merge pull request #2665 from cpunion/codex/shift-count-width-20260924
cpunion Sep 25, 2026
42402c3
ci: accept Visual Studio 2026 on Windows ARM64 runners
cpunion Sep 25, 2026
4f7e2d0
Merge pull request #2680 from cpunion/codex/windows-arm64-vs2026-2026…
cpunion Sep 26, 2026
a9cc255
cl: resolve linked method receiver aliases and diagnose invalid links
cpunion Sep 25, 2026
013a7e4
cl: accept parenthesized alias receiver names in link directives
cpunion Sep 25, 2026
f3038de
cl: guard declaration metadata lookup and clarify link errors
cpunion Sep 25, 2026
6fb3faa
build: update x/tools to latest SSA fix
zhouguangyuan0718 Sep 26, 2026
6cc9923
Merge pull request #2652 from cpunion/codex/binaryen-toolchain
cpunion Sep 26, 2026
9a439cd
runtime/wasip1: use SDK monotonic clocks and bound retirement probe
cpunion Sep 26, 2026
95816bf
runtime: preserve deep panic stacks and add native traceback diagnostics
cpunion Sep 25, 2026
6a494d8
ci: trace Windows FFI smoke failure
cpunion Sep 25, 2026
751de79
ci: pinpoint foreign callback overflow
cpunion Sep 25, 2026
f168bc1
fix(runtime): skip caller-location cache before foreign entry context
cpunion Sep 25, 2026
eb5c7a8
ci: remove Windows FFI diagnostic output
cpunion Sep 25, 2026
d464790
test(ssa): account for Win64 unwind-table attributes in IR snapshots
cpunion Sep 25, 2026
39265dd
test(ssa): expect unwind attr on Win64 C declarations
cpunion Sep 25, 2026
1a43904
test(cl): account for Win64 unwind attr in IR fixtures
cpunion Sep 25, 2026
96d00bc
fix(runtime): address native traceback review findings
cpunion Sep 26, 2026
fa58164
fix(runtime): bound fault unwinding to its allocated buffer
cpunion Sep 26, 2026
a498968
build: snapshot effective Go experiments and tool tags
zhouguangyuan0718 Sep 12, 2026
e6c9f08
simd: describe Go 1.27 fixed-width types on three targets
zhouguangyuan0718 Sep 12, 2026
d9d0ac6
build: exercise source patches through the production loader
zhouguangyuan0718 Sep 12, 2026
ee29479
build: inspect selected tool tags outside the source module
zhouguangyuan0718 Sep 13, 2026
394acf5
simd: inventory fixed-width APIs and add compiler readiness probes
zhouguangyuan0718 Sep 13, 2026
48034c4
build: limit SIMD groundwork to experiment configuration
zhouguangyuan0718 Sep 13, 2026
af1334a
ci: use bash for traceback coverage on Windows
cpunion Sep 26, 2026
f30e394
Merge pull request #2653 from cpunion/codex/wamr-threads-bringup
cpunion Sep 26, 2026
4c39f58
Merge pull request #2681 from zhouguangyuan0718/codex/update-x-tools-…
cpunion Sep 26, 2026
eb292ec
build: remove obsolete single-case select SSA reorder
cpunion Sep 26, 2026
a34388d
Merge pull request #2682 from cpunion/codex/remove-select-recv-ssa-fi…
cpunion Sep 26, 2026
0a60094
test: cover Go configuration failures and isolate SDK flag checks
zhouguangyuan0718 Sep 26, 2026
4864672
test/wasm: compare legacy EH, exnref, and Binaryen translation
cpunion Sep 23, 2026
b2c1c5f
docs/wasm: record Go to C++ EH link gap
cpunion Sep 23, 2026
6431dc8
test/wasm: exercise C++ catch to Go status boundary
cpunion Sep 23, 2026
7857432
docs/wasm: record EH results with published Binaryen release
cpunion Sep 23, 2026
156689a
test/wasm: compare EH paths in Chrome and document supported boundary
cpunion Sep 23, 2026
e6d0c52
ci/wasm: exercise EH comparison in Chrome on pinned toolchain
cpunion Sep 23, 2026
9097e17
test/wasm: address EH comparison review findings
cpunion Sep 26, 2026
5102cbd
build/wasm: retain DWARF through pre-Asyncify optimization
cpunion Sep 23, 2026
7eaf70f
ci/wasm: verify final memory64 DWARF with patched Binaryen release
cpunion Sep 24, 2026
1ef7918
test/wasm: address final DWARF review findings
cpunion Sep 26, 2026
b9c8775
build: diagnose target runner failures
cpunion Sep 4, 2026
9c76d4f
ci: exercise public wasm run contracts
cpunion Sep 4, 2026
cc57749
build: clean implicit execution artifacts
cpunion Sep 4, 2026
ba9186a
ci: cover wasm execution artifact lifecycle
cpunion Sep 4, 2026
5ee16a4
build: bound host runner execution
cpunion Sep 4, 2026
2d7d41c
ci: exercise wasm runner timeouts
cpunion Sep 4, 2026
77a3181
ci/wasm: report executed profile coverage
cpunion Sep 4, 2026
73e581a
ci/wasm: test coverage reporting failures
cpunion Sep 4, 2026
e8bbcf1
ci/wasm: execute initial standard-library acceptance set
cpunion Sep 5, 2026
f9033ea
ci/wasm: budget both packages in the public test command
cpunion Sep 5, 2026
e040f01
build/wasm: carry profile and timeout through current runner paths
cpunion Sep 23, 2026
dc6122d
ci/wasm: expect J32 profile in runner timeout probe
cpunion Sep 23, 2026
8820364
test/wasm: run raw JS profile in browser-only mode
cpunion Sep 23, 2026
429d2a5
build: enforce run deadlines and terminate runner descendants
cpunion Sep 26, 2026
41eb3f8
build: clean up descendants after failed runner exits
cpunion Sep 26, 2026
cc3f73b
ci/wasm: isolate report probe and retain terminal coverage
cpunion Sep 26, 2026
1f8733d
ci/wasm: exercise report failure after runtime preflight
cpunion Sep 26, 2026
7e3ec21
Merge pull request #2678 from cpunion/codex/fix-link-alias-recv-2677
xushiwei Sep 26, 2026
7db1409
Merge pull request #2675 from cpunion/codex/native-panic-traceback-20…
xushiwei Sep 26, 2026
ea8c03a
doc: LLAR Hub
xushiwei Sep 27, 2026
8567fda
Merge pull request #2683 from xushiwei/q
xushiwei Sep 27, 2026
e5952f4
test: enable host tests under llgo
cpunion Aug 27, 2026
8403867
ci: verify llgo self-hosting
cpunion Aug 27, 2026
e2ea8fe
build: avoid LLVM signal handlers when self-hosting
cpunion Aug 27, 2026
e893392
ci: exercise uncached self-host smoke tests
cpunion Aug 27, 2026
377028c
runtime: resolve Darwin executable path from system
cpunion Aug 27, 2026
91043d3
runtime: read Darwin executable path from startup vector
cpunion Aug 27, 2026
8f5f9ad
ci: account for self-host matrix in policy
cpunion Sep 27, 2026
2322534
build: restore self-host compatibility
cpunion Sep 27, 2026
416868d
build: keep test stack default host-only
cpunion Sep 27, 2026
394c450
test: cover external archive dispatch
cpunion Sep 27, 2026
d8ebd32
test: run remaining host-compatible tests under llgo
cpunion Sep 27, 2026
17707cf
build: clarify Darwin trampoline comment
cpunion Sep 27, 2026
6c49012
Merge pull request #2569 from zhouguangyuan0718/codex/simd-foundation…
xushiwei Sep 27, 2026
5c80bcf
Merge pull request #2662 from cpunion/codex/wasm-final-dwarf
cpunion Sep 27, 2026
77ca3f7
test/wasm: clarify EH comparison runtime requirements
cpunion Sep 27, 2026
f172ad1
build/wasm: report test runner failures without terminal takeover
cpunion Sep 27, 2026
5858cbc
Merge pull request #2654 from cpunion/codex/wasm-eh-matrix
cpunion Sep 27, 2026
f59bac1
Merge pull request #2660 from cpunion/codex/wasm-r3-runner-recovery-2…
cpunion Sep 27, 2026
8db4345
runtime/wasip1: discover current pthread stack top for GC
cpunion Sep 24, 2026
ffde80e
runtime/wasm: port bounded Emscripten worker scheduling to J32/J64 pr…
cpunion Sep 23, 2026
c9feac5
runtime/wasm: port multi-worker stop-the-world GC
cpunion Sep 23, 2026
8c40f1b
runtime/wasm: harden bounded workers and add browser acceptance
cpunion Sep 23, 2026
64ad7a9
runtime/wasm: release JS handles in their owning worker realm
cpunion Sep 23, 2026
28ff880
test/wasm: cover realm-affine JS finalizer releases
cpunion Sep 23, 2026
440ec0c
runtime/wasm: drain JS releases on an owning goroutine
cpunion Sep 23, 2026
035dbff
runtime/wasm: restore worker stack before host unwind
cpunion Sep 23, 2026
f15f512
runtime/wasm: harden host transitions and emval lifetimes
cpunion Sep 23, 2026
e75155c
runtime/wasm: preserve callback worker ownership across dispatch
cpunion Sep 23, 2026
7c2f9f2
runtime/wasm: preserve synchronous JS callbacks across bounded workers
cpunion Sep 23, 2026
a1b5abe
runtime/wasm: expose independent work dispatch for realm-safe browser…
cpunion Sep 23, 2026
936dd79
ssa: verify worker GC root layout for J32 and J64
cpunion Sep 23, 2026
e0bfaed
test/wasm: wait for Chrome and retry profile cleanup
cpunion Sep 24, 2026
62de42d
test/wasm: exercise browser-only instantiation failure
cpunion Sep 24, 2026
0f7cb03
runtime/wasm: keep callback mutex off the worker system fiber
cpunion Sep 24, 2026
419970c
runtime/wasip1: describe timer condition across clocks
cpunion Sep 27, 2026
0835629
runtime/wasm: address worker review and preserve run exit status
cpunion Sep 27, 2026
f413a81
test(wasm): expect propagated guest exit in runner probe
cpunion Sep 27, 2026
267c867
test/wasip1: require pthread stack bounds in worker probe
cpunion Sep 28, 2026
06c353f
runtime,ci: retain wasm stack caller and report failed tests
cpunion Sep 28, 2026
ddcc958
Fix C callback aliases in linked method parameters
cpunion Sep 28, 2026
daf2dd0
ci: install CPU-only PyTorch for Linux demos
cpunion Sep 28, 2026
864f6ce
docs: link directly to c/math source
cpunion Sep 28, 2026
2381d1e
Address C callback alias review feedback
cpunion Sep 28, 2026
a836456
Guard captured C callbacks without rejecting dynamic functions
cpunion Sep 28, 2026
751492a
build: query tool tags with the resolved Go executable
zhouguangyuan0718 Sep 28, 2026
7bbac9e
build: inherit invocation environment for Go tool tag queries
zhouguangyuan0718 Sep 28, 2026
8de2665
Keep captured callback panic test off bare-metal ESP
cpunion Sep 28, 2026
0d08f23
build: set runtime.Version from the source GOROOT GOVERSION
visualfc Sep 24, 2026
63ee1c4
build: propagate goVersion into the link-phase context
visualfc Sep 28, 2026
3defce7
fix(wasm): honor independent callback spawns and localize host FS han…
cpunion Sep 28, 2026
827d21a
Merge pull request #2666 from cpunion/codex/wasi-threaded-stack-bounds
cpunion Sep 28, 2026
c88cc42
Merge pull request #2685 from cpunion/codex/fix-wasm-stack-report-202…
cpunion Sep 28, 2026
560a863
Merge pull request #2687 from zhouguangyuan0718/codex/fix-source-go-j…
xushiwei Sep 28, 2026
05cc60c
Merge pull request #2686 from cpunion/codex/fix-c-callback-method-267…
xushiwei Sep 28, 2026
708237d
Merge pull request #2663 from xgo-dev/dependabot/github_actions/actio…
xushiwei Sep 28, 2026
4299fa1
Merge pull request #2673 from visualfc/fix/runtime-version-goroot
xushiwei Sep 28, 2026
a3c467f
mod: github.com/goplus/gogen v1.24.8
xushiwei Sep 28, 2026
426d9ec
Merge pull request #2688 from xushiwei/q
xushiwei Sep 28, 2026
d7d1191
ci: cancel superseded main workflow runs
cpunion Sep 28, 2026
1f1704a
test: expect superseded main CI cancellation
cpunion Sep 28, 2026
a966e83
Merge pull request #2689 from cpunion/codex/main-ci-cancel-stale-2026…
cpunion Sep 28, 2026
8b8ffc1
Merge pull request #2661 from cpunion/codex/wasm-workers-config
cpunion Sep 28, 2026
87507d2
Merge branch 'main' into codex/remove-test-llgo-tags-20260827
xushiwei Sep 28, 2026
ef3fce4
Merge pull request #2426 from cpunion/codex/remove-test-llgo-tags-202…
xushiwei Sep 28, 2026
852403a
build(deps): bump github.com/goplus/lib from 0.5.2 to 0.5.3
dependabot[bot] Sep 29, 2026
fe3a155
Merge pull request #2539 from visualfc/fix/js-funcof-sync-from-go-call
cpunion Sep 29, 2026
ba4e4ab
build: compile Emscripten HTML host helpers under llgo
visualfc Sep 29, 2026
9853dc8
Merge pull request #2700 from visualfc/fix/emscripten-html-llgo-build
cpunion Sep 29, 2026
498b255
build: avoid copying the growing funcinfo string pool
zhouguangyuan0718 Sep 29, 2026
898e7d6
build: reuse funcinfo string lookup buffer
zhouguangyuan0718 Sep 29, 2026
61af2d5
fix: skip LLVM intrinsics before C ABI type sizing
cpunion Sep 29, 2026
9a785d5
Test LLVM intrinsic C ABI skip in process
cpunion Sep 29, 2026
5a999b2
Allow bounded Wasm worker tests room for CI variance
cpunion Sep 29, 2026
8f83ac6
Merge pull request #2693 from xgo-dev/dependabot/go_modules/github.co…
xushiwei Sep 30, 2026
15732a0
Merge pull request #2699 from zhouguangyuan0718/codex/funcinfo-pool-m…
xushiwei Sep 30, 2026
e89c8ec
Clarify LLVM intrinsic guard and tighten regression coverage
cpunion Sep 30, 2026
07a0059
Merge pull request #2709 from cpunion/codex/cabi-skip-llvm-intrinsics…
cpunion Sep 30, 2026
4576bf1
test/wasip1: verify thread-local compiler root ABI
cpunion Sep 24, 2026
23fb43d
runtime/wasip1: prepare thread-local compiler roots for GC
cpunion Sep 24, 2026
97febf1
runtime/wasip1: add opt-in stop-the-world GC for WAMR pthreads
cpunion Sep 24, 2026
63e003d
style/wasm: format threaded GC build constraints
cpunion Sep 24, 2026
f1047a3
docs/wasm: name remaining work by scope
cpunion Sep 24, 2026
d20367c
test/wasip1: preserve WAMR panic recovery across pthreads
cpunion Sep 24, 2026
506ab10
docs/wasm: use scope names in acceptance tools
cpunion Sep 24, 2026
9476d8f
runtime/wasip1: grow threaded GC across disjoint libc arenas
cpunion Sep 24, 2026
ce94af7
build/wasip1: default to GC when pthread mode is selected
cpunion Sep 24, 2026
788e8cd
build/wasip1: run pthread programs through WAMR
cpunion Sep 24, 2026
912d13a
test/wasip1: run W32 acceptance slice on WAMR threads
cpunion Sep 24, 2026
d3e41c3
test/wasip1: qualify minimal pthread programs on WAMR
cpunion Sep 24, 2026
a34d192
build/wasip1: grant WAMR filesystem test directories
cpunion Sep 24, 2026
e5e530d
test/wasip1: qualify select stress with 128 WAMR threads
cpunion Sep 24, 2026
7947c58
test/wasip1: accept archive-free WAMR importer error
cpunion Sep 24, 2026
9e3c98e
test/wasip1: stabilize WAMR working directory and stress environment
cpunion Sep 24, 2026
ee583e1
runtime/wasip1: poll hosted condition waits for threaded GC
cpunion Sep 24, 2026
eeb9d19
test/wasm: allow bounded worker suite 180 seconds
cpunion Sep 24, 2026
9c39d03
wasip1: initialize pthread startup and bound worker stacks
cpunion Sep 24, 2026
017aa75
test/wasm: allow memory64 browser worker startup time
cpunion Sep 24, 2026
cabbb32
runtime/wasm: address threaded worker review and W32 profiling
cpunion Sep 24, 2026
38fd060
test/os/exec: accept WAMR devnull failure on WASI
cpunion Sep 24, 2026
2ebd83a
test/wasm: bound slow WAMR TLS acceptance separately
cpunion Sep 24, 2026
9700663
test/wasm: use portable TLS and go/build fixtures
cpunion Sep 24, 2026
2cbad2f
test/wasm: account for WAMR host capabilities and crypto cost
cpunion Sep 24, 2026
18ffee8
runtime/wasm: root TLS slots used by sync.Pool
cpunion Sep 24, 2026
9115621
test/wasm: allow full EC32 public test package to finish
cpunion Sep 25, 2026
0e27af4
runtime/wasm: release retired single-worker roots eagerly
cpunion Sep 25, 2026
57e490b
test/wasm: bound DSA and RSA acceptance cases
cpunion Sep 25, 2026
3a3ab3f
test/wasm: budget measured WAMR package deadlines
cpunion Sep 25, 2026
010d032
runtime/wasm: clear retired browser fiber storage before release
cpunion Sep 25, 2026
8ef2392
runtime/wasm: keep initial WASI thread alive after Goexit
cpunion Sep 25, 2026
bcf6235
runtime/wasip1: exclude timer service from Goexit deadlock count
cpunion Sep 25, 2026
e826cb4
test/wasip1: preserve GOROOT test order after restacking
cpunion Sep 26, 2026
9294e4b
runtime/wasm: avoid defer on system-fiber callback poll
cpunion Sep 27, 2026
0dc7eae
test/wasip1: accept WAMR deadlock exit translation
cpunion Sep 27, 2026
becbc21
test/wasm: stabilize retired fiber finalizer and cover host contracts
cpunion Sep 28, 2026
81a3b13
test/wasm: cover WAMR working-directory failure
cpunion Sep 28, 2026
0ccbe88
fix(wasip1): account for GC metadata at arena size boundaries
cpunion Sep 29, 2026
97523ce
test(wasm): distinguish blocking filesystem calls from host latency
cpunion Sep 29, 2026
e702f81
ci: use Ubuntu archive mirrors and bound apt downloads
cpunion Sep 29, 2026
c6c3ce4
runtime/wasip1: keep parked main thread GC-responsive
cpunion Sep 30, 2026
653957f
Merge pull request #2669 from cpunion/codex/wasi-threaded-gc
cpunion Sep 30, 2026
34a22ba
fix(wasm): keep catchable WAMR exceptions local to their thread
cpunion Sep 29, 2026
1b6edaa
ci(wasm): install wasm-tools for WAMR exception fixtures
cpunion Sep 29, 2026
12e3fa8
fix(wasm): keep runtime pthread waits safe for collection
cpunion Sep 29, 2026
79b601a
fix(wasm): park allocator contention instead of polling host locks
cpunion Sep 29, 2026
64a1ed1
perf(wasm): reuse heap segments while scanning GC metadata
cpunion Sep 29, 2026
9ec4394
fix(wasm): avoid polling blocked threads and separate GC test budgets
cpunion Sep 29, 2026
f46c1a8
test(wasm): isolate GC startup race budgets under WAMR
cpunion Sep 29, 2026
abe36f6
Merge pull request #2695 from cpunion/codex/wasi-thread-stability
cpunion Sep 30, 2026
302b758
feat(wasm): share browser filesystem across scheduler workers
cpunion Sep 29, 2026
b98e023
fix(wasm): bound filesystem proxies and share byte payloads
cpunion Sep 29, 2026
249a8b3
fix(wasm): refresh filesystem proxy views after memory growth
cpunion Sep 30, 2026
94a4b19
test: disable Go telemetry in temporary env home
cpunion Sep 30, 2026
75efc1d
test: document env isolation order and clarify telemetry assertion
cpunion Sep 30, 2026
d0704f7
Merge pull request #2711 from cpunion/codex/env-telemetry-cleanup-202…
cpunion Sep 30, 2026
4d51d8e
Merge pull request #2696 from cpunion/codex/browser-fs-workers
cpunion Sep 30, 2026
568117b
feat(wasm): make WAMR threads the default W32 profile
cpunion Sep 29, 2026
3b8d9c0
test(wasm): expect a TLS root chain in the default WASI profile
cpunion Sep 29, 2026
385cb07
fix(wasm): preserve PWD and PATH in the default WAMR runner
cpunion Sep 29, 2026
56ac24e
fix(wasm): align runner and regression checks with default threads
cpunion Sep 29, 2026
cb167f1
test(wasm): cover linked DWARF file indices in source checks
cpunion Sep 29, 2026
79fd653
fix(wasm): disable implicit Binaryen passes for WASI threads
cpunion Sep 29, 2026
f06143b
Merge pull request #2697 from cpunion/codex/wasi-default-threads
cpunion Sep 30, 2026
8e93ca8
debug: define the current debugger runtime contract
cpunion Sep 30, 2026
197027a
debug: integrate current runtime views in LLDB and GDB
cpunion Sep 30, 2026
aa4f967
debug: qualify current native runtime adapters and compatibility fall…
cpunion Sep 30, 2026
7ec469c
test: verify GDB goroutine backtraces and document runtime contract
cpunion Sep 30, 2026
a2e0d74
debug: describe direct interface storage in the common schema
cpunion Sep 30, 2026
fb8eda4
debug: unify artifact packaging and native/embedded sessions
cpunion Sep 30, 2026
23f6e6a
ci: fix the embedded debugger workflow condition
cpunion Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
**/expect.txt text eol=lf
**/out.txt text eol=lf
*.ll text eol=lf
*.sh text eol=lf
_demo/go/export/libexport.h.want text eol=lf
83 changes: 83 additions & 0 deletions .github/CI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Shared CI policy

Workflows call `ci-prepare.yml` as their `prepare` job. Its outputs are job
outputs, not environment variables: consumers declare `needs: prepare` and use
`needs.prepare.outputs.run_code_ci == 'true'` or
`needs.prepare.outputs.run_doc_checks == 'true'`. Existing artifact dependencies
must stay in `needs` alongside `prepare`.

The implementation is in `scripts/ci_policy.py`. Keep change rules there rather
than adding path filters or independent diff commands to individual workflows.
Each workflow executes its own small prepare job; the rule implementation is
shared. The prepare job needs only Git and Python, not the LLGo toolchain. On a
PR, it loads both `ci_policy.py` and `ci_changes.py` from the event's base
commit, so edits to those modules in the PR cannot change this step's skip
decision. If either base file is unavailable (including before this policy lands
on main), prepare enables both suites. Main, tags and manual runs execute the
checked-out policy and enable both suites.

## Execution decisions

- Only `pull_request` runs may skip checks. Pushes to main, tag builds, scheduled
runs and manual runs enable both outputs without inspecting a diff. This does
not add new triggers to schedule-only workflows or enable tag-only publishing
on branches.
- A PR is compared from the merge base of its event base/head SHAs to its head,
including every commit and every changed path. Changes subsequently pushed to
the base branch do not alter that comparison.
- Added/modified, regular non-executable `.md`, `.markdown` and `.rst` files are
prose. Other extensions and unknown paths require code CI. `doc/_readme/**`
and `testdata` directories are code/test inputs even when named Markdown.
- Documentation changes, README example inputs and `.github/**` changes enable
document checks. The existing check still verifies README embedded sources
and README links; this policy does not expand its scanning scope.
- Deletions, renames and type changes run both suites because they can remove
linked files or packaged documents. Unavailable or invalid PR diffs also run
both suites, with a warning. An empty diff is handled conservatively.
- The **Docs** workflow installs LLGo and executes examples, so it consumes
`run_code_ci`, not `run_doc_checks`.

Prepare also exports `pr_head_sha` and `pr_merge_base` for benchmark consumers.
These are empty on non-PR events. If PR Git history cannot be resolved, code CI
is enabled but benchmark consumers must reject an empty merge base rather than
silently measuring a different commit.

## Runners and concurrency

`linux_runner` and `linux_large_runner` contain JSON runner labels. The upstream
`xgo-dev` repository uses its qiniu runners; workflows running in forks use
GitHub-hosted Ubuntu 24.04. Consume them with `fromJSON(...)`. Public-network
link checks and release packaging keep their explicitly selected hosted runners.
Windows and macOS platform matrices remain in their owning workflows.

PR updates share a concurrency group and cancel superseded runs. Main and tag
runs use `github.run_id` in their group so later commits neither cancel running
checks nor replace pending checks. Workflow-level concurrency cannot consume
prepare outputs; `test_ci_workflows.py` enforces the common expression instead.
The reusable prepare workflow has no concurrency group of its own.

Every workflow that uses prepare has a uniquely named `CI gate (...)` job. It
runs even if prepare fails and reports that failure. Branch protection should
require the gates for PR workflows, the relevant code/document checks, and
**CI policy**. Requiring only downstream jobs does not distinguish a prepare
failure from an intentional docs-only skip. The gate checks preparation, not
the result of every downstream job; it does not replace those required checks.

The benchmark publisher checks the triggering run's artifacts separately for
native and WASM results before invoking either publisher. A successful docs-only
run has no benchmark artifacts and is a normal no-op. External benchmark
notifications run for every upstream main push, including documentation changes.

## Validation

The independent **CI policy** workflow runs on every PR and main push. It tests
Git histories, failure fallbacks, runner selection, output propagation, matrix
coverage, release dependencies, main concurrency, and missing benchmark artifacts.
It is deliberately not gated by the code it validates.

Locally, install `scripts/requirements-ci.txt` in a Python environment and run:

```sh
python -m unittest discover -s .github/scripts -p 'test_*.py' -v
actionlint -shellcheck= .github/workflows/*.yml
```
197 changes: 197 additions & 0 deletions .github/actions/activate-windows-target/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
name: "Activate Windows Target"
description: "Switch a built LLGo host compiler to an architecture-matched Windows target environment"
inputs:
windows-abi:
description: "Native Windows toolchain profile"
required: false
default: "msvc"
windows-arch:
description: "Windows target GOARCH"
required: false
default: "amd64"

runs:
using: "composite"
steps:
- name: Record and isolate the host compiler when available
if: runner.os == 'Windows'
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
# GOROOT exposes its explicitly built compiler through LLGO_TEST_LLGO.
# Shared test jobs install llgo on PATH and reuse it whenever a
# target-native test launches the compiler as a subprocess.
$hostCompiler = Get-Command llgo.exe -ErrorAction SilentlyContinue
$hostCompilerPath = if ($env:LLGO_TEST_LLGO -and (Test-Path $env:LLGO_TEST_LLGO)) {
(Resolve-Path $env:LLGO_TEST_LLGO).Path
} elseif ($null -ne $hostCompiler) {
$hostCompiler.Source
}
if ($hostCompilerPath) {
if ("${{ inputs.windows-abi }}" -eq "mingw" -and "${{ inputs.windows-arch }}" -eq "386") {
$hostBin = Join-Path $env:LLGO_MINGW_HOST_ROOT "bin"
$objdump = Join-Path $hostBin "llvm-objdump.exe"
if (-not (Test-Path $objdump)) {
throw "The MinGW host llvm-objdump is unavailable: $objdump"
}

# The x86 target DLL directories must precede the x64 host on PATH
# when generated programs run. Put the host compiler's DLL closure
# beside llgo.exe so Windows resolves it before consulting PATH.
$compilerDir = Split-Path $hostCompilerPath
$queue = [Collections.Generic.Queue[string]]::new()
$queue.Enqueue($hostCompilerPath)
$copied = @{}
while ($queue.Count -ne 0) {
$binary = $queue.Dequeue()
foreach ($line in (& $objdump -p $binary)) {
if ($line -notmatch '^\s*DLL Name:\s*(\S+)\s*$') {
continue
}
$name = $Matches[1]
if ($copied.ContainsKey($name)) {
continue
}
$source = Join-Path $hostBin $name
if (-not (Test-Path $source)) {
continue
}
$destination = Join-Path $compilerDir $name
Copy-Item -LiteralPath $source -Destination $destination -Force
$copied[$name] = $true
$queue.Enqueue($destination)
}
}
if ($copied.Count -eq 0) {
throw "No MinGW host runtime DLLs were discovered for $hostCompilerPath"
}
}
Add-Content -Encoding utf8 $env:GITHUB_ENV "LLGO_TEST_COMPILER=$hostCompilerPath"
}

- name: Activate Windows MSVC target
if: runner.os == 'Windows' && inputs.windows-abi == 'msvc'
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
. (Join-Path $env:GITHUB_WORKSPACE ".github\windows\msvc-target.ps1")
$target = Enter-LLGoVisualStudio -GoArch "${{ inputs.windows-arch }}"

if ($env:LLGO_WINDOWS_TARGET_TRIPLE -ne $target.Triple) {
throw "Configured target $env:LLGO_WINDOWS_TARGET_TRIPLE does not match $($target.Triple)"
}
if ($env:LLGO_WINDOWS_VCPKG_TRIPLET -ne $target.VcpkgTriplet) {
throw "Configured vcpkg triplet $env:LLGO_WINDOWS_VCPKG_TRIPLET does not match $($target.VcpkgTriplet)"
}
if (-not (Test-Path (Join-Path $env:LLGO_WINDOWS_VCPKG_ROOT "include\gc\gc.h"))) {
throw "The $($target.VcpkgTriplet) dependency installation is incomplete"
}

Export-LLGoVisualStudioEnvironment
Add-Content -Encoding utf8 $env:GITHUB_ENV "CC=clang --target=$($target.Triple) -fuse-ld=lld -fms-runtime-lib=dll"
Add-Content -Encoding utf8 $env:GITHUB_ENV "CXX=clang++ --target=$($target.Triple) -fuse-ld=lld -fms-runtime-lib=dll -std=c++17"
Add-Content -Encoding utf8 $env:GITHUB_ENV "GOOS=windows"
Add-Content -Encoding utf8 $env:GITHUB_ENV "GOARCH=$($target.GoArch)"
Add-Content -Encoding utf8 $env:GITHUB_ENV "LLGO_WINDOWS_TARGET_ACTIVE=1"
Add-Content -Encoding utf8 $env:GITHUB_PATH (Join-Path $env:LLGO_WINDOWS_VCPKG_ROOT "bin")

- name: Activate Windows GNU target
if: runner.os == 'Windows' && inputs.windows-abi == 'mingw'
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$goArch = "${{ inputs.windows-arch }}"
$targetArch = switch ($goArch) {
"386" { "i686" }
"amd64" { "x86_64|amd64" }
"arm64" { "aarch64" }
default { throw "Unsupported Windows GNU target architecture: $goArch" }
}
$cc = "clang"
$cxx = "clang++"

if ($goArch -eq "386") {
foreach ($name in @("LLGO_MINGW_TARGET_BIN", "LLGO_MINGW_TARGET_RUNTIME_BIN", "LLGO_MINGW_TARGET_TOOLS", "LLGO_MINGW_TARGET_TRIPLE", "LLGO_MINGW_TARGET_VCPKG_ROOT")) {
$value = [Environment]::GetEnvironmentVariable($name)
if (-not $value) {
throw "The standalone llvm-mingw target did not export $name"
}
}
$compiler = Join-Path $env:LLGO_MINGW_TARGET_BIN "i686-w64-mingw32-clang.exe"
$compilerXX = Join-Path $env:LLGO_MINGW_TARGET_BIN "i686-w64-mingw32-clang++.exe"
foreach ($path in @($compiler, $compilerXX)) {
if (-not (Test-Path $path)) {
throw "The standalone llvm-mingw target compiler was not found: $path"
}
}
$target = (& $compiler -dumpmachine).Trim()
if ($target -notmatch "^$targetArch-.*-(windows-gnu|mingw32)$") {
throw "llvm-mingw reports $target, want windows/$goArch GNU"
}
# GITHUB_PATH prepends entries in reverse write order. Keep the
# target-selecting clang/pkg-config wrappers ahead of the bundle's
# unqualified x64 host commands for all subsequent steps.
Add-Content -Encoding utf8 $env:GITHUB_PATH $env:LLGO_MINGW_TARGET_BIN
Add-Content -Encoding utf8 $env:GITHUB_PATH $env:LLGO_MINGW_TARGET_RUNTIME_BIN
Add-Content -Encoding utf8 $env:GITHUB_PATH $env:LLGO_MINGW_TARGET_TOOLS
Add-Content -Encoding utf8 $env:GITHUB_PATH (Join-Path $env:LLGO_MINGW_TARGET_VCPKG_ROOT "bin")
# Keep the wrappers for interactive shells, but let LLGo invoke the
# drivers directly. A normal runtime link can exceed cmd.exe's 8191
# character limit while remaining below LLGo's 30 KiB response-file
# threshold.
$cc = $compiler
$cxx = $compilerXX
} else {
$target = (& clang.exe -dumpmachine).Trim()
if ($target -notmatch "^$targetArch-.*-(windows-gnu|mingw32)$") {
throw "MSYS2 Clang reports $target, want windows/$goArch GNU"
}
}

Add-Content -Encoding utf8 $env:GITHUB_ENV "CC=$cc"
Add-Content -Encoding utf8 $env:GITHUB_ENV "CXX=$cxx"
Add-Content -Encoding utf8 $env:GITHUB_ENV "GOOS=windows"
Add-Content -Encoding utf8 $env:GITHUB_ENV "GOARCH=$goArch"
Add-Content -Encoding utf8 $env:GITHUB_ENV "LLGO_WINDOWS_TARGET_ACTIVE=1"

- name: Activate cross-host Windows GNU target
if: runner.os != 'Windows' && inputs.windows-abi == 'mingw'
shell: bash
run: |
set -euo pipefail
for name in \
LLGO_MINGW_TARGET_BIN \
LLGO_MINGW_TARGET_RUNTIME_BIN \
LLGO_MINGW_TARGET_TOOLS \
LLGO_MINGW_TARGET_TRIPLE \
LLGO_MINGW_TARGET_VCPKG_ROOT; do
if [[ -z "${!name:-}" ]]; then
echo "the cross-host llvm-mingw target did not export $name" >&2
exit 1
fi
done

target="$(${LLGO_MINGW_TARGET_TOOLS}/clang -dumpmachine)"
case "${{ inputs.windows-arch }}:$target" in
386:i686-*-windows-gnu|386:i686-*-mingw32) ;;
amd64:x86_64-*-windows-gnu|amd64:x86_64-*-mingw32) ;;
arm64:aarch64-*-windows-gnu|arm64:aarch64-*-mingw32) ;;
*)
echo "llvm-mingw reports $target for windows/${{ inputs.windows-arch }}" >&2
exit 1
;;
esac

# Only expose the target-selecting wrappers. The compiler locates its
# own CRT by absolute path, target DLLs cannot run on this Unix host,
# and vcpkg contributes link flags through the pkg-config wrapper.
# This prevents llvm-mingw's unqualified host tools from shadowing the
# LLVM installation used to build the LLGo compiler itself.
echo "$LLGO_MINGW_TARGET_TOOLS" >> "$GITHUB_PATH"
echo "CC=$LLGO_MINGW_TARGET_TOOLS/clang" >> "$GITHUB_ENV"
echo "CXX=$LLGO_MINGW_TARGET_TOOLS/clang++" >> "$GITHUB_ENV"
echo "PKG_CONFIG=$LLGO_MINGW_TARGET_TOOLS/pkg-config" >> "$GITHUB_ENV"
echo "CGO_ENABLED=1" >> "$GITHUB_ENV"
echo "GOOS=windows" >> "$GITHUB_ENV"
echo "GOARCH=${{ inputs.windows-arch }}" >> "$GITHUB_ENV"
echo "LLGO_WINDOWS_TARGET_ACTIVE=1" >> "$GITHUB_ENV"
96 changes: 96 additions & 0 deletions .github/actions/setup-binaryen/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: "Setup Binaryen"
description: "Install a pinned Binaryen release"
inputs:
version:
description: "LLGo Binaryen release tag; update checksums.txt together"
required: false
default: "llgo-v132.3"

runs:
using: "composite"
steps:
- name: Install Binaryen
if: runner.os != 'Windows'
shell: bash
run: |
set -euo pipefail

version="${{ inputs.version }}"
case "$(uname -s):$(uname -m)" in
Linux:x86_64) platform="x86_64-linux" ;;
Linux:aarch64|Linux:arm64) platform="aarch64-linux" ;;
Darwin:x86_64) platform="x86_64-macos" ;;
Darwin:arm64) platform="arm64-macos" ;;
*)
echo "Unsupported Binaryen host: $(uname -s) $(uname -m)" >&2
exit 1
;;
esac

archive="binaryen-${version}-${platform}.tar.gz"
base_url="https://github.com/xgo-dev/binaryen/releases/download/${version}"
expected="$(awk -v platform="$platform" '$1 == platform { print $2 }' "$GITHUB_ACTION_PATH/checksums.txt")"
if [[ ! "$expected" =~ ^[0-9a-fA-F]{64}$ ]]; then
echo "Missing or invalid pinned Binaryen checksum for $platform" >&2
exit 1
fi
cd "$RUNNER_TEMP"
curl --retry 3 --retry-all-errors -fsSLO "${base_url}/${archive}"
if command -v sha256sum >/dev/null; then
printf '%s %s\n' "$expected" "$archive" | sha256sum --check -
else
printf '%s %s\n' "$expected" "$archive" | shasum -a 256 --check -
fi
tar -xzf "$archive" -C "$RUNNER_TEMP"
binaryen_root="$RUNNER_TEMP/binaryen-${version}"
test -x "$binaryen_root/bin/wasm-opt"
test -x "$binaryen_root/bin/wasm-emscripten-finalize"
echo "Binaryen root: $binaryen_root"
"$binaryen_root/bin/wasm-opt" --version
"$binaryen_root/bin/wasm-emscripten-finalize" --version
echo "EM_BINARYEN_ROOT=$binaryen_root" >> "$GITHUB_ENV"
echo "WASMOPT=$binaryen_root/bin/wasm-opt" >> "$GITHUB_ENV"
echo "$binaryen_root/bin" >> "$GITHUB_PATH"

- name: Install Binaryen on Windows
if: runner.os == 'Windows'
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$version = "${{ inputs.version }}"
$platform = switch ($env:PROCESSOR_ARCHITECTURE) {
"AMD64" { "x86_64-windows" }
"ARM64" { "arm64-windows" }
default { throw "Unsupported Binaryen Windows host: $env:PROCESSOR_ARCHITECTURE" }
}
$archive = "binaryen-$version-$platform.tar.gz"
$baseUrl = "https://github.com/xgo-dev/binaryen/releases/download/$version"
$archivePath = Join-Path $env:RUNNER_TEMP $archive
$checksumRows = @(Get-Content -LiteralPath (Join-Path $env:GITHUB_ACTION_PATH "checksums.txt") |
Where-Object { ($_ -split '\s+')[0] -eq $platform })
if ($checksumRows.Count -ne 1) { throw "Missing pinned Binaryen checksum for $platform" }
$expected = ($checksumRows[0] -split '\s+')[1]
if ($expected -notmatch '^[0-9a-fA-F]{64}$') { throw "Invalid pinned Binaryen checksum for $platform" }
& curl.exe --fail --location --retry 3 --retry-all-errors --output $archivePath "$baseUrl/$archive"
if ($LASTEXITCODE -ne 0) { throw "Downloading Binaryen failed with exit code $LASTEXITCODE" }
$actual = (Get-FileHash -Algorithm SHA256 -LiteralPath $archivePath).Hash
if (-not $actual.Equals($expected, [StringComparison]::OrdinalIgnoreCase)) {
throw "Binaryen archive SHA-256 is $actual, want $expected"
}
& tar.exe -xzf $archivePath -C $env:RUNNER_TEMP
if ($LASTEXITCODE -ne 0) { throw "Extracting Binaryen failed with exit code $LASTEXITCODE" }
$binaryenRoot = Join-Path $env:RUNNER_TEMP "binaryen-$version"
$binaryenBin = Join-Path $binaryenRoot "bin"
$wasmOpt = Join-Path $binaryenBin "wasm-opt.exe"
$finalize = Join-Path $binaryenBin "wasm-emscripten-finalize.exe"
if (-not (Test-Path $wasmOpt) -or -not (Test-Path $finalize)) {
throw "Binaryen archive is missing wasm-opt or wasm-emscripten-finalize in $binaryenBin"
}
Write-Host "Binaryen root: $binaryenRoot"
& $wasmOpt --version
if ($LASTEXITCODE -ne 0) { throw "wasm-opt --version failed with exit code $LASTEXITCODE" }
& $finalize --version
if ($LASTEXITCODE -ne 0) { throw "wasm-emscripten-finalize --version failed with exit code $LASTEXITCODE" }
Add-Content -Encoding utf8 $env:GITHUB_ENV "EM_BINARYEN_ROOT=$binaryenRoot"
Add-Content -Encoding utf8 $env:GITHUB_ENV "WASMOPT=$wasmOpt"
Add-Content -Encoding utf8 $env:GITHUB_PATH $binaryenBin
8 changes: 8 additions & 0 deletions .github/actions/setup-binaryen/checksums.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SHA-256 of xgo-dev/binaryen llgo-v132.3 release archives.
# Format: platform SHA-256. Verified against release assets and .sha256 files.
aarch64-linux d7fe6f6558bd668f5bea3c64fd700885854a4847c023cf7a3ce3286158fd077d
arm64-macos 06427b4fdd36a97d28ac5d7d1826a1aaa8af5393a3e4d50cf4f8017462f38b73
arm64-windows 58553d04ab8e67e4b741fb946e444ea11622dda53893054513559f21cbb0c7b8
x86_64-linux c82c9cbf5f53d17f01ca66b40ddd1f2e87dc34591ca562ef4c411824997e5bf8
x86_64-macos 0cef8ddc4c59d7819b92c79be01c7655fd5f244494af474a7a31ed29a05a170c
x86_64-windows b20b4c06fb1ae4da6461f5387958979733c741e6e4a437a31a2821ae6e40bb53
Loading
Loading