Skip to content

Conversation

@avrabe
Copy link
Contributor

@avrabe avrabe commented Dec 4, 2025

Summary

Comprehensive toolchain and dependency upgrades aligning all WebAssembly ecosystem components:

Phase 1 - HIGH Priority Binary Tools

  • wasm-tools: 1.240.0 → 1.243.0 (2025-12-03 release)
  • wasi-sdk: 26 → 29
  • wac: 0.8.0 → 0.8.1

Phase 2 - MEDIUM Priority Binary Tools

  • wkg: 0.11.0 → 0.13.0 (2025-11-10 release)
  • wizer: 8.1.0 → 10.0.0 (2025-08-27 release)
  • wasmtime: 28.0.0 → 39.0.1 (2025-11-24 release)

Rust Crate Ecosystem

Aligned all Cargo dependencies with wasm-tools 1.243.0 (instead of older 0.242.0 suggested by dependabot):

  • wasmparser: 0.240 → 0.243
  • wasm-encoder: 0.240/0.241 → 0.243
  • wat: 1.240 → 1.243
  • wit-parser: 0.240 → 0.243
  • wit-component: 0.240 → 0.243
  • wit-bindgen: 0.46.0 → 0.49.0

Files Modified

  • checksums/tools/wasm-tools.json - Added 1.243.0 with all platform checksums
  • checksums/tools/wasmtime.json - Added 39.0.1 with all platform checksums
  • checksums/tools/wizer.json - Added 10.0.0 with all platform checksums
  • checksums/tools/wkg.json - Added 0.13.0 with all platform checksums
  • checksums/registry.bzl - Updated fallback data and compatibility matrix
  • checksums/registry_test.bzl - Updated test expectations
  • toolchains/tool_versions.bzl - Updated TOOL_VERSIONS and TOOL_COMPATIBILITY_MATRIX
  • tools-builder/toolchains/Cargo.toml - Updated wasm ecosystem crates to 0.243
  • tools/wasm_embed_aot/Cargo.toml - Updated wasm-encoder, wasmparser, wit-bindgen

Verification

  • ✅ All 7 registry tests passing
  • ✅ All Cargo builds verified with cargo check
  • ✅ Cross-platform checksums validated for all binary tools

Test plan

  • Verify CI passes (GitHub Actions)
  • Confirm registry tests still passing
  • Verify Bazel build with new tool versions
  • Test C++ component build with new wit-bindgen 0.49.0

avrabe and others added 4 commits December 4, 2025 18:58
This upgrade includes recent C++ bug fixes and feature completeness for WASIP2:
- feat: CPP resources support (PR #1425)
- fix(cpp): escape cpp keywords (PR #1420)
- fix(cpp): multiversion package support (PR #1427)

Changes:
- Update checksums/tools/wit-bindgen.json with 0.49.0 and 0.48.1 checksums
- Update fallback registry data in checksums/registry.bzl
- Update tool version to 0.49.0 in toolchains/tool_versions.bzl
- Add 0.48.1 and 0.49.0 to compatibility matrix for wasm-tools
- Update registry tests to reflect new versions

Benefits:
- Stable C++ binding generation (v0.48.1+ marked as feature complete for WASIP2)
- Bug fixes for C++ keyword handling in generated code
- Better resource support for C++ components
- Multiversion package support fixes

Note: wit-bindgen does not expose CLI flags for specifying C++ standard versions.
Generated bindings are compatible with C++17+ (uses std::optional, std::variant).
The cpp_component rule continues to support cxx_std attribute for user-code compilation.

🤖 Generated with Claude Code

Co-Authored-By: Claude <[email protected]>
Phase 1 (HIGH priority):
- wasm-tools: 1.240.0 → 1.243.0 (2025-12-03 release)
- wasi-sdk: 26 → 29 (already in registry)
- wac: 0.8.0 → 0.8.1 (already in registry)

Phase 2 (MEDIUM priority):
- wkg: 0.11.0 → 0.13.0 (2025-11-10 release)
- wizer: 8.1.0 → 10.0.0 (2025-08-27 release)
- wasmtime: 28.0.0 → 39.0.1 (2025-11-24 release)

Updates:
- Added new versions with SHA256 checksums for all 5 platforms to JSON registries
- Updated TOOL_VERSIONS dict with new version numbers
- Expanded TOOL_COMPATIBILITY_MATRIX to support wasm-tools 1.243.0
- Updated registry.bzl fallback_data to include wac 0.8.1 full platform support
- Updated registry_test.bzl expectations to reflect new versions
- All 7 registry tests passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Dependabot had suggested bumping wasm crates to 0.242.0, but since we
just upgraded wasm-tools to 1.243.0, align all wasm-tools ecosystem
crates to their matching 0.243.0 versions instead:

tools-builder/toolchains/Cargo.toml:
- wasmparser: 0.240 → 0.243
- wasm-encoder: 0.241 → 0.243
- wat: 1.240 → 1.243
- wit-parser: 0.240 → 0.243
- wit-component: 0.240 → 0.243

tools/wasm_embed_aot/Cargo.toml:
- wasm-encoder: 0.240 → 0.243
- wasmparser: 0.240 → 0.243
- wit-bindgen: 0.46.0 → 0.49.0 (aligns with our wit-bindgen upgrade)

All builds verified - cargo check passes successfully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
… and 0.49.0

The embedded runtime in rust_wasm_component_bindgen.bzl was hardcoded to only
accept wit-bindgen CLI versions 0.44.0-0.46.0. This broke after upgrading to
wit-bindgen 0.49.0. The embedded runtime API (Cleanup, CleanupGuard,
run_ctors_once, maybe_link_cabi_realloc) remained compatible throughout these
versions, so we can safely add them to the compatible versions list.

Fixes CI test failures in smoke tests and compatibility tests.
@avrabe avrabe merged commit 609e9af into main Dec 4, 2025
22 of 23 checks passed
@avrabe avrabe deleted the upgrade/toolchain-ecosystem-2025-12 branch December 4, 2025 18:59
avrabe added a commit that referenced this pull request Dec 4, 2025
Critical fix aligning MODULE.bazel extension.register() calls with the
canonical versions in toolchains/tool_versions.bzl:

- wasm_tools: 1.241.2 → 1.243.0
- wkg: 0.12.0 → 0.13.0
- wasi_sdk: 27 → 29
- wizer: 9.0.0 → 10.0.0
- wasmtime: 37.0.2 → 39.0.1

This mismatch was causing:
- Weekly checksum update failures (Issues #229, #213)
- Build pipeline failures
- Version validation errors in tests

All extension registrations now match the upgraded toolchain from PR #240.
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