Conversation
There was a problem hiding this comment.
Code review: size-build blockers fix
Solid, carefully-reasoned change. The Go logic in applyWASILTOFeatures is correct — including the subtle normalization that lets the required + features supersede negative per-function copies (-atomics → +atomics), the IsDeclaration() skip, and the idempotency guarantee. The nil-Meta hardening in linkedPackageMetas now fails loudly instead of nil-dereferencing, and the C-only runtime-closure fix in dependencies.go is well-commented. The test matrix covers all profile/LTO combinations including the negative cases, and runtest.py's subprocess usage is safe (list args, no shell=True, validated --target choices).
A few maintainability/robustness notes below — none blocking.
Verified clean: performance (the per-function string work is gated behind a cheap early-return guard and only runs on the LTO WASI-W32 path), security (CI-only runner, inputs are developer/CI-controlled), and documentation (README's case list, cold/warm build description, and threaded-gc claims all match the fixtures).
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
LLGo WebAssembly build benchmarks
WebAssembly output sizes
LLGo WebAssembly build measurements
Compared with |
LLGo baseline benchmarks
Program measurements
Core language and compiler benchmarks
Timer runtime benchmarks
Compared with |
e56127e to
d85c64f
Compare
zhouguangyuan0718
left a comment
There was a problem hiding this comment.
Reviewed the C-only deadcode-linking and WASI LTO changes. Focused build/crosscompile tests passed. Validated C-only ESP32C3 builds with both cold and warm caches, and built and executed the WASI Goexit/defer fixture with both Full and Thin LTO. No blocking findings in the reviewed changes.
ea86407 to
58c8fd3
Compare
C-only entry points preload runtime exports without building their archives. Exclude those unbuilt packages from the DCE closure and diagnose missing metadata for packages that are actually linked.
WASI Full/Thin LTO passes the compile/link options, preserves required Wasm function features, and explicitly selects the Wasm exception model. This prevents LLVM 22 from deleting SjLj catch handlers; LLVM 23 fixes the underlying initialization order in llvm/llvm-project#177542.
Add cold/cache-enabled regressions under
test/sizebuild. Also clean up Chrome child processes and allow the Windows GC smoke's creator thread to finish teardown before requiring finalization.Part of #2679. Embedded fmt.Printf still requires target runtime/ABI support.
Validation: targeted build/crosscompile tests; ESP32-C3 C-only DCE ELF builds; WAMR execution of Full/Thin println and Go/C exception cases, Full-LTO fmt.Printf and threaded GC. Linux LLVM 22-built exception and GC modules were independently run under WAMR on macOS.