cargo-component icon indicating copy to clipboard operation
cargo-component copied to clipboard

Versions of wit-bindgen don't match

Open jsturtevant opened this issue 1 year ago • 1 comments

The version in the project and the version the binding create are off:

cargo component --version
cargo-component-component 0.15.0

cargo component new --lib test-version
cd test-version

cat Cargo.toml
[package]
name = "test-version"
version = "0.1.0"
edition = "2021"

[dependencies]
wit-bindgen-rt = { version = "0.29.0", features = ["bitflags"] }

[lib]
crate-type = ["cdylib"]

[profile.release]
codegen-units = 1
opt-level = "s"
debug = false
strip = true
lto = true

[package.metadata.component]
package = "component:test-version"

[package.metadata.component.dependencies]
cargo component build 

 head src/bindings.rs
// Generated by `wit-bindgen` 0.25.0. DO NOT EDIT!
// Options used:
#[doc(hidden)]
#[allow(non_snake_case)]
pub unsafe fn _export_hello_world_cabi<T: Guest>() -> *mut u8 {
    #[cfg(target_arch = "wasm32")]
    _rt::run_ctors_once();
    let result0 = T::hello_world();
    let ptr1 = _RET_AREA.0.as_mut_ptr().cast::<u8>();
    let vec2 = (result0.into_bytes()).into_boxed_slice();

Notice the versions are not the same (wit-bindgen-rt = { version = "0.29.0", and // Generated by wit-bindgen 0.25.0. DO NOT EDIT!

This doesn't seem to cause a problem with current versions, but I think it could?

jsturtevant avatar Aug 06 '24 23:08 jsturtevant

The new command invokes cargo add --quiet wit-bindgen-rt --features bitflags^1, causing cargo to look for the newest version of that crate (currently 0.29.0), but cargo component itself still uses 0.25.0 of wit-bindgen-rust and wit-bindgen-core^2.

primoly avatar Aug 07 '24 09:08 primoly