Summary
The standalone Wizer project has been merged upstream into Wasmtime as of v39.0.0 (November 20, 2025).
Current State
Our tools/wizer_initializer is currently a placeholder implementation that:
- Detects WebAssembly component vs module format
- Has the architecture for component → module → wizer → component workflow
- Does NOT actually perform pre-initialization (returns input as-is)
The wizer crate dependency was never added due to complex dependency conflicts with Cranelift/Wasmtime in Bazel's crate_universe.
New Upstream Solution
Wasmtime v39.0.0+ provides:
CLI: wasmtime wizer
wasmtime wizer --init-func wizer-initialize input.wasm -o output.wasm
Crate: wasmtime-wizer
- Available as part of the Wasmtime ecosystem
- Better maintained as part of the main Wasmtime project
- Integrated with Wasmtime's component model support
Breaking Changes
- Init function name changed from
wizer.initialize to wizer-initialize (compatible with components)
- The
component-init project was also merged into this
Proposed Migration
Option 1: Use wasmtime wizer CLI (Recommended)
Since we already have a Wasmtime toolchain (//toolchains:wasmtime_toolchain), we can:
- Update
wasm_component_wizer_library rule to invoke wasmtime wizer subcommand
- Remove the
wizer_initializer Rust tool (keep checksum_updater as separate package)
- Update init function references from
wizer.initialize to wizer-initialize
Option 2: Use wasmtime-wizer crate
If library-level integration is needed:
- Add
wasmtime-wizer to crate dependencies
- Implement actual pre-initialization in
wizer_initializer
- Handle component model integration
Tasks
References
Summary
The standalone Wizer project has been merged upstream into Wasmtime as of v39.0.0 (November 20, 2025).
Current State
Our
tools/wizer_initializeris currently a placeholder implementation that:The
wizercrate dependency was never added due to complex dependency conflicts with Cranelift/Wasmtime in Bazel's crate_universe.New Upstream Solution
Wasmtime v39.0.0+ provides:
CLI:
wasmtime wizerCrate:
wasmtime-wizerBreaking Changes
wizer.initializetowizer-initialize(compatible with components)component-initproject was also merged into thisProposed Migration
Option 1: Use
wasmtime wizerCLI (Recommended)Since we already have a Wasmtime toolchain (
//toolchains:wasmtime_toolchain), we can:wasm_component_wizer_libraryrule to invokewasmtime wizersubcommandwizer_initializerRust tool (keepchecksum_updateras separate package)wizer.initializetowizer-initializeOption 2: Use
wasmtime-wizercrateIf library-level integration is needed:
wasmtime-wizerto crate dependencieswizer_initializerTasks
wasm/wasm_component_wizer_library.bzlto usewasmtime wizerchecksum_updaterinto separate package (it has different dependencies)wizer_initializertool once migration completeReferences