diff --git a/Cargo.lock b/Cargo.lock index 1618122..9c7d55d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,28 +2,13 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "accelerate-src" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415ed64958754dbe991900f3940677e6a7eefb4d7367afd70d642677b0c7d19d" - -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli 0.28.1", -] - [[package]] name = "addr2line" version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli 0.31.1", + "gimli", ] [[package]] @@ -53,6 +38,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "ambient-authority" version = "0.0.2" @@ -115,19 +106,20 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "arbitrary" @@ -137,9 +129,9 @@ checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", @@ -164,11 +156,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.2", + "addr2line", "cfg-if", "libc", "miniz_oxide", - "object 0.36.5", + "object", "rustc-demangle", "windows-targets", ] @@ -179,15 +171,6 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -196,9 +179,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "block-buffer" @@ -209,35 +192,47 @@ dependencies = [ "generic-array", ] +[[package]] +name = "borsh" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc" +dependencies = [ + "cfg_aliases", +] + [[package]] name = "bstr" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" dependencies = [ "memchr", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +dependencies = [ + "allocator-api2", +] [[package]] name = "bytemuck" -version = "1.20.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", @@ -252,15 +247,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "bytesize" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +checksum = "2d2c12f985c78475a6b8d629afd0c360260ef34cfef52efccdcfd31972f81c2e" [[package]] name = "candle-core" @@ -268,11 +263,9 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db8659ea87ee8197d2fc627348916cce0561330ee7ae3874e771691d3cecb2f" dependencies = [ - "accelerate-src", "byteorder", "gemm", "half", - "libc", "memmap2", "num-traits", "num_cpus", @@ -291,7 +284,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ddce8312032760a6791d6adc9c56dc54fd7c1be38d85dcc4862f1c75228bbc7" dependencies = [ - "accelerate-src", "candle-core", "half", "num-traits", @@ -307,7 +299,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68834a0cacb7e002d1f4abfe26a7cd1237e2ba342fddcf2e30913c4edb96409d" dependencies = [ - "accelerate-src", "byteorder", "candle-core", "candle-nn", @@ -321,17 +312,6 @@ dependencies = [ "wav", ] -[[package]] -name = "candle-wasi-nn" -version = "0.9.4" -dependencies = [ - "candle-core", - "candle-nn", - "candle-transformers", - "tracing", - "wasmtime-wasi-nn", -] - [[package]] name = "cap-fs-ext" version = "3.4.2" @@ -411,9 +391,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.4" +version = "1.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" dependencies = [ "jobserver", "libc", @@ -426,6 +406,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.39" @@ -449,18 +435,15 @@ checksum = "93a719913643003b84bd13022b4b7e703c09342cd03b679c4641c7d2e50dc34d" [[package]] name = "claims" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6995bbe186456c36307f8ea36be3eefe42f49d106896414e18efc4fb2f846b5" -dependencies = [ - "autocfg", -] +checksum = "bba18ee93d577a8428902687bcc2b6b45a56b1981a1f6d779731c86cc4c5db18" [[package]] name = "clap" -version = "4.5.23" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" dependencies = [ "clap_builder", "clap_derive", @@ -468,9 +451,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" dependencies = [ "anstream", "anstyle", @@ -480,11 +463,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn", @@ -496,6 +479,31 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +[[package]] +name = "cli" +version = "0.9.2" +dependencies = [ + "anyhow", + "async-trait", + "bytesize", + "clap", + "dictionary", + "http 1.2.0", + "http-backend", + "http-body-util", + "http-service", + "hyper 1.6.0", + "hyper-tls", + "hyper-util", + "pretty_env_logger", + "runtime", + "secret", + "shellflip", + "smol_str", + "tokio", + "wasmtime", +] + [[package]] name = "clickhouse" version = "0.13.1" @@ -509,7 +517,7 @@ dependencies = [ "futures", "futures-channel", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "lz4_flex", "replace_with", @@ -533,6 +541,12 @@ dependencies = [ "syn", ] +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + [[package]] name = "colorchoice" version = "1.0.3" @@ -576,82 +590,88 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "cranelift-bforest" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf72ceaf38f7d41194d0cf6748214d8ef7389167fe09aad80f87646dbfa325b" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "cranelift-entity", ] +[[package]] +name = "cranelift-bitset" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "cranelift-codegen" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee7fde5cd9173f00ce02c491ee9e306d64740f4b1a697946e0474f389999e13" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "bumpalo", "cranelift-bforest", + "cranelift-bitset", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli 0.28.1", + "gimli", "hashbrown 0.14.5", "log", "regalloc2", + "rustc-hash", + "serde", "smallvec", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49bec6a517e78d4067500dc16acb558e772491a2bcb37301127448adfb8413c" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ead4ea497b2dc2ac31fcabd6d5d0d5dc25b3964814122e343724bdf65a53c843" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" [[package]] name = "cranelift-control" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81e8028c8d711ea7592648e70221f2e54acb8665f7ecd49545f021ec14c3341" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32acd0632ba65c2566e75f64af9ef094bb8d90e58a9fbd33d920977a9d85c054" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ + "cranelift-bitset", "serde", "serde_derive", ] [[package]] name = "cranelift-frontend" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a395a704934aa944ba8939cac9001174b9ae5236f48bc091f89e33bb968336f6" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "cranelift-codegen", "log", @@ -661,37 +681,19 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b325ce81c4ee7082dc894537eb342c37898e14230fe7c02ea945691db3e2dd01" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" [[package]] name = "cranelift-native" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea11f5ac85996fa093075d66397922d4f56085d5d84ec13043d0cd4f159c6818" +version = "0.116.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "cranelift-codegen", "libc", "target-lexicon", ] -[[package]] -name = "cranelift-wasm" -version = "0.107.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4f175d4e299a8edabfbd64fa93c7650836cc8ad7f4879f9bd2632575a1f12d0" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "itertools 0.12.1", - "log", - "smallvec", - "wasmparser 0.202.0", - "wasmtime-types", -] - [[package]] name = "crc32fast" version = "1.4.2" @@ -737,9 +739,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-common" @@ -762,13 +764,10 @@ dependencies = [ [[package]] name = "dictionary" -version = "0.9.4" +version = "0.9.2" dependencies = [ - "anyhow", "async-trait", "reactor", - "tracing", - "wasmtime", ] [[package]] @@ -849,6 +848,18 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + [[package]] name = "encoding_rs" version = "0.8.35" @@ -864,12 +875,22 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn", ] +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", + "regex", +] + [[package]] name = "env_logger" version = "0.10.2" @@ -883,11 +904,24 @@ dependencies = [ "termcolor", ] +[[package]] +name = "env_logger" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" @@ -905,31 +939,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" -[[package]] -name = "fastedge-run" -version = "0.9.4" -dependencies = [ - "anyhow", - "async-trait", - "bytesize", - "clap", - "dictionary", - "http 1.2.0", - "http-backend", - "http-body-util", - "http-service", - "hyper 1.5.2", - "hyper-tls", - "hyper-util", - "pretty_env_logger", - "runtime", - "secret", - "shellflip", - "smol_str", - "tokio", - "wasmtime", -] - [[package]] name = "fastrand" version = "2.3.0" @@ -953,6 +962,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + [[package]] name = "foreign-types" version = "0.3.2" @@ -1092,7 +1107,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "debugid", "fxhash", "serde", @@ -1115,7 +1130,7 @@ dependencies = [ "num-complex", "num-traits", "paste", - "raw-cpuid 10.7.0", + "raw-cpuid", "seq-macro", ] @@ -1130,7 +1145,7 @@ dependencies = [ "num-complex", "num-traits", "paste", - "raw-cpuid 10.7.0", + "raw-cpuid", "seq-macro", ] @@ -1145,7 +1160,7 @@ dependencies = [ "num-complex", "num-traits", "paste", - "raw-cpuid 10.7.0", + "raw-cpuid", "seq-macro", ] @@ -1163,7 +1178,7 @@ dependencies = [ "once_cell", "paste", "pulp", - "raw-cpuid 10.7.0", + "raw-cpuid", "rayon", "seq-macro", "sysctl", @@ -1182,7 +1197,7 @@ dependencies = [ "num-complex", "num-traits", "paste", - "raw-cpuid 10.7.0", + "raw-cpuid", "rayon", "seq-macro", ] @@ -1198,7 +1213,7 @@ dependencies = [ "num-complex", "num-traits", "paste", - "raw-cpuid 10.7.0", + "raw-cpuid", "seq-macro", ] @@ -1213,10 +1228,23 @@ dependencies = [ "num-complex", "num-traits", "paste", - "raw-cpuid 10.7.0", + "raw-cpuid", "seq-macro", ] +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1235,18 +1263,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] -name = "gimli" -version = "0.28.1" +name = "getrandom" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ - "fallible-iterator", - "indexmap", - "stable_deref_trait", + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets", ] [[package]] @@ -1254,12 +1283,17 @@ name = "gimli" version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] [[package]] name = "h2" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ "atomic-waker", "bytes", @@ -1288,15 +1322,6 @@ dependencies = [ "rand_distr", ] -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash", -] - [[package]] name = "hashbrown" version = "0.14.5" @@ -1311,12 +1336,10 @@ name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "foldhash", + "serde", +] [[package]] name = "heck" @@ -1366,16 +1389,14 @@ dependencies = [ [[package]] name = "http-backend" -version = "0.9.4" +version = "0.9.2" dependencies = [ "anyhow", - "async-trait", "claims", "http 1.2.0", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", - "log", "mock-http-connector", "pin-project", "reactor", @@ -1384,7 +1405,6 @@ dependencies = [ "tower-service", "tracing", "tracing-test", - "url", ] [[package]] @@ -1423,34 +1443,27 @@ dependencies = [ [[package]] name = "http-service" -version = "0.9.4" +version = "0.9.2" dependencies = [ "anyhow", "async-trait", "bytes", "bytesize", - "chrono", "claims", - "clickhouse", "dictionary", - "futures", "http 1.2.0", "http-backend", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "nanoid", - "once_cell", - "prometheus", "reactor", "runtime", "secret", - "serde", "shellflip", "smol_str", "test-case", "tokio", - "tokio-util", "tracing", "tracing-test", "wasi-common", @@ -1462,9 +1475,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -1502,9 +1515,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -1529,7 +1542,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -1548,7 +1561,7 @@ dependencies = [ "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.2", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -1567,7 +1580,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -1726,9 +1739,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -1753,19 +1766,19 @@ checksum = "06432fb54d3be7964ecd3649233cddf80db2832f47fec34c01f65b3d9d774983" [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is-terminal" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" dependencies = [ "hermit-abi 0.4.0", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1829,9 +1842,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -1849,11 +1862,17 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.168" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" @@ -1877,15 +1896,15 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" @@ -1905,9 +1924,22 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" + +[[package]] +name = "loom" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] [[package]] name = "lz4_flex" @@ -1973,20 +2005,11 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" dependencies = [ "adler2", ] @@ -1998,7 +2021,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -2021,21 +2044,20 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.8" +version = "0.12.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cf62eb4dd975d2dde76432fb1075c49e3ee2331cf36f1f8fd4b66550d32b6f" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" dependencies = [ "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", - "once_cell", + "loom", "parking_lot", - "quanta", + "portable-atomic", "rustc_version", "smallvec", "tagptr", "thiserror", - "triomphe", "uuid", ] @@ -2050,9 +2072,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -2075,7 +2097,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset 0.6.5", + "memoffset", "pin-utils", ] @@ -2121,38 +2143,29 @@ dependencies = [ [[package]] name = "object" -version = "0.33.0" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8dd6c0cdf9429bce006e1362bfce61fa1bfd8c898a643ed8d2b471934701d3d" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "crc32fast", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "indexmap", "memchr", ] -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -2174,15 +2187,15 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -2192,20 +2205,19 @@ dependencies = [ [[package]] name = "openvino" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24bd3a7ef39968e6a4f1b1206c1c876f9bd50cf739ccbcd69f8539bbac5dcc7a" +checksum = "8f03a664ab0b6917131f5c1a787795fa4d19ad6a334caf9c96284453abdf23fd" dependencies = [ "openvino-finder", "openvino-sys", - "thiserror", ] [[package]] name = "openvino-finder" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d234d1394a413ea8adaf0c40806b9ad1946be6310b441f688840654a331973" +checksum = "34d6bbb3e00d9ad3cd60bca1341665a9cfb2b6764df37c58d921627368ae32fc" dependencies = [ "cfg-if", "log", @@ -2213,11 +2225,11 @@ dependencies = [ [[package]] name = "openvino-sys" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c98acf37fc84ad9d7da4dc6c18f0f60ad209b43a6f555be01f9003d0a2a43d" +checksum = "04315994236727c3573f7e8d8bf857e93ff373ee2e063f08aa78aceac58e3bc5" dependencies = [ - "env_logger", + "env_logger 0.11.6", "libloading", "once_cell", "openvino-finder", @@ -2266,18 +2278,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", @@ -2286,9 +2298,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2302,6 +2314,24 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "postcard" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -2317,15 +2347,15 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c" dependencies = [ - "env_logger", + "env_logger 0.10.2", "log", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -2336,7 +2366,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "hex", "lazy_static", "procfs-core", @@ -2349,7 +2379,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "hex", ] @@ -2378,13 +2408,24 @@ checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] name = "psm" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +checksum = "f58e5423e24c18cc840e1c98370b3993c6649cd1678b4d24318bcf0a083cbe88" dependencies = [ "cc", ] +[[package]] +name = "pulley-interpreter" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" +dependencies = [ + "cranelift-bitset", + "log", + "sptr", + "wasmtime-math", +] + [[package]] name = "pulp" version = "0.18.22" @@ -2397,26 +2438,11 @@ dependencies = [ "reborrow", ] -[[package]] -name = "quanta" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773ce68d0bb9bc7ef20be3536ffe94e223e1f365bd374108b2659fac0c65cfe6" -dependencies = [ - "crossbeam-utils", - "libc", - "once_cell", - "raw-cpuid 11.2.0", - "wasi", - "web-sys", - "winapi", -] - [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -2448,7 +2474,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -2470,15 +2496,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "raw-cpuid" -version = "11.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" -dependencies = [ - "bitflags 2.6.0", -] - [[package]] name = "rayon" version = "1.10.0" @@ -2501,10 +2518,8 @@ dependencies = [ [[package]] name = "reactor" -version = "0.9.4" +version = "0.9.2" dependencies = [ - "anyhow", - "tracing", "wasmtime", ] @@ -2520,7 +2535,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -2529,21 +2544,22 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", "thiserror", ] [[package]] name = "regalloc2" -version = "0.9.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +checksum = "145c1c267e14f20fb0f88aa76a1c5ffec42d592c1d28b3cd9148ae35916158d3" dependencies = [ - "hashbrown 0.13.2", + "allocator-api2", + "bumpalo", + "hashbrown 0.15.2", "log", "rustc-hash", - "slice-group-by", "smallvec", ] @@ -2605,28 +2621,26 @@ checksum = "b9b1a3d5f46d53f4a3478e2be4a5a5ce5108ea58b100dcd139830eae7f79a3a1" [[package]] name = "ring" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] [[package]] name = "runtime" -version = "0.9.4" +version = "0.9.2" dependencies = [ "anyhow", "async-trait", "bytes", "bytesize", - "candle-wasi-nn", "chrono", "claims", "clickhouse", @@ -2658,9 +2672,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -2673,11 +2687,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "itoa", "libc", @@ -2702,9 +2716,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" @@ -2717,11 +2731,17 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "safetensors" @@ -2751,6 +2771,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -2776,13 +2802,12 @@ dependencies = [ [[package]] name = "secret" -version = "0.9.4" +version = "0.9.2" dependencies = [ "anyhow", "async-trait", "reactor", "tracing", - "wasmtime", ] [[package]] @@ -2791,7 +2816,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -2800,9 +2825,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2810,9 +2835,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +dependencies = [ + "serde", +] [[package]] name = "seq-macro" @@ -2822,18 +2850,18 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", @@ -2853,9 +2881,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -2955,24 +2983,22 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slice-group-by" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" - [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +dependencies = [ + "serde", +] [[package]] name = "smol_str" -version = "0.2.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" dependencies = [ + "borsh", "serde", ] @@ -2988,19 +3014,13 @@ dependencies = [ [[package]] name = "spdx" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae30cc7bfe3656d60ee99bf6836f472b0c53dddcbf335e253329abb16e535a2" +checksum = "58b69356da67e2fc1f542c71ea7e654a361a79c938e4424392ecf4fa065d2193" dependencies = [ "smallvec", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "sptr" version = "0.3.2" @@ -3033,9 +3053,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.90" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -3059,7 +3079,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "byteorder", "enum-as-inner", "libc", @@ -3073,7 +3093,7 @@ version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc4592f674ce18521c2a81483873a49596655b179f71c5e05d10c1fe66c78745" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cap-fs-ext", "cap-std", "fd-lock", @@ -3091,18 +3111,19 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "target-lexicon" -version = "0.12.16" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -3192,9 +3213,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -3210,9 +3231,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", @@ -3268,9 +3289,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -3289,9 +3310,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "serde", @@ -3390,10 +3411,15 @@ dependencies = [ ] [[package]] -name = "triomphe" -version = "0.1.11" +name = "trait-variant" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3" +checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "try-lock" @@ -3403,15 +3429,15 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" [[package]] name = "unicode-width" @@ -3462,18 +3488,18 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "8c1f41ffb7cf259f1ecc2876861a17e7142e63ead296f671f81f6ae85903e0d6" dependencies = [ - "getrandom", + "getrandom 0.3.1", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -3513,13 +3539,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "wasi-common" -version = "20.0.2" +name = "wasi" +version = "0.13.3+wasi-0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50088539152d419200c1558482c23b7033b9c5e0c751e97d4338050669ff9f1" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasi-common" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", - "bitflags 2.6.0", + "bitflags 2.8.0", "cap-fs-ext", "cap-rand", "cap-std", @@ -3528,32 +3562,32 @@ dependencies = [ "io-extras", "io-lifetimes", "log", - "once_cell", "rustix", "system-interface", "thiserror", "tracing", "wasmtime", "wiggle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", @@ -3565,9 +3599,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3575,9 +3609,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -3588,44 +3622,48 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-encoder" -version = "0.202.0" +version = "0.221.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfd106365a7f5f7aa3c1916a98cbb3ad477f5ff96ddb130285a91c6e7429e67a" +checksum = "dc8444fe4920de80a4fe5ab564fff2ae58b6b73166b89751f8c6c93509da32e5" dependencies = [ "leb128", + "wasmparser 0.221.3", ] [[package]] name = "wasm-encoder" -version = "0.214.0" +version = "0.223.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff694f02a8d7a50b6922b197ae03883fbf18cdb2ae9fbee7b6148456f5f44041" +checksum = "7a0a96fdeaee8fbeb4bd917fb8157d48c0d61c3b1f4ee4c363c8e8d68b2f4fe8" dependencies = [ "leb128", - "wasmparser 0.214.0", + "wasmparser 0.223.1", ] [[package]] name = "wasm-encoder" -version = "0.221.2" +version = "0.225.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17a3bd88f2155da63a1f2fcb8a56377a24f0b6dfed12733bb5f544e86f690c5" +checksum = "6f7eac0445cac73bcf09e6a97f83248d64356dccf9f2b100199769b6b42464e5" dependencies = [ - "leb128", - "wasmparser 0.221.2", + "leb128fmt", + "wasmparser 0.225.0", ] [[package]] name = "wasm-metadata" -version = "0.214.0" +version = "0.223.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865c5bff5f7a3781b5f92ea4cfa99bb38267da097441cdb09080de1568ef3075" +checksum = "e2e7e37883181704d96b89dbd8f1291be13694c71cd0663aebb94b46d235a377" dependencies = [ "anyhow", "indexmap", @@ -3633,86 +3671,99 @@ dependencies = [ "serde_derive", "serde_json", "spdx", - "wasm-encoder 0.214.0", - "wasmparser 0.214.0", + "url", + "wasm-encoder 0.223.1", + "wasmparser 0.223.1", ] [[package]] name = "wasmparser" -version = "0.202.0" +version = "0.221.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6998515d3cf3f8b980ef7c11b29a9b1017d4cf86b99ae93b546992df9931413" +checksum = "d06bfa36ab3ac2be0dee563380147a5b81ba10dd8885d7fbbc9eb574be67d185" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", + "hashbrown 0.15.2", "indexmap", "semver", + "serde", ] [[package]] name = "wasmparser" -version = "0.214.0" +version = "0.223.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5309c1090e3e84dad0d382f42064e9933fdaedb87e468cc239f0eabea73ddcb6" +checksum = "664b980991ed9a8c834eb528a8979ab1109edcf52dc05dd5751e2cc3fb31035d" dependencies = [ - "ahash", - "bitflags 2.6.0", - "hashbrown 0.14.5", + "bitflags 2.8.0", + "hashbrown 0.15.2", "indexmap", "semver", ] [[package]] name = "wasmparser" -version = "0.221.2" +version = "0.225.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9845c470a2e10b61dd42c385839cdd6496363ed63b5c9e420b5488b77bd22083" +checksum = "36e5456165f81e64cb9908a0fe9b9d852c2c74582aa3fe2be3c2da57f937d3ae" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "indexmap", "semver", ] [[package]] name = "wasmprinter" -version = "0.202.0" +version = "0.221.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab1cc9508685eef9502e787f4d4123745f5651a1e29aec047645d3cac1e2da7a" +checksum = "7343c42a97f2926c7819ff81b64012092ae954c5d83ddd30c9fcdefd97d0b283" dependencies = [ "anyhow", - "wasmparser 0.202.0", + "termcolor", + "wasmparser 0.221.3", ] [[package]] name = "wasmtime" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4af5cb32045daee8476711eb12b8b71275c2dd1fc7a58cc2a11b33ce9205f6a2" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ - "addr2line 0.21.0", + "addr2line", "anyhow", "async-trait", - "bincode", + "bitflags 2.8.0", "bumpalo", + "cc", "cfg-if", "encoding_rs", "fxprof-processed-profile", - "gimli 0.28.1", + "gimli", + "hashbrown 0.14.5", "indexmap", "ittapi", "libc", "log", - "object 0.33.0", + "mach2", + "memfd", + "object", "once_cell", "paste", + "postcard", + "psm", + "pulley-interpreter", "rayon", "rustix", "semver", "serde", "serde_derive", "serde_json", + "smallvec", + "sptr", "target-lexicon", - "wasm-encoder 0.202.0", - "wasmparser 0.202.0", + "trait-variant", + "wasm-encoder 0.221.3", + "wasmparser 0.221.3", + "wasmtime-asm-macros", "wasmtime-cache", "wasmtime-component-macro", "wasmtime-component-util", @@ -3721,47 +3772,45 @@ dependencies = [ "wasmtime-fiber", "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", - "wasmtime-runtime", + "wasmtime-math", "wasmtime-slab", + "wasmtime-versioned-export-macros", "wasmtime-winch", "wat", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-asm-macros" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515c4d24c8b55c0feab67e3d52a42f999fda8b9cfafbd69a82ed6bcf299d26e" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3aa2de7189ea6b3270727d0027790494aec5e7101ca50da3f9549a86628cae4" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "base64", - "bincode", "directories-next", "log", + "postcard", "rustix", "serde", "serde_derive", "sha2", "toml", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "zstd", ] [[package]] name = "wasmtime-component-macro" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794839a710a39a12677c67ff43fec54ef00d0ca6c6f631209a7c5524522221d3" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "proc-macro2", @@ -3769,20 +3818,18 @@ dependencies = [ "syn", "wasmtime-component-util", "wasmtime-wit-bindgen", - "wit-parser 0.202.0", + "wit-parser 0.221.3", ] [[package]] name = "wasmtime-component-util" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7839a1b9e15d17be1cb2a105f18be8e0bbf52bdec7a7cd6eb5d80d4c2cdf74f0" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" [[package]] name = "wasmtime-cranelift" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57ec2d9a4b9990bea53a5dfd689d48663dbd19a46903eaf73e2022b3d1ef20d3" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "cfg-if", @@ -3791,48 +3838,48 @@ dependencies = [ "cranelift-entity", "cranelift-frontend", "cranelift-native", - "cranelift-wasm", - "gimli 0.28.1", + "gimli", + "itertools 0.12.1", "log", - "object 0.33.0", + "object", + "smallvec", "target-lexicon", "thiserror", - "wasmparser 0.202.0", + "wasmparser 0.221.3", "wasmtime-environ", "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-environ" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad72e2e3f7ea5b50fedf66dd36ba24634e4f445c370644683b433d45d88f6126" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", - "bincode", "cpp_demangle", + "cranelift-bitset", "cranelift-entity", - "gimli 0.28.1", + "gimli", "indexmap", "log", - "object 0.33.0", + "object", + "postcard", "rustc-demangle", + "semver", "serde", "serde_derive", + "smallvec", "target-lexicon", - "thiserror", - "wasm-encoder 0.202.0", - "wasmparser 0.202.0", + "wasm-encoder 0.221.3", + "wasmparser 0.221.3", "wasmprinter", "wasmtime-component-util", - "wasmtime-types", ] [[package]] name = "wasmtime-fiber" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dbdf3053e7e7ced0cd4ed76579995b62169a1a43696890584eae2de2e33bf54" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "cc", @@ -3840,86 +3887,47 @@ dependencies = [ "rustix", "wasmtime-asm-macros", "wasmtime-versioned-export-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-jit-debug" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983ca409f2cd66385ce49486c022da0128acb7910c055beb5230998b49c6084c" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ - "object 0.33.0", - "once_cell", + "object", "rustix", "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-jit-icache-coherence" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede45379f3b4d395d8947006de8043801806099a240a26db553919b68e96ab15" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ + "anyhow", "cfg-if", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] -name = "wasmtime-runtime" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65019d29d175c567b84173f2adf3b7a3af6d5592f8fe510dccae55d2569ec0d2" +name = "wasmtime-math" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ - "anyhow", - "cc", - "cfg-if", - "encoding_rs", - "indexmap", - "libc", - "log", - "mach2", - "memfd", - "memoffset 0.9.1", - "paste", - "psm", - "rustix", - "sptr", - "wasm-encoder 0.202.0", - "wasmtime-asm-macros", - "wasmtime-environ", - "wasmtime-fiber", - "wasmtime-jit-debug", - "wasmtime-slab", - "wasmtime-versioned-export-macros", - "windows-sys 0.52.0", + "libm", ] [[package]] name = "wasmtime-slab" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6585868f5c427c3e9d2a8c0c3354e6d7d4518a0d17723ab25a0c1eebf5d5b4" - -[[package]] -name = "wasmtime-types" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d5381ff174faded38c7b2085fbe430dff59489c87a91403354d710075750fb" -dependencies = [ - "cranelift-entity", - "serde", - "serde_derive", - "thiserror", - "wasmparser 0.202.0", -] +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" [[package]] name = "wasmtime-versioned-export-macros" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3b70422fdfa915c903f003b8b42554a8ae1aa0c6208429d8314ebf5721f3ac" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "proc-macro2", "quote", @@ -3928,13 +3936,12 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08dd00241969c3be8c5dfdedbb8d9c5af6783e514ffbf8f7522036561bd1337a" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "async-trait", - "bitflags 2.6.0", + "bitflags 2.8.0", "bytes", "cap-fs-ext", "cap-net-ext", @@ -3945,23 +3952,22 @@ dependencies = [ "futures", "io-extras", "io-lifetimes", - "once_cell", "rustix", "system-interface", "thiserror", "tokio", "tracing", + "trait-variant", "url", "wasmtime", "wiggle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-wasi-http" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e059ba06fd900270bdfa22ab8d197b492b7020896bf56bf12ff710fe033e0cdb" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "async-trait", @@ -3970,7 +3976,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "rustls", "tokio", "tokio-rustls", @@ -3982,31 +3988,33 @@ dependencies = [ [[package]] name = "wasmtime-wasi-nn" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "550e63fe1048ab3ce627b324fbd321abbea6f39a3c6463d82ae432886b500f05" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", + "candle-core", + "candle-nn", + "candle-transformers", "openvino", "thiserror", "tracing", "walkdir", "wasmtime", "wiggle", + "windows 0.52.0", ] [[package]] name = "wasmtime-winch" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "996360967b5196dec20ddcfce499ce4dc80cc925c088b0f2b376d29b96833a6a" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "cranelift-codegen", - "gimli 0.28.1", - "object 0.33.0", + "gimli", + "object", "target-lexicon", - "wasmparser 0.202.0", + "wasmparser 0.221.3", "wasmtime-cranelift", "wasmtime-environ", "winch-codegen", @@ -4014,14 +4022,13 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01840c0cfbbb01664c796e3f4edbd656e58f9d76db083c7e7c6bba59ea657a96" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", - "heck 0.4.1", + "heck", "indexmap", - "wit-parser 0.202.0", + "wit-parser 0.221.3", ] [[package]] @@ -4035,24 +4042,24 @@ dependencies = [ [[package]] name = "wast" -version = "221.0.2" +version = "225.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc4470b9de917ba199157d1f0ae104f2ae362be728c43e68c571c7715bd629e" +checksum = "c61496027ff707f9fa9e0b22c34ec163eb7adb1070df565e32a9180a76e4300b" dependencies = [ "bumpalo", - "leb128", + "leb128fmt", "memchr", "unicode-width", - "wasm-encoder 0.221.2", + "wasm-encoder 0.225.0", ] [[package]] name = "wat" -version = "1.221.2" +version = "1.225.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1f3c6d82af47286494c6caea1d332037f5cbeeac82bbf5ef59cb8c201c466e" +checksum = "89e72a33942234fd0794bcdac30e43b448de3187512414267678e511c6755f11" dependencies = [ - "wast 221.0.2", + "wast 225.0.0", ] [[package]] @@ -4064,34 +4071,23 @@ dependencies = [ "riff", ] -[[package]] -name = "web-sys" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] [[package]] name = "wiggle" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93fc3510978a905f931d74784ed8685bd6453e18ad8f92809e793d48827e3cd" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "async-trait", - "bitflags 2.6.0", + "bitflags 2.8.0", "thiserror", "tracing", "wasmtime", @@ -4100,12 +4096,11 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec3909e70f36066526ad3b2abb4855ab836f8a6b293449582563ac50d651083" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", - "heck 0.4.1", + "heck", "proc-macro2", "quote", "shellexpand", @@ -4115,9 +4110,8 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "20.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c31124572ab16401c491c0d4fb5fe5d17dab65fcfcc56d7d8efb1c1e56a3db" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "proc-macro2", "quote", @@ -4158,21 +4152,43 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefeb84a0f39227cf2eb665cf348e6150ebf3372d08adff03264064ab590fdf4" +version = "29.0.1" +source = "git+https://github.com/G-Core/wasmtime.git?branch=wasi_nn_candle_backend#f79220e9b613bcd0381dd4aec26695686c170aaf" dependencies = [ "anyhow", "cranelift-codegen", - "gimli 0.28.1", + "gimli", "regalloc2", "smallvec", "target-lexicon", - "wasmparser 0.202.0", + "thiserror", + "wasmparser 0.221.3", "wasmtime-cranelift", "wasmtime-environ", ] +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-implement 0.52.0", + "windows-interface 0.52.0", + "windows-targets", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -4182,6 +4198,82 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result", + "windows-strings", + "windows-targets", +] + +[[package]] +name = "windows-implement" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -4266,9 +4358,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" dependencies = [ "memchr", ] @@ -4279,34 +4371,43 @@ version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f3fd376f71958b862e7afb20cfe5a22830e1963462f3a17f49d82a6c1d1f42d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "windows-sys 0.59.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "wit-component" -version = "0.214.0" +version = "0.223.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9fd46f0e783bf80f1ab7291f9d442fa5553ff0e96cdb71964bd8859b734b55" +checksum = "3fc2fcc52a79f6f010a89c867e53e06d4227f86c58984add3e37f32b8e7af5f0" dependencies = [ "anyhow", - "bitflags 2.6.0", + "bitflags 2.8.0", "indexmap", "log", "serde", "serde_derive", "serde_json", - "wasm-encoder 0.214.0", + "wasm-encoder 0.223.1", "wasm-metadata", - "wasmparser 0.214.0", - "wit-parser 0.214.0", + "wasmparser 0.223.1", + "wit-parser 0.223.1", ] [[package]] name = "wit-parser" -version = "0.202.0" +version = "0.221.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744237b488352f4f27bca05a10acb79474415951c450e52ebd0da784c1df2bcc" +checksum = "896112579ed56b4a538b07a3d16e562d101ff6265c46b515ce0c701eef16b2ac" dependencies = [ "anyhow", "id-arena", @@ -4317,14 +4418,14 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.202.0", + "wasmparser 0.221.3", ] [[package]] name = "wit-parser" -version = "0.214.0" +version = "0.223.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681d526d6ea42e28f9afe9eae2b50e0b0a627aef8822c75eb04078db84d03e57" +checksum = "263fde17f1fbe55a413f16eb59094bf751795c6da469a05c3d45ea6c77df6b40" dependencies = [ "anyhow", "id-arena", @@ -4335,7 +4436,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.214.0", + "wasmparser 0.223.1", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 1d66a72..d2f5e15 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,15 +13,18 @@ tokio = { version = "1", features = ["full"] } tokio-util = { version = "0.7", features = ["codec"] } tracing = "0.1" hyper = { version = "1", features = ["full"] } -http = "1.1.0" +http = "1.2.0" async-trait = "0.1" -wasmtime = { version = "20.0.2" } -wasmtime-wasi = { version = "20.0.2" } -wasi-common = { version = "20.0.2" } -wasmtime-wasi-nn = { version = "20.0.2" } +wasmtime = { version = "29.0.1", git = "https://github.com/G-Core/wasmtime.git", branch = "wasi_nn_candle_backend"} +wasmtime-wasi = { version = "29.0.1", git = "https://github.com/G-Core/wasmtime.git", branch = "wasi_nn_candle_backend"} +wasi-common = { version = "29.0.1", git = "https://github.com/G-Core/wasmtime.git", branch = "wasi_nn_candle_backend"} +wasmtime-wasi-nn = { version = "29.0.1", features = ["openvino", "candle"], git = "https://github.com/G-Core/wasmtime.git", branch = "wasi_nn_candle_backend"} +wasmtime-wasi-http = { version = "29.0.1", git = "https://github.com/G-Core/wasmtime.git", branch = "wasi_nn_candle_backend"} +wasmtime-environ = { version = "29.0.1", git = "https://github.com/G-Core/wasmtime.git", branch = "wasi_nn_candle_backend"} + clap = { version = "4", features = ["derive"] } moka = { version = "0.12", features = ["sync"] } -smol_str = { version = "0.2.1", features = ["serde"] } +smol_str = { version = "0.3.2", features = ["serde"] } anyhow = "1.0" [workspace.lints.rust] diff --git a/crates/candle-wasi-nn/Cargo.toml b/crates/candle-wasi-nn/Cargo.toml deleted file mode 100644 index ab6480c..0000000 --- a/crates/candle-wasi-nn/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "candle-wasi-nn" -version.workspace = true -edition.workspace = true -publish.workspace = true -authors.workspace = true - -[features] -metal = [] -cuda = [] - -[dependencies] -wasmtime-wasi-nn = { workspace = true } -tracing = { workspace = true } -candle-nn = "0.3" - -[target.'cfg(target_os = "macos")'.dependencies] -candle-core = { version = "0.3", features = ["accelerate"] } -candle-transformers = { version = "0.3", features = ["accelerate"] } - -[target.'cfg(not(target_os = "macos"))'.dependencies] -candle-core = { version = "0.3" } -candle-transformers = { version = "0.3" } diff --git a/crates/candle-wasi-nn/src/lib.rs b/crates/candle-wasi-nn/src/lib.rs deleted file mode 100644 index be17d91..0000000 --- a/crates/candle-wasi-nn/src/lib.rs +++ /dev/null @@ -1,201 +0,0 @@ -use std::fs::File; -use std::io; -use std::io::{Cursor, Read}; -use std::path::Path; -use std::sync::Arc; -use std::time::Instant; - -use candle::Device; -use candle_core as candle; -use candle_core::{DType, IndexOp}; -use candle_nn::var_builder::VarBuilder; -use candle_transformers::models::{ - llama2_c::{Cache, Config, Llama}, - llama2_c_weights::TransformerWeights, -}; -use tracing::{trace, warn}; -use wasmtime_wasi_nn::{ - backend::{BackendError, BackendExecutionContext, BackendFromDir, BackendGraph, BackendInner}, - wit::types::{ExecutionTarget, GraphEncoding, Tensor}, - {ExecutionContext, Graph}, -}; - -fn io_error(error: io::Error) -> BackendError { - BackendError::BackendAccess(error.into()) -} - -fn candle_error(error: candle::Error) -> BackendError { - BackendError::BackendAccess(error.into()) -} - -enum Model { - Llama(Llama), -} - -impl Model { - fn forward(&self, xs: &candle::Tensor, pos: usize) -> Result { - match self { - Self::Llama(l) => Ok(l.forward(xs, pos).map_err(candle_error)?), - } - } -} - -#[derive(Default)] -pub struct CandleBackend; - -unsafe impl Send for CandleBackend {} - -unsafe impl Sync for CandleBackend {} - -impl BackendInner for CandleBackend { - fn encoding(&self) -> GraphEncoding { - GraphEncoding::Autodetect - } - - fn load(&mut self, builders: &[&[u8]], target: ExecutionTarget) -> Result { - let s = Instant::now(); - if builders.len() != 1 { - return Err(BackendError::InvalidNumberOfBuilders(1, builders.len())); - } - let device = device(target).map_err(candle_error)?; - let mut cursor = Cursor::new(builders[0]); - let config = Config::from_reader(&mut cursor).map_err(candle_error)?; - let weights = - TransformerWeights::from_reader(&mut cursor, &config, &device).map_err(candle_error)?; - let vb = weights - .var_builder(&config, &device) - .map_err(candle_error)?; - let box_: Box = Box::new(CandleGraph { device, config, vb }); - trace!("load graph: {:.0?}", s.elapsed()); - Ok(box_.into()) - } - - fn as_dir_loadable(&mut self) -> Option<&mut dyn BackendFromDir> { - Some(self) - } -} - -impl BackendFromDir for CandleBackend { - fn load_from_dir( - &mut self, - path: &Path, - target: ExecutionTarget, - ) -> Result { - trace!(?path, ?target, "load_from_dir: model.bin"); - let s = Instant::now(); - let mut file = File::open(path.join("model.bin")).map_err(io_error)?; - let mut weights = vec![]; - file.read_to_end(&mut weights).map_err(io_error)?; - trace!("read file: {:.0?}", s.elapsed()); - self.load(&[&weights], target) - } -} - -struct CandleGraph { - device: Device, - config: Config, - vb: VarBuilder<'static>, -} - -unsafe impl Send for CandleGraph {} - -unsafe impl Sync for CandleGraph {} - -impl BackendGraph for CandleGraph { - fn init_execution_context(&self) -> Result { - let _s = Instant::now(); - let tensor = - candle::Tensor::zeros((2, 3), DType::U32, &self.device).map_err(candle_error)?; - let vb = self.vb.clone(); - let cache = Cache::new(true, &self.config, vb.pp("rot")).map_err(candle_error)?; - let model = - Model::Llama(Llama::load(vb, &cache, self.config.clone()).map_err(candle_error)?); - let model = Arc::new(model); - let context: Box = Box::new(CandleExecutionContext { - device: self.device.clone(), - model, - tensor, - }); - trace!("init_execution_context: {:.0?}", _s.elapsed()); - Ok(context.into()) - } -} - -struct CandleExecutionContext { - device: Device, - model: Arc, - tensor: candle_core::Tensor, -} - -impl BackendExecutionContext for CandleExecutionContext { - fn set_input(&mut self, index: u32, tensor: &Tensor) -> Result<(), BackendError> { - trace!(index, ?tensor, "set_input"); - // transmute array of bytes to [u32] - let tokens = unsafe { - core::slice::from_raw_parts( - tensor.data.as_ptr().cast::(), - tensor.data.len() / std::mem::size_of::(), - ) - }; - let context_size = if index > 0 { 1 } else { tokens.len() }; - let context = &tokens[tokens.len().saturating_sub(context_size)..]; - self.tensor = candle::Tensor::new(context, &self.device) - .map_err(candle_error)? - .unsqueeze(0) - .map_err(candle_error)?; - trace!("tensor: {:?}", self.tensor); - Ok(()) - } - - fn compute(&mut self) -> Result<(), BackendError> { - let _s = Instant::now(); - let index_pos = 0; - trace!("forward input: {:?}", self.tensor); - self.tensor = self.model.forward(&self.tensor, index_pos)?; - trace!("forward output: {:?} in {:.0?}", self.tensor, _s.elapsed()); - Ok(()) - } - - fn get_output(&mut self, index: u32, destination: &mut [u8]) -> Result { - trace!(index, ?self.tensor, "get_output"); - let len = self.tensor.dim(index as usize).map_err(candle_error)? - 1; - let tensor = self.tensor.i((0, len)).map_err(candle_error)?; - let blob = tensor.to_vec1::().map_err(candle_error)?; - if (blob.len() * 4) > destination.len() { - return Err(BackendError::NotEnoughMemory(blob.len())); - } - let data_slice = blob.as_slice(); - let dest = unsafe { - core::slice::from_raw_parts( - data_slice.as_ptr().cast::(), - std::mem::size_of_val(data_slice), - ) - }; - - // Copy the tensor data into the destination buffer. - destination[..dest.len()].copy_from_slice(dest); - Ok(dest.len() as u32) - } -} - -fn device(target: ExecutionTarget) -> candle::Result { - match target { - ExecutionTarget::Cpu => Ok(Device::Cpu), - ExecutionTarget::Gpu => { - if cfg!(feature = "cuda") { - Ok(Device::new_cuda(0)?) - } else { - warn!("Running on CPU, to run on GPU, build this example with `--features cuda`"); - Ok(Device::Cpu) - } - } - ExecutionTarget::Tpu => { - if cfg!(feature = "metal") { - Ok(Device::new_metal(0)?) - } else { - warn!("Running on CPU, to run on TPU, build this example with `--features metal`"); - Ok(Device::Cpu) - } - } - } -} diff --git a/crates/dictionary/Cargo.toml b/crates/dictionary/Cargo.toml index dad73a0..94e2cfa 100644 --- a/crates/dictionary/Cargo.toml +++ b/crates/dictionary/Cargo.toml @@ -8,10 +8,7 @@ description = "dictionary host function" [dependencies] reactor = { path = "../reactor" } -anyhow = {workspace = true} -tracing = {workspace = true} async-trait = {workspace = true} -wasmtime = {workspace = true} [lints] workspace = true diff --git a/crates/dictionary/src/lib.rs b/crates/dictionary/src/lib.rs index 10d7ed9..0fabee3 100644 --- a/crates/dictionary/src/lib.rs +++ b/crates/dictionary/src/lib.rs @@ -1,4 +1,3 @@ -use async_trait::async_trait; use reactor::gcore::fastedge::dictionary; use std::collections::HashMap; use std::ops::{Deref, DerefMut}; @@ -8,10 +7,9 @@ pub struct Dictionary { inner: HashMap, } -#[async_trait] impl dictionary::Host for Dictionary { - async fn get(&mut self, name: String) -> anyhow::Result> { - Ok(self.inner.get(&name).map(|v| v.to_string())) + async fn get(&mut self, name: String) -> Option { + self.inner.get(&name).map(|v| v.to_string()) } } diff --git a/crates/http-backend/Cargo.toml b/crates/http-backend/Cargo.toml index ee41ac5..e4273e5 100644 --- a/crates/http-backend/Cargo.toml +++ b/crates/http-backend/Cargo.toml @@ -9,20 +9,17 @@ description = "Client component for outbound http requests" [dependencies] reactor = { path = "../reactor" } http = {workspace = true} -async-trait = {workspace = true} anyhow = {workspace = true} tracing = {workspace = true} hyper = { workspace = true } tokio = { workspace = true } -hyper-util = { version = "0.1.3", features = ["client", "client-legacy", "http1", "tokio"] } -http-body-util = "0.1.1" -pin-project = "1.1.3" -log = "0.4.20" -url = "2.5.0" -tower-service = "0.3.2" +hyper-util = { version = "0.1.10", features = ["client", "client-legacy", "http1", "tokio"] } +http-body-util = "0.1.2" +pin-project = "1.1.8" +tower-service = "0.3.3" smol_str = {workspace = true} [dev-dependencies] -claims = "0.7" +claims = "0.8" tracing-test = "0.2" mock-http-connector = "0.3" diff --git a/crates/http-backend/src/lib.rs b/crates/http-backend/src/lib.rs index 2f01e9e..08c4a80 100644 --- a/crates/http-backend/src/lib.rs +++ b/crates/http-backend/src/lib.rs @@ -5,7 +5,6 @@ use std::task::{Context, Poll}; use std::time::Duration; use anyhow::{anyhow, Error, Result}; -use async_trait::async_trait; use http::{header, uri::Scheme, HeaderMap, HeaderName, Uri}; use http_body_util::{BodyExt, Full}; use hyper::body::Bytes; @@ -268,21 +267,26 @@ impl Backend { } } -#[async_trait] impl Host for Backend where C: Connect + Clone + Send + Sync + 'static, { - async fn send_request(&mut self, req: Request) -> Result> { + async fn send_request(&mut self, req: Request) -> Result { // check the limit of sub requests if self.max_sub_requests == 0 { - return Ok(Err(HttpError::TooManyRequests)); + return Err(HttpError::TooManyRequests); } else { self.max_sub_requests -= 1; } - let request = self.make_request(req)?; - let res = self.client.request(request).await?; + let request = self + .make_request(req) + .map_err(|_| HttpError::RequestError)?; + let res = self + .client + .request(request) + .await + .map_err(|_| HttpError::RequestError)?; let status = res.status().as_u16(); let (parts, body) = res.into_parts(); @@ -304,16 +308,20 @@ where None }; - let body_bytes = body.collect().await?.to_bytes(); + let body_bytes = body + .collect() + .await + .map_err(|_| HttpError::RequestError)? + .to_bytes(); let body = Some(body_bytes.to_vec()); trace!(?status, ?headers, len = body_bytes.len(), "reply"); - Ok(Ok(Response { + Ok(Response { status, headers, body, - })) + }) } } diff --git a/crates/http-service/Cargo.toml b/crates/http-service/Cargo.toml index 26a2bd2..984e03b 100644 --- a/crates/http-service/Cargo.toml +++ b/crates/http-service/Cargo.toml @@ -13,13 +13,13 @@ stats = ["runtime/stats"] [dependencies] anyhow = { workspace = true } tokio = { workspace = true } -tokio-util = { workspace = true } hyper = { workspace = true } http = { workspace = true } wasmtime = { workspace = true } wasmtime-wasi = { workspace = true } wasmtime-wasi-nn = { workspace = true } wasi-common = { workspace = true } +wasmtime-wasi-http = { workspace = true } tracing = { workspace = true } smol_str = { workspace = true } reactor = { path = "../reactor" } @@ -29,23 +29,16 @@ dictionary = { path = "../dictionary" } secret = { path = "../secret" } nanoid = "0.4" bytesize = "1.3.0" -futures = "0.3.30" -once_cell = "1.19" -prometheus = { version = "0.13.3", features = ["process"], optional = true } -serde = "1.0" -clickhouse = { version = "0.13", optional = true } -chrono = "0.4" async-trait = "0.1" -wasmtime-wasi-http = "20.0.2" hyper-util = { version = "0.1", features = ["server", "server-graceful"] } http-body-util = "0.1" -bytes = "1.6" +bytes = "1.10" [target.'cfg(target_family = "unix")'.dependencies] shellflip = "2.1.1" [dev-dependencies] -claims = "0.7" +claims = "0.8" test-case = "3.3" tracing-test = "0.2" diff --git a/crates/http-service/src/executor/http.rs b/crates/http-service/src/executor/http.rs index 704fa10..2daf8c8 100644 --- a/crates/http-service/src/executor/http.rs +++ b/crates/http-service/src/executor/http.rs @@ -78,9 +78,8 @@ where let properties = crate::executor::get_properties(&parts.headers); - let store_builder = self.store_builder.to_owned().with_properties(properties); - let wasi_nn = self.store_builder.make_wasi_nn_ctx()?; - let mut http_backend = self.backend.to_owned(); + let store_builder = self.store_builder.clone().with_properties(properties); + let mut http_backend = self.backend.clone(); http_backend .propagate_headers(parts.headers.clone()) @@ -89,7 +88,6 @@ where let propagate_header_names = http_backend.propagate_header_names(); let backend_uri = http_backend.uri(); let state = HttpState { - wasi_nn, http_backend, uri: backend_uri, propagate_headers: parts.headers, @@ -101,11 +99,15 @@ where let mut store = store_builder.build(state)?; let instance = self.instance_pre.instantiate_async(&mut store).await?; + let http_handler = instance.get_export(&mut store, None, "gcore:fastedge/http-handler"); + let process = instance + .get_export(&mut store, http_handler.as_ref(), "process") + .ok_or_else(|| anyhow!("gcore:fastedge/http-handler instance not found"))?; let func = instance - .exports(&mut store) - .instance("gcore:fastedge/http-handler") - .ok_or_else(|| anyhow!("gcore:fastedge/http-handler instance not found"))? - .typed_func::<(fastedge::http::Request,), (fastedge::http::Response,)>("process")?; + .get_typed_func::<(fastedge::http::Request,), (fastedge::http::Response,)>( + &mut store, process, + )?; + let duration = Duration::from_millis(store.data().timeout); let func = tokio::time::timeout(duration, func.call_async(&mut store, (request,))); let (resp,) = match func.await? { diff --git a/crates/http-service/src/executor/wasi_http.rs b/crates/http-service/src/executor/wasi_http.rs index 4dd91d9..86a0cd2 100644 --- a/crates/http-service/src/executor/wasi_http.rs +++ b/crates/http-service/src/executor/wasi_http.rs @@ -1,8 +1,9 @@ +use std::sync::Arc; use std::time::{Duration, Instant}; use crate::executor::HttpExecutor; use crate::state::HttpState; -use ::http::{header, uri::Scheme, HeaderMap, Request, Response, StatusCode, Uri}; +use ::http::{header, HeaderMap, Request, Response, StatusCode, Uri}; use anyhow::{anyhow, bail, Context}; use async_trait::async_trait; use bytesize::ByteSize; @@ -13,6 +14,8 @@ use hyper::body::Body; use runtime::{store::StoreBuilder, InstancePre}; use secret::{Secret, SecretStrategy}; use smol_str::ToSmolStr; +use wasmtime_wasi_http::bindings::http::types::Scheme; +use wasmtime_wasi_http::bindings::ProxyPre; use wasmtime_wasi_http::{body::HyperOutgoingBody, WasiHttpView}; /// Execute context used by ['HttpService'] @@ -56,7 +59,7 @@ where // fix relative uri to absolute if parts.uri.scheme().is_none() { let mut uparts = parts.uri.clone().into_parts(); - uparts.scheme = Some(Scheme::HTTP); + //uparts.scheme = Some(http::Scheme::HTTP); if uparts.authority.is_none() { uparts.authority = server_name.parse().ok() } @@ -74,10 +77,6 @@ where let properties = crate::executor::get_properties(&parts.headers); let store_builder = self.store_builder.to_owned().with_properties(properties); - let wasi_nn = self - .store_builder - .make_wasi_nn_ctx() - .context("make_wasi_nn_ctx")?; let mut http_backend = self.backend.to_owned(); http_backend @@ -101,7 +100,6 @@ where let backend_uri = http_backend.uri(); let state = HttpState { - wasi_nn, http_backend, uri: backend_uri, propagate_headers, @@ -116,16 +114,17 @@ where let request = hyper::Request::from_parts(parts, body); let req = store .data_mut() - .new_incoming_request(request) + .new_incoming_request(Scheme::Http, request) .context("new incoming request")?; let out = store .data_mut() .new_response_outparam(sender) .context("new response outparam")?; + let instance_pre = + Arc::into_inner(instance_pre).ok_or(anyhow!("dropped instance_pre ref"))?; + let proxy_pre = ProxyPre::new(instance_pre)?; - let (proxy, _inst) = - wasmtime_wasi_http::proxy::Proxy::instantiate_pre(&mut store, instance_pre.as_ref()) - .await?; + let proxy = proxy_pre.instantiate_async(&mut store).await?; let duration = Duration::from_millis(store.data().timeout); diff --git a/crates/http-service/src/lib.rs b/crates/http-service/src/lib.rs index f7e93a7..035bb38 100644 --- a/crates/http-service/src/lib.rs +++ b/crates/http-service/src/lib.rs @@ -1,6 +1,7 @@ use std::net::SocketAddr; use std::sync::Arc; use std::time::Duration; +use wasmtime_wasi_nn::wit::WasiNnView; pub use crate::executor::ExecutorFactory; use crate::executor::HttpExecutor; @@ -179,11 +180,14 @@ where fn configure_engine(builder: &mut WasmEngineBuilder) -> Result<()> { let linker = builder.component_linker_ref(); - wasmtime_wasi_nn::wit::ML::add_to_linker(linker, |data| &mut data.as_mut().wasi_nn)?; // Allow re-importing of `wasi:clocks/wall-clock@0.2.0` wasmtime_wasi::add_to_linker_async(linker)?; linker.allow_shadowing(true); - wasmtime_wasi_http::proxy::add_to_linker(linker)?; + wasmtime_wasi_http::add_to_linker_async(linker)?; + + wasmtime_wasi_nn::wit::add_to_linker(linker, |data: &mut runtime::Data| { + WasiNnView::new(&mut data.table, &mut data.wasi_nn) + })?; reactor::gcore::fastedge::http_client::add_to_linker(linker, |data| { &mut data.as_mut().http_backend diff --git a/crates/http-service/src/state.rs b/crates/http-service/src/state.rs index 60a52ab..74d2a2c 100644 --- a/crates/http-service/src/state.rs +++ b/crates/http-service/src/state.rs @@ -8,10 +8,8 @@ use runtime::BackendRequest; use secret::{Secret, SecretStrategy}; use smol_str::{SmolStr, ToSmolStr}; use tracing::instrument; -use wasmtime_wasi_nn::WasiNnCtx; pub struct HttpState { - pub(super) wasi_nn: WasiNnCtx, pub(super) http_backend: Backend, pub(super) uri: Uri, pub(super) propagate_headers: HeaderMap, diff --git a/crates/reactor/Cargo.toml b/crates/reactor/Cargo.toml index 4edab21..9dfb042 100644 --- a/crates/reactor/Cargo.toml +++ b/crates/reactor/Cargo.toml @@ -8,5 +8,3 @@ description = "Main reactor module with world exports and all generated bindgen [dependencies] wasmtime = { workspace = true, features = ["component-model"] } -tracing = {workspace = true} -anyhow = { workspace = true } diff --git a/crates/runtime/Cargo.toml b/crates/runtime/Cargo.toml index 22c0253..6c7ed81 100644 --- a/crates/runtime/Cargo.toml +++ b/crates/runtime/Cargo.toml @@ -19,27 +19,26 @@ wasmtime = { workspace = true } wasmtime-wasi = { workspace = true } wasi-common = { workspace = true } wasmtime-wasi-nn = { workspace = true } +wasmtime-wasi-http = { workspace = true } +wasmtime-environ = { workspace = true } smol_str = { workspace = true } moka = { workspace = true } http = {workspace = true} -wasmtime-environ = "20.0.2" -wit-component = "0.214.0" +wit-component = "0.223.0" tracing = { workspace = true } bytesize = "1" http-backend = { path = "../http-backend" } -candle-wasi-nn = { path = "../candle-wasi-nn" } async-trait = "0.1" -bytes = "1.5" +bytes = "1.9" serde = "1.0" -serde_json = "1.0.108" +serde_json = "1.0" chrono = { version = "0.4", features = ["serde"] } -prometheus = { version = "0.13.3", features = ["process"], optional = true } +prometheus = { version = "0.13.4", features = ["process"], optional = true } clickhouse = { version = "0.13", optional = true } -lazy_static = { version = "1.4.0", optional = true } -wasmtime-wasi-http = "20.0.2" +lazy_static = { version = "1.5.0", optional = true } [dev-dependencies] -claims = "0.7" +claims = "0.8" [lints] workspace = true diff --git a/crates/runtime/src/lib.rs b/crates/runtime/src/lib.rs index dbdf9ab..4ad7f5d 100644 --- a/crates/runtime/src/lib.rs +++ b/crates/runtime/src/lib.rs @@ -1,14 +1,10 @@ -use std::fmt::Debug; -use std::ops::Deref; -use std::sync::Arc; +use std::{fmt::Debug, ops::Deref, sync::Arc}; use wasmtime_wasi_http::{HttpResult, WasiHttpCtx, WasiHttpView}; -use crate::registry::CachedGraphRegistry; use crate::store::StoreBuilder; use http_backend::Backend; use limiter::ProxyLimiter; -use std::time::Duration; -use wasmtime::component::{Component, Resource, ResourceTable}; +use wasmtime::component::{Component, ResourceTable}; use wasmtime::{ Engine, InstanceAllocationStrategy, Module, PoolingAllocationConfig, ProfilingStrategy, WasmBacktraceDetails, @@ -18,7 +14,7 @@ use wit_component::ComponentEncoder; pub mod app; mod limiter; pub mod logger; -pub mod registry; +mod registry; pub mod service; pub mod store; pub mod stub; @@ -32,10 +28,13 @@ use http::Request; use smol_str::SmolStr; use std::borrow::Cow; use wasmtime_environ::wasmparser::{Encoding, Parser, Payload}; -use wasmtime_wasi_http::bindings::http::types::ErrorCode; -use wasmtime_wasi_http::types::{ - default_send_request, HostFutureIncomingResponse, OutgoingRequest, +use wasmtime_wasi_http::body::HyperOutgoingBody; +use wasmtime_wasi_http::types::OutgoingRequestConfig; +use wasmtime_wasi_http::{ + bindings::http::types::ErrorCode, + types::{default_send_request, HostFutureIncomingResponse}, }; +use wasmtime_wasi_nn::wit::WasiNnCtx; pub const DEFAULT_EPOCH_TICK_INTERVAL: u64 = 10; @@ -76,10 +75,11 @@ pub enum Wasi { pub struct Data { inner: T, wasi: Wasi, + pub wasi_nn: WasiNnCtx, // memory usage limiter store_limits: ProxyLimiter, pub timeout: u64, - table: ResourceTable, + pub table: ResourceTable, pub logger: Option, http: WasiHttpCtx, } @@ -111,26 +111,19 @@ impl WasiHttpView for Data { fn send_request( &mut self, - request: OutgoingRequest, - ) -> HttpResult> + request: Request, + config: OutgoingRequestConfig, + ) -> HttpResult where Self: Sized, { - let default_timeout = Duration::from_millis(3000); - let (head, body) = request.request.into_parts(); - let (authority, head) = self.inner.backend_request(head).map_err(|e| { + let (head, body) = request.into_parts(); + let (_, head) = self.inner.backend_request(head).map_err(|e| { tracing::warn!(cause=?e, "backend request"); ErrorCode::InternalError(Some(e.to_string())) })?; - let outgoing_request = OutgoingRequest { - use_tls: false, - authority, - request: Request::from_parts(head, body), - connect_timeout: default_timeout, - first_byte_timeout: default_timeout, - between_bytes_timeout: default_timeout, - }; - default_send_request(self, outgoing_request) + let request = Request::from_parts(head, body); + Ok(default_send_request(request, config)) } } @@ -207,7 +200,7 @@ impl Default for WasmConfig { //pooling_allocation_config.max_memories_per_module(1); // allow for up to 128MiB of linear memory. Wasm pages are 64k - pooling_allocation_config.memory_pages(128 * (MB as u64) / (64 * 1024)); + //pooling_allocation_config.memory_pages(128 * (MB as u64) / (64 * 1024)); // Core wasm programs have 1 table pooling_allocation_config.max_tables_per_module(1); @@ -241,9 +234,6 @@ pub struct WasmEngine { inner: Engine, component_linker: ComponentLinker, module_linker: ModuleLinker, - - // WASI-NN global Graph Registry - graph_registry: CachedGraphRegistry, } /// A builder interface for configuring a new [`WasmEngine`]. @@ -262,7 +252,7 @@ impl WasmEngine { } pub fn store_builder(&self, version: WasiVersion) -> StoreBuilder { - StoreBuilder::new(self.inner.clone(), version, self.graph_registry.clone()) + StoreBuilder::new(self.inner.clone(), version) } /// Creates a new [`InstancePre`] for the given [`Component`]. @@ -305,7 +295,6 @@ impl WasmEngineBuilder { inner: self.engine, component_linker: self.component_linker, module_linker: self.module_linker, - graph_registry: CachedGraphRegistry::new(), } } } diff --git a/crates/runtime/src/limiter.rs b/crates/runtime/src/limiter.rs index a2728d7..ed2830f 100644 --- a/crates/runtime/src/limiter.rs +++ b/crates/runtime/src/limiter.rs @@ -52,7 +52,12 @@ impl ResourceLimiter for ProxyLimiter { self.inner.memory_grow_failed(error) } - fn table_growing(&mut self, current: u32, desired: u32, maximum: Option) -> Result { + fn table_growing( + &mut self, + current: usize, + desired: usize, + maximum: Option, + ) -> Result { self.inner.table_growing(current, desired, maximum) } diff --git a/crates/runtime/src/registry.rs b/crates/runtime/src/registry.rs index 32d9f8a..8f1ca49 100644 --- a/crates/runtime/src/registry.rs +++ b/crates/runtime/src/registry.rs @@ -5,6 +5,7 @@ use std::time::Duration; use anyhow::{anyhow, bail, Context, Result}; use moka::sync::Cache; +use wasmtime_wasi_nn::backend::candle::CandleBackend; use wasmtime_wasi_nn::wit::types::GraphEncoding; use wasmtime_wasi_nn::{ backend::{openvino::OpenvinoBackend, BackendFromDir}, @@ -12,8 +13,6 @@ use wasmtime_wasi_nn::{ GraphRegistry, Registry, {Backend, Graph}, }; -use candle_wasi_nn::CandleBackend; - #[derive(Clone)] pub struct CachedGraphRegistry(Cache); @@ -27,6 +26,10 @@ pub fn backends() -> Vec { } impl GraphRegistry for StoreRegistry { + fn get(&self, name: &str) -> Option<&Graph> { + self.0.get(name) + } + fn get_mut(&mut self, name: &str) -> Option<&mut Graph> { self.0.get_mut(name) } diff --git a/crates/runtime/src/store.rs b/crates/runtime/src/store.rs index f954ae6..e4b61d3 100644 --- a/crates/runtime/src/store.rs +++ b/crates/runtime/src/store.rs @@ -1,13 +1,12 @@ +use anyhow::Result; use std::collections::HashMap; use std::fmt::{Debug, Formatter}; use std::ops::{Deref, DerefMut}; - -use anyhow::Result; use tracing::{debug, instrument, trace}; use wasmtime::component::ResourceTable; use wasmtime_wasi::WasiCtxBuilder; use wasmtime_wasi_http::WasiHttpCtx; -use wasmtime_wasi_nn::WasiNnCtx; +use wasmtime_wasi_nn::wit::WasiNnCtx; use crate::{Data, Wasi, WasiVersion, DEFAULT_EPOCH_TICK_INTERVAL}; @@ -79,17 +78,13 @@ pub struct StoreBuilder { env: Vec<(String, String)>, logger: Option, version: WasiVersion, - global_registry: CachedGraphRegistry, properties: HashMap, + registry: CachedGraphRegistry, } impl StoreBuilder { // Called by Engine::store_builder. - pub(crate) fn new( - engine: wasmtime::Engine, - version: WasiVersion, - registry: CachedGraphRegistry, - ) -> Self { + pub(crate) fn new(engine: wasmtime::Engine, version: WasiVersion) -> Self { Self { engine, max_duration: 100, @@ -97,8 +92,8 @@ impl StoreBuilder { env: vec![], logger: None, version, - global_registry: registry, properties: Default::default(), + registry: CachedGraphRegistry::new(), } } @@ -151,7 +146,7 @@ impl StoreBuilder { Self { properties, ..self } } - pub fn make_wasi_nn_ctx(&self) -> Result { + pub fn make_wasi_nn(&self) -> Result { // initialize application specific graph let backends: Vec<&str> = self .env @@ -177,7 +172,7 @@ impl StoreBuilder { .collect(); debug!("preload graphs: {:?}", preload_graphs); - let (backends, registry) = self.global_registry.preload_graphs(preload_graphs)?; + let (backends, registry) = self.registry.preload_graphs(preload_graphs)?; Ok(WasiNnCtx::new(backends, registry)) } @@ -197,10 +192,13 @@ impl StoreBuilder { ) -> Result> { let table = ResourceTable::new(); - debug!("ENV: {:?}", self.env); wasi_ctx_builder.envs(&self.env); - debug!("WasiNnCtxBuilder: {:?}", self.version); - //wasi_ctx_builder.inherit_env(); + + let wasi = match self.version { + WasiVersion::Preview1 => Wasi::Preview1(wasi_ctx_builder.build_p1()), + WasiVersion::Preview2 => Wasi::Preview2(wasi_ctx_builder.build()), + }; + let wasi_nn = self.make_wasi_nn()?; let logger = if let Some(mut logger) = self.logger { logger.extend(self.properties); @@ -214,21 +212,17 @@ impl StoreBuilder { None }; - let wasi = match self.version { - WasiVersion::Preview1 => Wasi::Preview1(wasi_ctx_builder.build_p1()), - WasiVersion::Preview2 => Wasi::Preview2(wasi_ctx_builder.build()), - }; - let mut inner = wasmtime::Store::new( &self.engine, Data { inner, wasi, + wasi_nn, store_limits: self.store_limits, timeout: (self.max_duration + 1) * DEFAULT_EPOCH_TICK_INTERVAL, table, logger, - http: WasiHttpCtx, + http: WasiHttpCtx::new(), }, ); inner.limiter(|state| &mut state.store_limits); diff --git a/crates/secret/Cargo.toml b/crates/secret/Cargo.toml index 5eee760..5b4cf98 100644 --- a/crates/secret/Cargo.toml +++ b/crates/secret/Cargo.toml @@ -11,7 +11,6 @@ reactor = { path = "../reactor" } anyhow = {workspace = true} tracing = {workspace = true} async-trait = {workspace = true} -wasmtime = {workspace = true} [lints] workspace = true diff --git a/crates/secret/src/lib.rs b/crates/secret/src/lib.rs index 229ad50..589e276 100644 --- a/crates/secret/src/lib.rs +++ b/crates/secret/src/lib.rs @@ -1,4 +1,3 @@ -use async_trait::async_trait; use reactor::gcore::fastedge::secret; pub trait SecretStrategy { @@ -11,35 +10,35 @@ pub struct Secret { strategy: T, } -#[async_trait] impl secret::Host for Secret { - async fn get( - &mut self, - key: String, - ) -> wasmtime::Result, secret::Error>> { - Ok(match self.strategy.get(key) { + async fn get(&mut self, key: String) -> Result, secret::Error> { + match self.strategy.get(key) { Ok(None) => Ok(None), - Ok(Some(plaintext)) => Ok(Some(String::from_utf8(plaintext)?)), + Ok(Some(plaintext)) => Ok(Some( + String::from_utf8(plaintext).map_err(|e| secret::Error::Other(e.to_string()))?, + )), Err(error) => { tracing::error!(cause=?error, "decryption error"); Err(secret::Error::DecryptError) } - }) + } } async fn get_effective_at( &mut self, key: String, at: u32, - ) -> wasmtime::Result, secret::Error>> { - Ok(match self.strategy.get_effective_at(key, at as u64) { + ) -> Result, secret::Error> { + match self.strategy.get_effective_at(key, at as u64) { Ok(None) => Ok(None), - Ok(Some(plaintext)) => Ok(Some(String::from_utf8(plaintext)?)), + Ok(Some(plaintext)) => Ok(Some( + String::from_utf8(plaintext).map_err(|e| secret::Error::Other(e.to_string()))?, + )), Err(error) => { tracing::error!(cause=?error, "decryption error"); Err(secret::Error::DecryptError) } - }) + } } } diff --git a/sdk b/sdk index bb77eb6..b774205 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit bb77eb6f89272042d933d5d9fb0837b40c5adbd0 +Subproject commit b774205847823a960b877e9c011cb8965e28326e