python decoder workaround

This commit is contained in:
Martin Kavík 2024-07-05 02:09:26 +02:00
parent 5559d24a9f
commit 7435f6c136
5 changed files with 109 additions and 122 deletions

208
Cargo.lock generated
View file

@ -1031,21 +1031,29 @@ dependencies = [
[[package]]
name = "cranelift-bforest"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b6b33d7e757a887989eb18b35712b2a67d96171ec3149d1bfb657b29b7b367c"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"cranelift-entity",
]
[[package]]
name = "cranelift-bitset"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"serde",
"serde_derive",
]
[[package]]
name = "cranelift-codegen"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9acf15cb22be42d07c3b57d7856329cb228b7315d385346149df2566ad5e4aa"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"bumpalo",
"cranelift-bforest",
"cranelift-bitset",
"cranelift-codegen-meta",
"cranelift-codegen-shared",
"cranelift-control",
@ -1062,43 +1070,39 @@ dependencies = [
[[package]]
name = "cranelift-codegen-meta"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e934d301392b73b3f8b0540391fb82465a0f179a3cee7c726482ac4727efcc97"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"cranelift-codegen-shared",
]
[[package]]
name = "cranelift-codegen-shared"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8afb2a2566b3d54b854dfb288b3b187f6d3d17d6f762c92898207eba302931da"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
[[package]]
name = "cranelift-control"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0100f33b704cdacd01ad66ff41f8c5030d57cbff078e2a4e49ab1822591299fa"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"arbitrary",
]
[[package]]
name = "cranelift-entity"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8cfdc315e5d18997093e040a8d234bea1ac1e118a716d3e30f40d449e78207b"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"cranelift-bitset",
"serde",
"serde_derive",
]
[[package]]
name = "cranelift-frontend"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f74b84f16af2e982b0c0c72233503d9d55cbfe3865dbe807ca28dc6642a28b5"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"cranelift-codegen",
"log",
@ -1108,15 +1112,13 @@ dependencies = [
[[package]]
name = "cranelift-isle"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adf306d3dde705fb94bd48082f01d38c4ededc74293a4c007805f610bf08bc6e"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
[[package]]
name = "cranelift-native"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ea0ebdef7aff4a79bcbc8b6495f31315f16b3bf311152f472eaa8d679352581"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"cranelift-codegen",
"libc",
@ -1125,9 +1127,8 @@ dependencies = [
[[package]]
name = "cranelift-wasm"
version = "0.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d549108a1942065cdbac3bb96c2952afa0e1b9a3beff4b08c4308ac72257576d"
version = "0.110.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"cranelift-codegen",
"cranelift-entity",
@ -3423,9 +3424,9 @@ dependencies = [
[[package]]
name = "object"
version = "0.36.0"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434"
checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
dependencies = [
"crc32fast",
"hashbrown 0.14.5",
@ -5926,15 +5927,6 @@ dependencies = [
"syn 2.0.61",
]
[[package]]
name = "wasm-encoder"
version = "0.209.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b4a05336882dae732ce6bd48b7e11fe597293cb72c13da4f35d7d5f8d53b2a7"
dependencies = [
"leb128",
]
[[package]]
name = "wasm-encoder"
version = "0.211.1"
@ -5959,9 +5951,9 @@ dependencies = [
[[package]]
name = "wasmparser"
version = "0.209.1"
version = "0.211.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07035cc9a9b41e62d3bb3a3815a66ab87c993c06fe1cf6b2a3f2a18499d937db"
checksum = "3189cc8a91f547390e2f043ca3b3e3fe0892f7d581767fd4e4b7f3dc3fe8e561"
dependencies = [
"ahash",
"bitflags 2.5.0",
@ -5973,23 +5965,24 @@ dependencies = [
[[package]]
name = "wasmprinter"
version = "0.209.1"
version = "0.211.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ceca8ae6eaa8c7c87b33c25c53bdf299f8c2a764aee1179402ff7652ef3a6859"
checksum = "23708dd7a986bd9b12fca26eff525bbc3659a336e947fd9ed9fdf79086825aec"
dependencies = [
"anyhow",
"termcolor",
"wasmparser",
]
[[package]]
name = "wasmtime"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "786d8b5e7a4d54917c5ebe555b9667337e5f93383f49bddaaeec2eba68093b45"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"addr2line",
"anyhow",
"async-trait",
"bitflags 2.5.0",
"bumpalo",
"cc",
"cfg-if",
@ -6004,8 +5997,7 @@ dependencies = [
"log",
"mach2",
"memfd",
"memoffset",
"object 0.36.0",
"object 0.36.1",
"once_cell",
"paste",
"postcard",
@ -6019,7 +6011,7 @@ dependencies = [
"smallvec 1.13.2",
"sptr",
"target-lexicon",
"wasm-encoder 0.209.1",
"wasm-encoder",
"wasmparser",
"wasmtime-asm-macros",
"wasmtime-cache",
@ -6039,18 +6031,16 @@ dependencies = [
[[package]]
name = "wasmtime-asm-macros"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d697d99c341d4a9ffb72f3af7a02124d233eeb59aee010f36d88e97cca553d5e"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"cfg-if",
]
[[package]]
name = "wasmtime-cache"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "916610f9ae9a6c22deb25bba2e6247ba9f00b093d30620875203b91328a1adfa"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"base64 0.21.7",
@ -6068,9 +6058,8 @@ dependencies = [
[[package]]
name = "wasmtime-component-macro"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b29b462b068e73b5b27fae092a27f47e5937cabf6b26be2779c978698a52feca"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"proc-macro2",
@ -6083,15 +6072,13 @@ dependencies = [
[[package]]
name = "wasmtime-component-util"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9d2912c53d9054984b380dfbd7579f9c3681b2a73b903a56bd71a1c4f175f1e"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
[[package]]
name = "wasmtime-cranelift"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3975deafea000457ba84355c7c0fce0372937204f77026510b7b454f28a3a65"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"cfg-if",
@ -6103,7 +6090,7 @@ dependencies = [
"cranelift-wasm",
"gimli",
"log",
"object 0.36.0",
"object 0.36.1",
"target-lexicon",
"thiserror",
"wasmparser",
@ -6113,23 +6100,24 @@ dependencies = [
[[package]]
name = "wasmtime-environ"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f444e900e848b884d8a8a2949b6f5b92af642a3e663ff8fbe78731143a55be61"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"cpp_demangle",
"cranelift-bitset",
"cranelift-entity",
"gimli",
"indexmap 2.2.6",
"log",
"object 0.36.0",
"object 0.36.1",
"postcard",
"rustc-demangle",
"semver",
"serde",
"serde_derive",
"target-lexicon",
"wasm-encoder 0.209.1",
"wasm-encoder",
"wasmparser",
"wasmprinter",
"wasmtime-component-util",
@ -6138,9 +6126,8 @@ dependencies = [
[[package]]
name = "wasmtime-fiber"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ded58eb2d1bf0dcd2182d0ccd7055c4b10b50d711514f1d73f61515d0fa829d"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"cc",
@ -6153,11 +6140,10 @@ dependencies = [
[[package]]
name = "wasmtime-jit-debug"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9bc54198c6720f098210a85efb3ba8c078d1de4d373cdb6778850a66ae088d11"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"object 0.36.0",
"object 0.36.1",
"once_cell",
"rustix",
"wasmtime-versioned-export-macros",
@ -6165,9 +6151,8 @@ dependencies = [
[[package]]
name = "wasmtime-jit-icache-coherence"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5afe2f0499542f9a4bcfa1b55bfdda803b6ade4e7c93c6b99e0f39dba44b0a91"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"cfg-if",
@ -6177,16 +6162,15 @@ dependencies = [
[[package]]
name = "wasmtime-slab"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a7de1f2bec5bbb35d532e61c85c049dc84ae671df60492f90b954ecf21169e7"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
[[package]]
name = "wasmtime-types"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "412463e9000e14cf6856be48628d2213c20c153e29ffc22b036980c892ea6964"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"cranelift-entity",
"serde",
"serde_derive",
@ -6196,9 +6180,8 @@ dependencies = [
[[package]]
name = "wasmtime-versioned-export-macros"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de5a9bc4f44ceeb168e9e8e3be4e0b4beb9095b468479663a9e24c667e36826f"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"proc-macro2",
"quote",
@ -6207,9 +6190,8 @@ dependencies = [
[[package]]
name = "wasmtime-wasi"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8abb1301089ed8e0b4840f539cba316a73ac382090f1b25d22d8c8eed8df49c7"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"async-trait",
@ -6238,14 +6220,13 @@ dependencies = [
[[package]]
name = "wasmtime-winch"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed4db238a0241df2d15f79ad17b3a37a27f2ea6cb885894d81b42ae107544466"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"cranelift-codegen",
"gimli",
"object 0.36.0",
"object 0.36.1",
"target-lexicon",
"wasmparser",
"wasmtime-cranelift",
@ -6255,9 +6236,8 @@ dependencies = [
[[package]]
name = "wasmtime-wit-bindgen"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70dc077306b38288262e5ba01d4b21532a6987416cdc0aedf04bb06c22a68fdc"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"heck 0.4.1",
@ -6284,7 +6264,7 @@ dependencies = [
"leb128",
"memchr",
"unicode-width",
"wasm-encoder 0.211.1",
"wasm-encoder",
]
[[package]]
@ -6421,9 +6401,8 @@ dependencies = [
[[package]]
name = "wiggle"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29830e5d01c182d24b94092c697aa7ab0ee97d22e78a2bf40ca91eae6ebca5c2"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"async-trait",
@ -6436,9 +6415,8 @@ dependencies = [
[[package]]
name = "wiggle-generate"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "557567f2793508760cd855f7659b7a0b9dc4dbc451f53f1415d6943a15311ade"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"heck 0.4.1",
@ -6451,9 +6429,8 @@ dependencies = [
[[package]]
name = "wiggle-macro"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc26129a8aea20b62c961d1b9ab4a3c3b56b10042ed85d004f8678af0f21ba6e"
version = "23.0.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"proc-macro2",
"quote",
@ -6494,9 +6471,8 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "winch-codegen"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85c6915884e731b2db0d8cf08cb64474cb69221a161675fd3c135f91febc3daa"
version = "0.21.0"
source = "git+https://github.com/bytecodealliance/wasmtime?rev=842fa767acdc26f096ac108605353b8b71e23169#842fa767acdc26f096ac108605353b8b71e23169"
dependencies = [
"anyhow",
"cranelift-codegen",
@ -6856,9 +6832,9 @@ dependencies = [
[[package]]
name = "wit-parser"
version = "0.209.1"
version = "0.211.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e79b9e3c0b6bb589dec46317e645851e0db2734c44e2be5e251b03ff4a51269"
checksum = "a3cc90c50c7ec8a824b5d2cddddff13b2dc12b7a96bf8684d11474223c2ea22f"
dependencies = [
"anyhow",
"id-arena",

View file

@ -23,5 +23,9 @@ serde = { version = "1.0", features = ["derive"] }
tauri = { version = "=2.0.0-beta.22", features = ["macos-private-api", "linux-ipc-protocol"] }
tauri-plugin-window-state = "=2.0.0-beta.9"
tauri-plugin-dialog = "=2.0.0-beta.9"
wasmtime = "22.0.0"
wasmtime-wasi = "22.0.0"
# wasmtime = "22.0.0"
# wasmtime-wasi = "22.0.0"
# ~23.0.0
wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "842fa767acdc26f096ac108605353b8b71e23169" }
wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "842fa767acdc26f096ac108605353b8b71e23169" }

View file

@ -16,19 +16,23 @@ impl WasiView for State {
}
impl component::decoder::host::Host for State {
fn log(&mut self, message: String) -> () {
fn log(&mut self, message: String) {
println!("Decoder: {message}");
}
}
// @TODO Remove / improve comments below
// Testing
// FW.add_decoders(["../test_files/components/rust_decoder/rust_decoder.wasm"])
// FW.add_decoders(["../test_files/components/javascript_decoder/javascript_decoder.wasm"])
// FW.add_decoders(["../test_files/components/python_decoder/python_decoder.wasm"])
pub fn add_decoders(decoder_paths: Vec<DecoderPath>) -> AddedDecodersCount {
println!("decoders in Tauri: {decoder_paths:#?}");
println!("{:#?}", std::env::current_dir());
println!("Current dir: {:#?}", std::env::current_dir().unwrap());
let decoder_paths_len = decoder_paths.len();
// New thread to prevent panics caused by running runtime in runtime
// @TODO replace with Tokio's spawn_blocking?
std::thread::spawn(move || {
if let Err(error) = add_decoder(&decoder_paths[0]) {
eprintln!("add_decoders error: {error:?}");
@ -52,8 +56,9 @@ fn add_decoder(path: &str) -> wasmtime::Result<()> {
table: ResourceTable::new(),
});
let (component, _instance) = Component::instantiate(&mut store, &wasmtime_component, &linker)?;
let component = Component::instantiate(&mut store, &wasmtime_component, &linker)?;
println!("Decoder name: {}", component.component_decoder_decoder().call_name(&mut store)?);
component.component_decoder_decoder().call_init(&mut store)?;
Ok(())

View file

@ -5,7 +5,9 @@ name = "Python Test Decoder"
class Decoder(exports.Decoder):
def init(self) -> None:
host.log(f"{name} initialized")
# @TODO it panics for some reasons
# host.log(f"{name} initialized")
return None
def name(self) -> str:
return name