From 55dbb760ac9b6e290284b7edf962737a801abea6 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Mon, 18 Sep 2023 22:05:33 +0200 Subject: [PATCH 01/31] Move to resources for kv Signed-off-by: Ryan Levick --- Cargo.lock | 157 +++++------------- crates/key-value/src/lib.rs | 53 ++++-- crates/redis/tests/rust/Cargo.lock | 144 ++++++++++------ crates/redis/tests/rust/Cargo.toml | 8 +- crates/redis/tests/rust/src/lib.rs | 11 +- .../benches/spin-http-benchmark/Cargo.toml | 6 +- .../benches/spin-http-benchmark/src/lib.rs | 11 +- .../tests/rust-http-test/Cargo.toml | 8 +- .../tests/rust-http-test/src/lib.rs | 11 +- crates/trigger/src/loader.rs | 1 + examples/spin-timer/app-example/Cargo.toml | 2 +- sdk/rust/Cargo.toml | 6 +- sdk/rust/macro/src/lib.rs | 140 +++++++++++++++- sdk/rust/macro/wit/http-types.wit | 44 +++++ sdk/rust/macro/wit/inbound-http.wit | 5 + sdk/rust/macro/wit/inbound-redis.wit | 6 + sdk/rust/macro/wit/reactor.wit | 6 + sdk/rust/macro/wit/redis-types.wit | 24 +++ sdk/rust/src/key_value.rs | 69 +------- sdk/rust/src/lib.rs | 136 +-------------- sdk/rust/src/outbound_http.rs | 8 +- tests/http/headers-env-routes-test/Cargo.lock | 136 ++++++++++----- tests/http/simple-spin-rust/Cargo.lock | 136 ++++++++++----- wit/preview2/key-value.wit | 98 ++++++----- wit/preview2/reactor.wit | 12 ++ 25 files changed, 685 insertions(+), 553 deletions(-) create mode 100644 sdk/rust/macro/wit/http-types.wit create mode 100644 sdk/rust/macro/wit/inbound-http.wit create mode 100644 sdk/rust/macro/wit/inbound-redis.wit create mode 100644 sdk/rust/macro/wit/reactor.wit create mode 100644 sdk/rust/macro/wit/redis-types.wit diff --git a/Cargo.lock b/Cargo.lock index a5b83899b..cc5b0fbdf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1180,7 +1180,7 @@ dependencies = [ "itertools 0.10.5", "log", "smallvec", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-types", ] @@ -4389,17 +4389,6 @@ dependencies = [ "cc", ] -[[package]] -name = "pulldown-cmark" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" -dependencies = [ - "bitflags 1.3.2", - "memchr", - "unicase", -] - [[package]] name = "pulldown-cmark" version = "0.9.3" @@ -5464,10 +5453,10 @@ version = "0.1.0" source = "git+https://github.com/fermyon/spin-componentize?rev=f29cdb26a6b1700ae1fe48c94bbef26a8069d566#f29cdb26a6b1700ae1fe48c94bbef26a8069d566" dependencies = [ "anyhow", - "wasm-encoder 0.32.0", - "wasmparser 0.112.0", - "wit-component 0.14.0", - "wit-parser 0.11.0", + "wasm-encoder", + "wasmparser", + "wit-component", + "wit-parser", ] [[package]] @@ -6967,15 +6956,6 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" -[[package]] -name = "wasm-encoder" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" -dependencies = [ - "leb128", -] - [[package]] name = "wasm-encoder" version = "0.32.0" @@ -6985,19 +6965,6 @@ dependencies = [ "leb128", ] -[[package]] -name = "wasm-metadata" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" -dependencies = [ - "anyhow", - "indexmap 1.9.2", - "serde", - "wasm-encoder 0.29.0", - "wasmparser 0.107.0", -] - [[package]] name = "wasm-metadata" version = "0.10.3" @@ -7009,8 +6976,8 @@ dependencies = [ "serde", "serde_json", "spdx", - "wasm-encoder 0.32.0", - "wasmparser 0.112.0", + "wasm-encoder", + "wasmparser", ] [[package]] @@ -7026,16 +6993,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.107.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" -dependencies = [ - "indexmap 1.9.2", - "semver", -] - [[package]] name = "wasmparser" version = "0.112.0" @@ -7053,7 +7010,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34ddf5892036cd4b780d505eff1194a0cbc10ed896097656fdcea3744b5e7c2f" dependencies = [ "anyhow", - "wasmparser 0.112.0", + "wasmparser", ] [[package]] @@ -7081,8 +7038,8 @@ dependencies = [ "serde_derive", "serde_json", "target-lexicon", - "wasm-encoder 0.32.0", - "wasmparser 0.112.0", + "wasm-encoder", + "wasmparser", "wasmtime-cache", "wasmtime-component-macro", "wasmtime-component-util", @@ -7137,7 +7094,7 @@ dependencies = [ "syn 2.0.29", "wasmtime-component-util", "wasmtime-wit-bindgen", - "wit-parser 0.11.0", + "wit-parser", ] [[package]] @@ -7165,7 +7122,7 @@ dependencies = [ "object 0.32.1", "target-lexicon", "thiserror", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-cranelift-shared", "wasmtime-environ", "wasmtime-versioned-export-macros", @@ -7203,8 +7160,8 @@ dependencies = [ "serde_derive", "target-lexicon", "thiserror", - "wasm-encoder 0.32.0", - "wasmparser 0.112.0", + "wasm-encoder", + "wasmparser", "wasmprinter", "wasmtime-component-util", "wasmtime-types", @@ -7294,7 +7251,7 @@ dependencies = [ "rand 0.8.5", "rustix 0.38.13", "sptr", - "wasm-encoder 0.32.0", + "wasm-encoder", "wasmtime-asm-macros", "wasmtime-environ", "wasmtime-fiber", @@ -7314,7 +7271,7 @@ dependencies = [ "serde", "serde_derive", "thiserror", - "wasmparser 0.112.0", + "wasmparser", ] [[package]] @@ -7374,7 +7331,7 @@ dependencies = [ "gimli 0.28.0", "object 0.32.1", "target-lexicon", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-cranelift-shared", "wasmtime-environ", "winch-codegen", @@ -7389,7 +7346,7 @@ dependencies = [ "anyhow", "heck 0.4.1", "indexmap 2.0.0", - "wit-parser 0.11.0", + "wit-parser", ] [[package]] @@ -7416,7 +7373,7 @@ dependencies = [ "leb128", "memchr", "unicode-width", - "wasm-encoder 0.32.0", + "wasm-encoder", ] [[package]] @@ -7619,7 +7576,7 @@ dependencies = [ "regalloc2", "smallvec", "target-lexicon", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-environ", ] @@ -7816,9 +7773,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -7826,33 +7783,34 @@ dependencies = [ [[package]] name = "wit-bindgen-core" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" dependencies = [ "anyhow", - "wit-component 0.11.0", - "wit-parser 0.8.0", + "wit-component", + "wit-parser", ] [[package]] name = "wit-bindgen-rust" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" dependencies = [ + "anyhow", "heck 0.4.1", - "wasm-metadata 0.8.0", + "wasm-metadata", "wit-bindgen-core", "wit-bindgen-rust-lib", - "wit-component 0.11.0", + "wit-component", ] [[package]] name = "wit-bindgen-rust-lib" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" +checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" dependencies = [ "heck 0.4.1", "wit-bindgen-core", @@ -7860,32 +7818,17 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" dependencies = [ "anyhow", "proc-macro2", "syn 2.0.29", "wit-bindgen-core", "wit-bindgen-rust", - "wit-component 0.11.0", -] - -[[package]] -name = "wit-component" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" -dependencies = [ - "anyhow", - "bitflags 1.3.2", - "indexmap 1.9.2", - "log", - "wasm-encoder 0.29.0", - "wasm-metadata 0.8.0", - "wasmparser 0.107.0", - "wit-parser 0.8.0", + "wit-bindgen-rust-lib", + "wit-component", ] [[package]] @@ -7900,26 +7843,10 @@ dependencies = [ "log", "serde", "serde_json", - "wasm-encoder 0.32.0", - "wasm-metadata 0.10.3", - "wasmparser 0.112.0", - "wit-parser 0.11.0", -] - -[[package]] -name = "wit-parser" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 1.9.2", - "log", - "pulldown-cmark 0.8.0", - "semver", - "unicode-xid", - "url", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", ] [[package]] @@ -7932,7 +7859,7 @@ dependencies = [ "id-arena", "indexmap 2.0.0", "log", - "pulldown-cmark 0.9.3", + "pulldown-cmark", "semver", "unicode-xid", "url", diff --git a/crates/key-value/src/lib.rs b/crates/key-value/src/lib.rs index 0d307ef3e..28b72244f 100644 --- a/crates/key-value/src/lib.rs +++ b/crates/key-value/src/lib.rs @@ -1,6 +1,6 @@ use anyhow::Result; use spin_app::MetadataKey; -use spin_core::async_trait; +use spin_core::{async_trait, wasmtime::component::Resource}; use spin_world::key_value; use std::{collections::HashSet, sync::Arc}; use table::Table; @@ -69,13 +69,17 @@ impl Default for KeyValueDispatch { } #[async_trait] -impl key_value::Host for KeyValueDispatch { - async fn open(&mut self, name: String) -> Result> { +impl key_value::Host for KeyValueDispatch {} +#[async_trait] +impl key_value::HostStore for KeyValueDispatch { + async fn open(&mut self, name: String) -> Result, Error>> { Ok(async { if self.allowed_stores.contains(&name) { - self.stores + let store = self + .stores .push(self.manager.get(&name).await?) - .map_err(|()| Error::StoreTableFull) + .map_err(|()| Error::StoreTableFull)?; + Ok(Resource::new_own(store)) } else { Err(Error::AccessDenied) } @@ -83,10 +87,14 @@ impl key_value::Host for KeyValueDispatch { .await) } - async fn get(&mut self, store: StoreHandle, key: String) -> Result, Error>> { + async fn get( + &mut self, + store: Resource, + key: String, + ) -> Result, Error>> { Ok(async { self.stores - .get(store) + .get(store.rep()) .ok_or(Error::InvalidStore)? .get(&key) .await @@ -96,13 +104,13 @@ impl key_value::Host for KeyValueDispatch { async fn set( &mut self, - store: StoreHandle, + store: Resource, key: String, value: Vec, ) -> Result> { Ok(async { self.stores - .get(store) + .get(store.rep()) .ok_or(Error::InvalidStore)? .set(&key, &value) .await @@ -110,10 +118,14 @@ impl key_value::Host for KeyValueDispatch { .await) } - async fn delete(&mut self, store: StoreHandle, key: String) -> Result> { + async fn delete( + &mut self, + store: Resource, + key: String, + ) -> Result> { Ok(async { self.stores - .get(store) + .get(store.rep()) .ok_or(Error::InvalidStore)? .delete(&key) .await @@ -121,10 +133,14 @@ impl key_value::Host for KeyValueDispatch { .await) } - async fn exists(&mut self, store: StoreHandle, key: String) -> Result> { + async fn exists( + &mut self, + store: Resource, + key: String, + ) -> Result> { Ok(async { self.stores - .get(store) + .get(store.rep()) .ok_or(Error::InvalidStore)? .exists(&key) .await @@ -132,10 +148,13 @@ impl key_value::Host for KeyValueDispatch { .await) } - async fn get_keys(&mut self, store: StoreHandle) -> Result, Error>> { + async fn get_keys( + &mut self, + store: Resource, + ) -> Result, Error>> { Ok(async { self.stores - .get(store) + .get(store.rep()) .ok_or(Error::InvalidStore)? .get_keys() .await @@ -143,8 +162,8 @@ impl key_value::Host for KeyValueDispatch { .await) } - async fn close(&mut self, store: StoreHandle) -> Result<()> { - self.stores.remove(store); + fn drop(&mut self, store: Resource) -> Result<()> { + self.stores.remove(store.rep()); Ok(()) } } diff --git a/crates/redis/tests/rust/Cargo.lock b/crates/redis/tests/rust/Cargo.lock index 70b7cc2ee..ee6b49a93 100644 --- a/crates/redis/tests/rust/Cargo.lock +++ b/crates/redis/tests/rust/Cargo.lock @@ -4,15 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "bitflags" @@ -22,9 +16,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "form_urlencoded" @@ -37,9 +37,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] name = "heck" @@ -68,15 +68,21 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + [[package]] name = "leb128" version = "0.2.5" @@ -91,9 +97,9 @@ checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "memchr" -version = "2.4.1" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "percent-encoding" @@ -103,18 +109,18 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -137,6 +143,12 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" version = "1.0.17" @@ -145,29 +157,55 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "syn" -version = "2.0.18" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -250,31 +288,33 @@ checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "b39de0723a53d3c8f54bed106cfbc0d06b3e4d945c5c5022115a61e3b29183ae" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "9fab01638cbecc57afec7b53ce0e28620b44d7ae1dea53120c96dd08486c07ce" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "a128cea7b8516703ab41b10a0b1aa9ba18d0454cd3792341489947ddeee268db" dependencies = [ "indexmap", "semver", @@ -282,19 +322,19 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" dependencies = [ "anyhow", "wit-component", @@ -303,10 +343,11 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", @@ -316,9 +357,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" +checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" dependencies = [ "heck", "wit-bindgen-core", @@ -326,28 +367,31 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" dependencies = [ "anyhow", "proc-macro2", "syn", "wit-bindgen-core", "wit-bindgen-rust", + "wit-bindgen-rust-lib", "wit-component", ] [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "af872ef43ecb73cc49c7bd2dd19ef9117168e183c78cf70000dca0e14b6a5473" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -356,9 +400,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "1dcd022610436a1873e60bfdd9b407763f2404adf7d1cb57912c7ae4059e57a5" dependencies = [ "anyhow", "id-arena", @@ -366,6 +410,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/crates/redis/tests/rust/Cargo.toml b/crates/redis/tests/rust/Cargo.toml index 162b516f4..bd96bb0e0 100644 --- a/crates/redis/tests/rust/Cargo.toml +++ b/crates/redis/tests/rust/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "rust" +name = "rust" version = "0.1.0" edition = "2021" -authors = [ "Radu Matei " ] +authors = ["Radu Matei "] [lib] -crate-type = [ "cdylib" ] +crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.8" +wit-bindgen = "0.12" [workspace] diff --git a/crates/redis/tests/rust/src/lib.rs b/crates/redis/tests/rust/src/lib.rs index 618e9d5dc..15ced0c09 100644 --- a/crates/redis/tests/rust/src/lib.rs +++ b/crates/redis/tests/rust/src/lib.rs @@ -1,12 +1,17 @@ use std::str::{from_utf8, Utf8Error}; -wit_bindgen::generate!("redis-trigger" in "../../../../wit/preview2"); +wit_bindgen::generate!({ + world: "redis-trigger", + path: "../../../../wit/preview2", + exports: { + "fermyon:spin/inbound-redis": SpinRedis, + } +}); use exports::fermyon::spin::inbound_redis::{self, Error, Payload}; struct SpinRedis; -export_redis_trigger!(SpinRedis); -impl inbound_redis::InboundRedis for SpinRedis { +impl inbound_redis::Guest for SpinRedis { fn handle_message(message: Payload) -> Result<(), Error> { println!("Message: {:?}", from_utf8(&message)); Ok(()) diff --git a/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml b/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml index 6b697754f..dc1fa3c0f 100644 --- a/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml +++ b/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "spin-http-benchmark" +name = "spin-http-benchmark" version = "0.2.0" edition = "2021" [lib] -crate-type = [ "cdylib" ] +crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.8" +wit-bindgen = "0.12" url = "2.4.1" [workspace] diff --git a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs index 219857c07..4c37e3d27 100644 --- a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs +++ b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs @@ -1,11 +1,16 @@ -wit_bindgen::generate!("http-trigger" in "../../../../wit/preview2"); +wit_bindgen::generate!({ + world: "http-trigger", + path: "../../../../wit/preview2", + exports: { + "fermyon:spin/inbound-http": SpinHttp, + } +}); use exports::fermyon::spin::inbound_http; struct SpinHttp; -export_http_trigger!(SpinHttp); -impl inbound_http::InboundHttp for SpinHttp { +impl inbound_http::Guest for SpinHttp { fn handle_request(req: inbound_http::Request) -> inbound_http::Response { let params = req.uri.find('?').map(|i| &req.uri[i + 1..]).unwrap_or(""); for (key, value) in url::form_urlencoded::parse(params.as_bytes()) { diff --git a/crates/trigger-http/tests/rust-http-test/Cargo.toml b/crates/trigger-http/tests/rust-http-test/Cargo.toml index 8e19e7633..eed23092c 100644 --- a/crates/trigger-http/tests/rust-http-test/Cargo.toml +++ b/crates/trigger-http/tests/rust-http-test/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "rust-http-test" +name = "rust-http-test" version = "0.1.0" edition = "2021" -authors = [ "Radu Matei " ] +authors = ["Radu Matei "] [lib] -crate-type = [ "cdylib" ] +crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.8" +wit-bindgen = "0.12" [workspace] diff --git a/crates/trigger-http/tests/rust-http-test/src/lib.rs b/crates/trigger-http/tests/rust-http-test/src/lib.rs index 370e33897..5d0e21b7e 100644 --- a/crates/trigger-http/tests/rust-http-test/src/lib.rs +++ b/crates/trigger-http/tests/rust-http-test/src/lib.rs @@ -1,11 +1,16 @@ -wit_bindgen::generate!("http-trigger" in "../../../../wit/preview2"); +wit_bindgen::generate!({ + world: "http-trigger", + path: "../../../../wit/preview2", + exports: { + "fermyon:spin/inbound-http": SpinHttp, + } +}); use exports::fermyon::spin::inbound_http::{self, Request, Response}; struct SpinHttp; -export_http_trigger!(SpinHttp); -impl inbound_http::InboundHttp for SpinHttp { +impl inbound_http::Guest for SpinHttp { fn handle_request(req: Request) -> Response { assert!(req.params.is_empty()); assert!(req.uri.contains("?abc=def")); diff --git a/crates/trigger/src/loader.rs b/crates/trigger/src/loader.rs index b9373705e..c98e59caa 100644 --- a/crates/trigger/src/loader.rs +++ b/crates/trigger/src/loader.rs @@ -56,6 +56,7 @@ impl Loader for TriggerLoader { ) })?; let component = spin_componentize::componentize_if_necessary(&bytes)?; + std::fs::write("COMPONENT.wasm", &component).unwrap(); let was_already_component = matches!(component, std::borrow::Cow::Borrowed(_)); if was_already_component { terminal::warn!( diff --git a/examples/spin-timer/app-example/Cargo.toml b/examples/spin-timer/app-example/Cargo.toml index afc95e119..92de91994 100644 --- a/examples/spin-timer/app-example/Cargo.toml +++ b/examples/spin-timer/app-example/Cargo.toml @@ -6,7 +6,7 @@ version = "0.1.0" edition = "2021" [lib] -crate-type = [ "cdylib" ] +crate-type = ["cdylib"] [dependencies] wit-bindgen = "0.8.0" diff --git a/sdk/rust/Cargo.toml b/sdk/rust/Cargo.toml index 347d25ab3..09e82bf64 100644 --- a/sdk/rust/Cargo.toml +++ b/sdk/rust/Cargo.toml @@ -15,10 +15,10 @@ form_urlencoded = "1.0" http_types = { package = "http", version = "0.2" } spin-macro = { path = "macro" } thiserror = "1.0.37" -wit-bindgen = "0.8" +wit-bindgen = "0.11" routefinder = "0.5.3" -serde_json = {version = "1.0.96", optional = true} -serde = {version = "1.0.163", optional = true} +serde_json = { version = "1.0.96", optional = true } +serde = { version = "1.0.163", optional = true } [features] default = ["export-sdk-language"] diff --git a/sdk/rust/macro/src/lib.rs b/sdk/rust/macro/src/lib.rs index ee2415fab..8461ba4b5 100644 --- a/sdk/rust/macro/src/lib.rs +++ b/sdk/rust/macro/src/lib.rs @@ -6,17 +6,28 @@ use quote::quote; pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { let func = syn::parse_macro_input!(item as syn::ItemFn); let func_name = &func.sig.ident; + const HTTP_COMPONENT_WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wit"); quote!( #func mod __spin_http { + #![allow(missing_docs)] + ::spin_sdk::wit_bindgen::generate!({ + world: "exports", + path: #HTTP_COMPONENT_WIT_PATH, + runtime_path: "::spin_sdk::wit_bindgen::rt", + exports: { + "fermyon:spin/inbound-redis": Spin, + "fermyon:spin/inbound-http": Spin + } + }); struct Spin; - ::spin_sdk::export_reactor!(Spin); + use exports::fermyon::spin::{inbound_http, inbound_redis}; - impl ::spin_sdk::inbound_http::InboundHttp for Spin { + impl inbound_http::Guest for Spin { // Implement the `handler` entrypoint for Spin HTTP components. - fn handle_request(req: ::spin_sdk::inbound_http::Request) -> ::spin_sdk::inbound_http::Response { + fn handle_request(req: inbound_http::Request) -> inbound_http::Response { match super::#func_name(req.try_into().expect("cannot convert from Spin HTTP request")) { Ok(resp) => resp.try_into().expect("cannot convert to Spin HTTP response"), Err(error) => { @@ -27,7 +38,7 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { eprintln!(" caused by: {}", s); source = s.source(); } - ::spin_sdk::inbound_http::Response { + inbound_http::Response { status: 500, headers: None, body: Some(body.as_bytes().to_vec()), @@ -37,11 +48,128 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { } } - impl ::spin_sdk::inbound_redis::InboundRedis for Spin { - fn handle_message(msg: ::spin_sdk::inbound_redis::Payload) -> Result<(), ::spin_sdk::inbound_redis::Error> { + impl inbound_redis::Guest for Spin { + fn handle_message(msg: inbound_redis::Payload) -> Result<(), inbound_redis::Error> { unimplemented!("No implementation for inbound-redis#handle-message"); } } + + mod inbound_http_helpers { + use super::fermyon::spin::http_types as spin_http_types; + + impl TryFrom for http::Request> { + type Error = anyhow::Error; + + fn try_from(spin_req: spin_http_types::Request) -> Result { + let mut http_req = http::Request::builder() + .method(spin_req.method.clone()) + .uri(&spin_req.uri); + + append_request_headers(&mut http_req, &spin_req)?; + + let body = match spin_req.body { + Some(b) => b.to_vec(), + None => Vec::new(), + }; + + let body = Some(bytes::Bytes::from(body)); + + Ok(http_req.body(body)?) + } + } + + impl From for http::Method { + fn from(spin_method: spin_http_types::Method) -> Self { + match spin_method { + spin_http_types::Method::Get => http::Method::GET, + spin_http_types::Method::Post => http::Method::POST, + spin_http_types::Method::Put => http::Method::PUT, + spin_http_types::Method::Delete => http::Method::DELETE, + spin_http_types::Method::Patch => http::Method::PATCH, + spin_http_types::Method::Head => http::Method::HEAD, + spin_http_types::Method::Options => http::Method::OPTIONS, + } + } + } + + fn append_request_headers( + http_req: &mut http::request::Builder, + spin_req: &spin_http_types::Request, + ) -> anyhow::Result<()> { + let headers = http_req.headers_mut().unwrap(); + for (k, v) in &spin_req.headers { + headers.append( + ::from_str(k)?, + http::header::HeaderValue::from_str(v)?, + ); + } + + Ok(()) + } + + impl TryFrom for http::Response> { + type Error = anyhow::Error; + + fn try_from(spin_res: spin_http_types::Response) -> Result { + let mut http_res = http::Response::builder().status(spin_res.status); + append_response_headers(&mut http_res, spin_res.clone())?; + + let body = match spin_res.body { + Some(b) => b.to_vec(), + None => Vec::new(), + }; + let body = Some(bytes::Bytes::from(body)); + + Ok(http_res.body(body)?) + } + } + + fn append_response_headers( + http_res: &mut http::response::Builder, + spin_res: spin_http_types::Response, + ) -> anyhow::Result<()> { + let headers = http_res.headers_mut().unwrap(); + for (k, v) in spin_res.headers.unwrap() { + headers.append( + ::from_str(&k)?, + http::header::HeaderValue::from_str(&v)?, + ); + } + + Ok(()) + } + + impl TryFrom>> for spin_http_types::Response { + type Error = anyhow::Error; + + fn try_from( + http_res: http::Response>, + ) -> Result { + let status = http_res.status().as_u16(); + let headers = Some(outbound_headers(http_res.headers())?); + let body = http_res.body().as_ref().map(|b| b.to_vec()); + + Ok(spin_http_types::Response { + status, + headers, + body, + }) + } + } + + fn outbound_headers(hm: &http::HeaderMap) -> anyhow::Result> { + let mut res = Vec::new(); + + for (k, v) in hm { + res.push(( + k.as_str().to_string(), + std::str::from_utf8(v.as_bytes())?.to_string(), + )); + } + + Ok(res) + } + } } ) .into() diff --git a/sdk/rust/macro/wit/http-types.wit b/sdk/rust/macro/wit/http-types.wit new file mode 100644 index 000000000..5d156046b --- /dev/null +++ b/sdk/rust/macro/wit/http-types.wit @@ -0,0 +1,44 @@ +interface http-types { + type http-status = u16 + + type body = list + + type headers = list> + + type params = list> + + type uri = string + + enum method { + get, + post, + put, + delete, + patch, + head, + options, + } + + record request { + method: method, + uri: uri, + headers: headers, + params: params, + body: option, + } + + record response { + status: http-status, + headers: option, + body: option, + } + + enum http-error { + success, + destination-not-allowed, + invalid-url, + request-error, + runtime-error, + too-many-requests, + } +} diff --git a/sdk/rust/macro/wit/inbound-http.wit b/sdk/rust/macro/wit/inbound-http.wit new file mode 100644 index 000000000..0fef7f58d --- /dev/null +++ b/sdk/rust/macro/wit/inbound-http.wit @@ -0,0 +1,5 @@ +interface inbound-http { + use http-types.{request, response} + + handle-request: func(req: request) -> response +} diff --git a/sdk/rust/macro/wit/inbound-redis.wit b/sdk/rust/macro/wit/inbound-redis.wit new file mode 100644 index 000000000..2a027c546 --- /dev/null +++ b/sdk/rust/macro/wit/inbound-redis.wit @@ -0,0 +1,6 @@ +interface inbound-redis { + use redis-types.{payload, error} + + // The entrypoint for a Redis handler. + handle-message: func(message: payload) -> result<_, error> +} diff --git a/sdk/rust/macro/wit/reactor.wit b/sdk/rust/macro/wit/reactor.wit new file mode 100644 index 000000000..cc7503782 --- /dev/null +++ b/sdk/rust/macro/wit/reactor.wit @@ -0,0 +1,6 @@ +package fermyon:spin + +world exports { + export inbound-http + export inbound-redis +} diff --git a/sdk/rust/macro/wit/redis-types.wit b/sdk/rust/macro/wit/redis-types.wit new file mode 100644 index 000000000..e08d593dd --- /dev/null +++ b/sdk/rust/macro/wit/redis-types.wit @@ -0,0 +1,24 @@ +interface redis-types { + // General purpose error. + enum error { + success, + error, + } + + // The message payload. + type payload = list + + // A parameter type for the general-purpose `execute` function. + variant redis-parameter { + int64(s64), + binary(payload) + } + + // A return type for the general-purpose `execute` function. + variant redis-result { + nil, + status(string), + int64(s64), + binary(payload) + } +} diff --git a/sdk/rust/src/key_value.rs b/sdk/rust/src/key_value.rs index bec3cd048..dc8966f1f 100644 --- a/sdk/rust/src/key_value.rs +++ b/sdk/rust/src/key_value.rs @@ -5,7 +5,6 @@ //! durability will depend on the implementation and may vary from one to store to the next. use super::wit::fermyon::spin::key_value; -use key_value::Store as RawStore; #[cfg(feature = "json")] use serde::{de::DeserializeOwned, Serialize}; @@ -13,57 +12,10 @@ use serde::{de::DeserializeOwned, Serialize}; /// Errors which may be raised by the methods of `Store` pub use key_value::Error; -/// Represents a store in which key value tuples may be placed -#[derive(Debug)] -pub struct Store(RawStore); +/// A store +pub use key_value::Store; impl Store { - /// Open the specified store. - /// - /// If `name` is empty, open the default store. Other stores may also be available depending on the app - /// configuration. - pub fn open(name: impl AsRef) -> Result { - key_value::open(name.as_ref()).map(Self) - } - - /// Open the default store. - /// - /// This is equivalent to `Store::open("default")`. - pub fn open_default() -> Result { - Self::open("default") - } - - /// Get the value, if any, associated with the specified key in this store. - /// - /// If no value is found, this will return `Err(Error::NoSuchKey)`. - pub fn get(&self, key: impl AsRef) -> Result, Error> { - key_value::get(self.0, key.as_ref()) - } - - /// Set the value for the specified key. - /// - /// This will overwrite any previous value, if present. - pub fn set(&self, key: impl AsRef, value: impl AsRef<[u8]>) -> Result<(), Error> { - key_value::set(self.0, key.as_ref(), value.as_ref()) - } - - /// Delete the tuple for the specified key, if any. - /// - /// This will have no effect and return `Ok(())` if the tuple was not present. - pub fn delete(&self, key: impl AsRef) -> Result<(), Error> { - key_value::delete(self.0, key.as_ref()) - } - - /// Check whether a tuple exists for the specified key. - pub fn exists(&self, key: impl AsRef) -> Result { - key_value::exists(self.0, key.as_ref()) - } - - /// Get the set of keys in this store. - pub fn get_keys(&self) -> Result, Error> { - key_value::get_keys(self.0) - } - #[cfg(feature = "json")] /// Serialize the given data to JSON, then set it as the value for the specified `key`. pub fn set_json( @@ -71,25 +23,12 @@ impl Store { key: impl AsRef, value: &T, ) -> Result<(), anyhow::Error> { - Ok(key_value::set( - self.0, - key.as_ref(), - &serde_json::to_vec(value)?, - )?) + Ok(self.set(key.as_ref(), &serde_json::to_vec(value)?)?) } #[cfg(feature = "json")] /// Deserialize an instance of type `T` from the value of `key`. pub fn get_json(&self, key: impl AsRef) -> Result { - Ok(serde_json::from_slice(&key_value::get( - self.0, - key.as_ref(), - )?)?) - } -} - -impl Drop for Store { - fn drop(&mut self) { - key_value::close(self.0) + Ok(serde_json::from_slice(&self.get(key.as_ref())?)?) } } diff --git a/sdk/rust/src/lib.rs b/sdk/rust/src/lib.rs index fe601a860..775c08283 100644 --- a/sdk/rust/src/lib.rs +++ b/sdk/rust/src/lib.rs @@ -24,11 +24,11 @@ pub use spin_macro::*; pub mod wit { #![allow(missing_docs)] wit_bindgen::generate!({ - world: "reactor", + world: "platform", path: "../../wit/preview2", - macro_call_prefix: "::spin_sdk::wit::", - duplicate_if_necessary, - macro_export + ownership: Borrowing { + duplicate_if_necessary: true + }, }); } @@ -134,131 +134,5 @@ pub mod config { pub use super::wit::fermyon::spin::config::{get_config as get, Error}; } -/// Inbound http trigger functionality -// Hide the docs since this is only needed for the macro #[doc(hidden)] -pub mod inbound_http { - use super::wit::exports::fermyon::spin::inbound_http; - use super::wit::fermyon::spin::http_types as spin_http_types; - pub use inbound_http::*; - - impl TryFrom for http_types::Request> { - type Error = anyhow::Error; - - fn try_from(spin_req: inbound_http::Request) -> Result { - let mut http_req = http_types::Request::builder() - .method(spin_req.method) - .uri(&spin_req.uri); - - append_request_headers(&mut http_req, &spin_req)?; - - let body = match spin_req.body { - Some(b) => b.to_vec(), - None => Vec::new(), - }; - - let body = Some(bytes::Bytes::from(body)); - - Ok(http_req.body(body)?) - } - } - - impl From for http_types::Method { - fn from(spin_method: spin_http_types::Method) -> Self { - match spin_method { - spin_http_types::Method::Get => http_types::Method::GET, - spin_http_types::Method::Post => http_types::Method::POST, - spin_http_types::Method::Put => http_types::Method::PUT, - spin_http_types::Method::Delete => http_types::Method::DELETE, - spin_http_types::Method::Patch => http_types::Method::PATCH, - spin_http_types::Method::Head => http_types::Method::HEAD, - spin_http_types::Method::Options => http_types::Method::OPTIONS, - } - } - } - - fn append_request_headers( - http_req: &mut http_types::request::Builder, - spin_req: &inbound_http::Request, - ) -> anyhow::Result<()> { - let headers = http_req.headers_mut().unwrap(); - for (k, v) in &spin_req.headers { - headers.append( - ::from_str(k)?, - http_types::header::HeaderValue::from_str(v)?, - ); - } - - Ok(()) - } - - impl TryFrom for http_types::Response> { - type Error = anyhow::Error; - - fn try_from(spin_res: inbound_http::Response) -> Result { - let mut http_res = http_types::Response::builder().status(spin_res.status); - append_response_headers(&mut http_res, spin_res.clone())?; - - let body = match spin_res.body { - Some(b) => b.to_vec(), - None => Vec::new(), - }; - let body = Some(bytes::Bytes::from(body)); - - Ok(http_res.body(body)?) - } - } - - fn append_response_headers( - http_res: &mut http_types::response::Builder, - spin_res: inbound_http::Response, - ) -> anyhow::Result<()> { - let headers = http_res.headers_mut().unwrap(); - for (k, v) in spin_res.headers.unwrap() { - headers.append( - ::from_str(&k)?, - http_types::header::HeaderValue::from_str(&v)?, - ); - } - - Ok(()) - } - - impl TryFrom>> for inbound_http::Response { - type Error = anyhow::Error; - - fn try_from( - http_res: http_types::Response>, - ) -> Result { - let status = http_res.status().as_u16(); - let headers = Some(outbound_headers(http_res.headers())?); - let body = http_res.body().as_ref().map(|b| b.to_vec()); - - Ok(inbound_http::Response { - status, - headers, - body, - }) - } - } - - fn outbound_headers(hm: &http_types::HeaderMap) -> anyhow::Result> { - let mut res = Vec::new(); - - for (k, v) in hm { - res.push(( - k.as_str().to_string(), - std::str::from_utf8(v.as_bytes())?.to_string(), - )); - } - - Ok(res) - } -} - -/// Inbound redis trigger functionality -// Hide the docs since this is only needed for the macro -#[doc(hidden)] -pub mod inbound_redis { - pub use super::wit::exports::fermyon::spin::inbound_redis::*; -} +pub use wit_bindgen; diff --git a/sdk/rust/src/outbound_http.rs b/sdk/rust/src/outbound_http.rs index 0f20fcfd2..8f4d9e31f 100644 --- a/sdk/rust/src/outbound_http.rs +++ b/sdk/rust/src/outbound_http.rs @@ -2,9 +2,7 @@ use http_types::{header::HeaderName, HeaderValue}; use super::http::{Request, Response}; -use super::wit::fermyon::spin::http::{ - self as spin_http, Request as OutboundRequest, Response as OutboundResponse, -}; +use super::wit::fermyon::spin::http::{self as spin_http}; use super::wit::fermyon::spin::http_types as spin_http_types; /// Error type returned by [`send_request`][crate::outbound_http::send_request] @@ -30,7 +28,7 @@ pub fn send_request(req: Request) -> Result { let body = body.as_ref().map(|bytes| bytes.as_ref()); - let out_req = OutboundRequest { + let out_req = spin_http_types::RequestParam { method, uri: &uri, params: ¶ms, @@ -38,7 +36,7 @@ pub fn send_request(req: Request) -> Result { body, }; - let OutboundResponse { + let spin_http_types::Response { status, headers, body, diff --git a/tests/http/headers-env-routes-test/Cargo.lock b/tests/http/headers-env-routes-test/Cargo.lock index 2cdf65baf..f02b356c2 100644 --- a/tests/http/headers-env-routes-test/Cargo.lock +++ b/tests/http/headers-env-routes-test/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -22,9 +22,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bytes" @@ -42,6 +42,12 @@ dependencies = [ "spin-sdk", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "fnv" version = "1.0.7" @@ -59,9 +65,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] name = "heck" @@ -101,11 +107,11 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] @@ -130,9 +136,9 @@ checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "memchr" -version = "2.4.1" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "percent-encoding" @@ -142,18 +148,18 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -179,6 +185,12 @@ dependencies = [ "smartstring", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" version = "1.0.17" @@ -187,24 +199,41 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", ] +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + [[package]] name = "smartcow" version = "0.2.1" @@ -225,6 +254,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "spin-macro" version = "0.1.0" @@ -270,9 +308,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -375,31 +413,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "b39de0723a53d3c8f54bed106cfbc0d06b3e4d945c5c5022115a61e3b29183ae" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "9fab01638cbecc57afec7b53ce0e28620b44d7ae1dea53120c96dd08486c07ce" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "a128cea7b8516703ab41b10a0b1aa9ba18d0454cd3792341489947ddeee268db" dependencies = [ "indexmap", "semver", @@ -407,19 +447,19 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" dependencies = [ "anyhow", "wit-component", @@ -428,10 +468,11 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", @@ -441,9 +482,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" +checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" dependencies = [ "heck", "wit-bindgen-core", @@ -451,28 +492,31 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.18", + "syn 2.0.37", "wit-bindgen-core", "wit-bindgen-rust", + "wit-bindgen-rust-lib", "wit-component", ] [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "af872ef43ecb73cc49c7bd2dd19ef9117168e183c78cf70000dca0e14b6a5473" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -481,9 +525,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "1dcd022610436a1873e60bfdd9b407763f2404adf7d1cb57912c7ae4059e57a5" dependencies = [ "anyhow", "id-arena", @@ -491,6 +535,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/tests/http/simple-spin-rust/Cargo.lock b/tests/http/simple-spin-rust/Cargo.lock index 41015ec91..6198b5ded 100644 --- a/tests/http/simple-spin-rust/Cargo.lock +++ b/tests/http/simple-spin-rust/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -22,9 +22,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bytes" @@ -32,6 +32,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "fnv" version = "1.0.7" @@ -50,9 +56,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] name = "heck" @@ -93,11 +99,11 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] @@ -128,9 +134,9 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "percent-encoding" @@ -140,18 +146,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -177,6 +183,12 @@ dependencies = [ "smartstring", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" version = "1.0.17" @@ -185,22 +197,33 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", +] + +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", ] [[package]] @@ -213,6 +236,12 @@ dependencies = [ "spin-sdk", ] +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + [[package]] name = "smartcow" version = "0.2.1" @@ -233,6 +262,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "spin-macro" version = "0.1.0" @@ -278,9 +316,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -383,31 +421,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "b39de0723a53d3c8f54bed106cfbc0d06b3e4d945c5c5022115a61e3b29183ae" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "9fab01638cbecc57afec7b53ce0e28620b44d7ae1dea53120c96dd08486c07ce" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "a128cea7b8516703ab41b10a0b1aa9ba18d0454cd3792341489947ddeee268db" dependencies = [ "indexmap", "semver", @@ -415,19 +455,19 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" dependencies = [ "anyhow", "wit-component", @@ -436,10 +476,11 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", @@ -449,9 +490,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" +checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" dependencies = [ "heck", "wit-bindgen-core", @@ -459,28 +500,31 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.18", + "syn 2.0.37", "wit-bindgen-core", "wit-bindgen-rust", + "wit-bindgen-rust-lib", "wit-component", ] [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "af872ef43ecb73cc49c7bd2dd19ef9117168e183c78cf70000dca0e14b6a5473" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -489,9 +533,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "1dcd022610436a1873e60bfdd9b407763f2404adf7d1cb57912c7ae4059e57a5" dependencies = [ "anyhow", "id-arena", @@ -499,6 +543,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/wit/preview2/key-value.wit b/wit/preview2/key-value.wit index 29218f587..ff21c8661 100644 --- a/wit/preview2/key-value.wit +++ b/wit/preview2/key-value.wit @@ -1,6 +1,51 @@ interface key-value { - // A handle to an open key-value store - type store = u32 + // An open key-value store + resource store { + + // Open the store with the specified name. + // + // If `name` is "default", the default store is opened. Otherwise, + // `name` must refer to a store defined and configured in a runtime + // configuration file supplied with the application. + // + // `error::no-such-store` will be raised if the `name` is not recognized. + open: static func(name: string) -> result + + // Get the value associated with the specified `key` from the specified + // `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store, and `error::no-such-key` will be raised if there is no + // tuple for `key` in `store`. + get: func(key: string) -> result, error> + + // Set the `value` associated with the specified `key` in the specified + // `store`, overwriting any existing value. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + set: func(key: string, value: list) -> result<_, error> + + // Delete the tuple with the specified `key` from the specified `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. No error is raised if a tuple did not previously + // exist for `key`. + delete: func(key: string) -> result<_, error> + + // Return whether a tuple exists for the specified `key` in the specified + // `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + exists: func(key: string) -> result + + // Return a list of all the keys in the specified `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + get-keys: func() -> result, error> + } // The set of errors which may be raised by functions in this interface variant error { @@ -28,53 +73,4 @@ interface key-value { // Some implementation-specific error has occurred (e.g. I/O) io(string) } - - // Open the store with the specified name. - // - // If `name` is "default", the default store is opened. Otherwise, - // `name` must refer to a store defined and configured in a runtime - // configuration file supplied with the application. - // - // `error::no-such-store` will be raised if the `name` is not recognized. - open: func(name: string) -> result - - // Get the value associated with the specified `key` from the specified - // `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store, and `error::no-such-key` will be raised if there is no - // tuple for `key` in `store`. - get: func(store: store, key: string) -> result, error> - - // Set the `value` associated with the specified `key` in the specified - // `store`, overwriting any existing value. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. - set: func(store: store, key: string, value: list) -> result<_, error> - - // Delete the tuple with the specified `key` from the specified `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. No error is raised if a tuple did not previously - // exist for `key`. - delete: func(store: store, key: string) -> result<_, error> - - // Return whether a tuple exists for the specified `key` in the specified - // `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. - exists: func(store: store, key: string) -> result - - // Return a list of all the keys in the specified `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. - get-keys: func(store: store) -> result, error> - - // Close the specified `store`. - // - // This has no effect if `store` is not a valid handle to an open store. - close: func(store: store) } diff --git a/wit/preview2/reactor.wit b/wit/preview2/reactor.wit index 1627fe404..7387f1839 100644 --- a/wit/preview2/reactor.wit +++ b/wit/preview2/reactor.wit @@ -36,3 +36,15 @@ world http-trigger { import llm export inbound-http } + +world platform { + import http-types + import config + import postgres + import mysql + import sqlite + import redis + import key-value + import http + import llm +} From 74cea0398427cbc26c1056079adeb0bc99e12fc8 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 5 Oct 2023 11:02:05 +0200 Subject: [PATCH 02/31] Upgrade to wit-bindgen-12 Signed-off-by: Ryan Levick --- Cargo.lock | 89 ++++++++++++------- sdk/rust/Cargo.toml | 2 +- sdk/rust/src/llm.rs | 6 +- sdk/rust/src/outbound_http.rs | 10 +-- sdk/rust/src/sqlite.rs | 6 +- tests/http/headers-env-routes-test/Cargo.lock | 20 ++--- tests/http/simple-spin-rust/Cargo.lock | 20 ++--- .../http-rust-outbound-redis/src/lib.rs | 75 +++++++++++----- 8 files changed, 140 insertions(+), 88 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc5b0fbdf..fef06034f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1180,7 +1180,7 @@ dependencies = [ "itertools 0.10.5", "log", "smallvec", - "wasmparser", + "wasmparser 0.112.0", "wasmtime-types", ] @@ -5453,8 +5453,8 @@ version = "0.1.0" source = "git+https://github.com/fermyon/spin-componentize?rev=f29cdb26a6b1700ae1fe48c94bbef26a8069d566#f29cdb26a6b1700ae1fe48c94bbef26a8069d566" dependencies = [ "anyhow", - "wasm-encoder", - "wasmparser", + "wasm-encoder 0.32.0", + "wasmparser 0.112.0", "wit-component", "wit-parser", ] @@ -6965,19 +6965,28 @@ dependencies = [ "leb128", ] +[[package]] +name = "wasm-encoder" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" +dependencies = [ + "leb128", +] + [[package]] name = "wasm-metadata" -version = "0.10.3" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08dc59d1fa569150851542143ca79438ca56845ccb31696c70225c638e063471" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap 2.0.0", "serde", "serde_json", "spdx", - "wasm-encoder", - "wasmparser", + "wasm-encoder 0.33.2", + "wasmparser 0.113.3", ] [[package]] @@ -7003,6 +7012,16 @@ dependencies = [ "semver", ] +[[package]] +name = "wasmparser" +version = "0.113.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" +dependencies = [ + "indexmap 2.0.0", + "semver", +] + [[package]] name = "wasmprinter" version = "0.2.64" @@ -7010,7 +7029,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34ddf5892036cd4b780d505eff1194a0cbc10ed896097656fdcea3744b5e7c2f" dependencies = [ "anyhow", - "wasmparser", + "wasmparser 0.112.0", ] [[package]] @@ -7038,8 +7057,8 @@ dependencies = [ "serde_derive", "serde_json", "target-lexicon", - "wasm-encoder", - "wasmparser", + "wasm-encoder 0.32.0", + "wasmparser 0.112.0", "wasmtime-cache", "wasmtime-component-macro", "wasmtime-component-util", @@ -7122,7 +7141,7 @@ dependencies = [ "object 0.32.1", "target-lexicon", "thiserror", - "wasmparser", + "wasmparser 0.112.0", "wasmtime-cranelift-shared", "wasmtime-environ", "wasmtime-versioned-export-macros", @@ -7160,8 +7179,8 @@ dependencies = [ "serde_derive", "target-lexicon", "thiserror", - "wasm-encoder", - "wasmparser", + "wasm-encoder 0.32.0", + "wasmparser 0.112.0", "wasmprinter", "wasmtime-component-util", "wasmtime-types", @@ -7251,7 +7270,7 @@ dependencies = [ "rand 0.8.5", "rustix 0.38.13", "sptr", - "wasm-encoder", + "wasm-encoder 0.32.0", "wasmtime-asm-macros", "wasmtime-environ", "wasmtime-fiber", @@ -7271,7 +7290,7 @@ dependencies = [ "serde", "serde_derive", "thiserror", - "wasmparser", + "wasmparser 0.112.0", ] [[package]] @@ -7331,7 +7350,7 @@ dependencies = [ "gimli 0.28.0", "object 0.32.1", "target-lexicon", - "wasmparser", + "wasmparser 0.112.0", "wasmtime-cranelift-shared", "wasmtime-environ", "winch-codegen", @@ -7373,7 +7392,7 @@ dependencies = [ "leb128", "memchr", "unicode-width", - "wasm-encoder", + "wasm-encoder 0.32.0", ] [[package]] @@ -7576,7 +7595,7 @@ dependencies = [ "regalloc2", "smallvec", "target-lexicon", - "wasmparser", + "wasmparser 0.112.0", "wasmtime-environ", ] @@ -7773,9 +7792,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" +checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -7783,9 +7802,9 @@ dependencies = [ [[package]] name = "wit-bindgen-core" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" +checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" dependencies = [ "anyhow", "wit-component", @@ -7794,9 +7813,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" +checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" dependencies = [ "anyhow", "heck 0.4.1", @@ -7808,9 +7827,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" +checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" dependencies = [ "heck 0.4.1", "wit-bindgen-core", @@ -7818,9 +7837,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" +checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" dependencies = [ "anyhow", "proc-macro2", @@ -7833,9 +7852,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.14.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d9f2d16dd55d1a372dcfd4b7a466ea876682a5a3cb97e71ec9eef04affa876" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -7843,17 +7862,17 @@ dependencies = [ "log", "serde", "serde_json", - "wasm-encoder", + "wasm-encoder 0.33.2", "wasm-metadata", - "wasmparser", + "wasmparser 0.113.3", "wit-parser", ] [[package]] name = "wit-parser" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e8b849bea13cc2315426b16efe6eb6813466d78f5fde69b0bb150c9c40e0dc" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -7861,6 +7880,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/sdk/rust/Cargo.toml b/sdk/rust/Cargo.toml index 09e82bf64..32a95b847 100644 --- a/sdk/rust/Cargo.toml +++ b/sdk/rust/Cargo.toml @@ -15,7 +15,7 @@ form_urlencoded = "1.0" http_types = { package = "http", version = "0.2" } spin-macro = { path = "macro" } thiserror = "1.0.37" -wit-bindgen = "0.11" +wit-bindgen = "0.12" routefinder = "0.5.3" serde_json = { version = "1.0.96", optional = true } serde = { version = "1.0.163", optional = true } diff --git a/sdk/rust/src/llm.rs b/sdk/rust/src/llm.rs index 778c3a468..55b431fb6 100644 --- a/sdk/rust/src/llm.rs +++ b/sdk/rust/src/llm.rs @@ -38,7 +38,7 @@ impl Default for InferencingParams { /// Perform inferencing using the provided model and prompt pub fn infer(model: InferencingModel, prompt: &str) -> Result { - llm::infer(model.as_str(), prompt, None) + llm::infer(&model.as_str(), prompt, None) } /// Perform inferencing using the provided model, prompt, and options @@ -47,7 +47,7 @@ pub fn infer_with_options( prompt: &str, options: InferencingParams, ) -> Result { - llm::infer(model.as_str(), prompt, Some(options)) + llm::infer(&model.as_str(), prompt, Some(options)) } /// Model used for generating embeddings @@ -71,5 +71,5 @@ pub fn generate_embeddings( model: EmbeddingModel, text: &[&str], ) -> Result { - llm::generate_embeddings(model.as_str(), text) + llm::generate_embeddings(&model.as_str(), text) } diff --git a/sdk/rust/src/outbound_http.rs b/sdk/rust/src/outbound_http.rs index 8f4d9e31f..0871cf2d8 100644 --- a/sdk/rust/src/outbound_http.rs +++ b/sdk/rust/src/outbound_http.rs @@ -30,17 +30,17 @@ pub fn send_request(req: Request) -> Result { let out_req = spin_http_types::RequestParam { method, - uri: &uri, - params: ¶ms, - headers, - body, + uri: &uri.as_str(), + params: ¶ms.as_slice(), + headers: &headers.as_slice(), + body: body.as_ref(), }; let spin_http_types::Response { status, headers, body, - } = spin_http::send_request(out_req)?; + } = spin_http::send_request(&&out_req)?; let resp_builder = http_types::response::Builder::new().status(status); let resp_builder = headers diff --git a/sdk/rust/src/sqlite.rs b/sdk/rust/src/sqlite.rs index a60d68b02..b6b10be5e 100644 --- a/sdk/rust/src/sqlite.rs +++ b/sdk/rust/src/sqlite.rs @@ -35,7 +35,11 @@ impl Connection { query: &str, parameters: &[ValueParam<'_>], ) -> Result { - sqlite::execute(self.0, query, parameters) + sqlite::execute( + self.0, + query, + parameters.iter().collect::>().as_slice(), + ) } } diff --git a/tests/http/headers-env-routes-test/Cargo.lock b/tests/http/headers-env-routes-test/Cargo.lock index f02b356c2..59aad0e82 100644 --- a/tests/http/headers-env-routes-test/Cargo.lock +++ b/tests/http/headers-env-routes-test/Cargo.lock @@ -447,9 +447,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" +checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -457,9 +457,9 @@ dependencies = [ [[package]] name = "wit-bindgen-core" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" +checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" dependencies = [ "anyhow", "wit-component", @@ -468,9 +468,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" +checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" dependencies = [ "anyhow", "heck", @@ -482,9 +482,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" +checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" dependencies = [ "heck", "wit-bindgen-core", @@ -492,9 +492,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" +checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" dependencies = [ "anyhow", "proc-macro2", diff --git a/tests/http/simple-spin-rust/Cargo.lock b/tests/http/simple-spin-rust/Cargo.lock index 6198b5ded..2c79f9c47 100644 --- a/tests/http/simple-spin-rust/Cargo.lock +++ b/tests/http/simple-spin-rust/Cargo.lock @@ -455,9 +455,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" +checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -465,9 +465,9 @@ dependencies = [ [[package]] name = "wit-bindgen-core" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" +checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" dependencies = [ "anyhow", "wit-component", @@ -476,9 +476,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" +checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" dependencies = [ "anyhow", "heck", @@ -490,9 +490,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" +checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" dependencies = [ "heck", "wit-bindgen-core", @@ -500,9 +500,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" +checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" dependencies = [ "anyhow", "proc-macro2", diff --git a/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs b/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs index 94bc84baf..6f7095cb9 100644 --- a/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs +++ b/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs @@ -12,7 +12,7 @@ const REDIS_ADDRESS_ENV: &str = "REDIS_ADDRESS"; fn test(_req: Request) -> Result { let address = std::env::var(REDIS_ADDRESS_ENV)?; - redis::set(&address, "spin-example-get-set", b"Eureka!") + redis::set(&address, "spin-example-get-set", &&b"Eureka!".as_slice()) .map_err(|_| anyhow!("Error executing Redis set command"))?; let payload = redis::get(&address, "spin-example-get-set") @@ -20,7 +20,7 @@ fn test(_req: Request) -> Result { assert_eq!(std::str::from_utf8(&payload).unwrap(), "Eureka!"); - redis::set(&address, "spin-example-incr", b"0") + redis::set(&address, "spin-example-incr", &&b"0".as_slice()) .map_err(|_| anyhow!("Error querying Redis set command"))?; let int_value = redis::incr(&address, "spin-example-incr") @@ -39,8 +39,8 @@ fn test(_req: Request) -> Result { &address, "set", &[ - RedisParameter::Binary(b"spin-example"), - RedisParameter::Binary(b"Eureka!"), + &&RedisParameter::Binary(&b"spin-example".as_slice()), + &&RedisParameter::Binary(&b"Eureka!".as_slice()), ], ) .map_err(|_| anyhow!("Error executing Redis set command"))?; @@ -49,14 +49,18 @@ fn test(_req: Request) -> Result { &address, "append", &[ - RedisParameter::Binary(b"spin-example"), - RedisParameter::Binary(b" I've got it!"), + &&RedisParameter::Binary(&b"spin-example".as_slice()), + &&RedisParameter::Binary(&b" I've got it!".as_slice()), ], ) .map_err(|_| anyhow!("Error executing Redis append command via `execute`"))?; - let values = redis::execute(&address, "get", &[RedisParameter::Binary(b"spin-example")]) - .map_err(|_| anyhow!("Error executing Redis get command via `execute`"))?; + let values = redis::execute( + &address, + "get", + &[&&RedisParameter::Binary(&b"spin-example".as_slice())], + ) + .map_err(|_| anyhow!("Error executing Redis get command via `execute`"))?; assert_eq!( values, @@ -66,36 +70,55 @@ fn test(_req: Request) -> Result { redis::execute( &address, "set", - &[RedisParameter::Binary(b"int-key"), RedisParameter::Int64(0)], + &[ + &&RedisParameter::Binary(&b"int-key".as_slice()), + &&RedisParameter::Int64(0), + ], ) .map_err(|_| anyhow!("Error executing Redis set command via `execute`"))?; - let values = redis::execute(&address, "incr", &[RedisParameter::Binary(b"int-key")]) - .map_err(|_| anyhow!("Error executing Redis incr command via `execute`"))?; + let values = redis::execute( + &address, + "incr", + &[&&RedisParameter::Binary(&b"int-key".as_slice())], + ) + .map_err(|_| anyhow!("Error executing Redis incr command via `execute`"))?; assert_eq!(values, &[RedisResult::Int64(1)]); - let values = redis::execute(&address, "get", &[RedisParameter::Binary(b"int-key")]) - .map_err(|_| anyhow!("Error executing Redis get command via `execute`"))?; + let values = redis::execute( + &address, + "get", + &[&&RedisParameter::Binary(&b"int-key".as_slice())], + ) + .map_err(|_| anyhow!("Error executing Redis get command via `execute`"))?; assert_eq!(values, &[RedisResult::Binary(b"1".to_vec())]); - redis::execute(&address, "del", &[RedisParameter::Binary(b"foo")]) - .map_err(|_| anyhow!("Error executing Redis del command via `execute`"))?; + redis::execute( + &address, + "del", + &[&&RedisParameter::Binary(&b"foo".as_slice())], + ) + .map_err(|_| anyhow!("Error executing Redis del command via `execute`"))?; redis::execute( &address, "sadd", &[ - RedisParameter::Binary(b"foo"), - RedisParameter::Binary(b"bar"), - RedisParameter::Binary(b"baz"), + &&RedisParameter::Binary(&b"foo".as_slice()), + &&RedisParameter::Binary(&b"bar".as_slice()), + &&RedisParameter::Binary(&b"baz".as_slice()), ], ) .map_err(|_| anyhow!("Error executing Redis sadd command via `execute`"))?; - let values = redis::execute(&address, "smembers", &[RedisParameter::Binary(b"foo")]) - .map_err(|_| anyhow!("Error executing Redis smembers command via `execute`"))?; + let values = redis::execute( + &address, + "smembers", + &[&&RedisParameter::Binary(&b"foo".as_slice())], + ) + .map_err(|_| anyhow!("Error executing Redis smembers command via `execute`"))?; assert_eq!( values.into_iter().collect::>(), @@ -111,14 +134,18 @@ fn test(_req: Request) -> Result { &address, "srem", &[ - RedisParameter::Binary(b"foo"), - RedisParameter::Binary(b"baz"), + &&RedisParameter::Binary(&b"foo".as_slice()), + &&RedisParameter::Binary(&b"baz".as_slice()), ], ) .map_err(|_| anyhow!("Error executing Redis srem command via `execute`"))?; - let values = redis::execute(&address, "smembers", &[RedisParameter::Binary(b"foo")]) - .map_err(|_| anyhow!("Error executing Redis smembers command via `execute`"))?; + let values = redis::execute( + &address, + "smembers", + &[&&RedisParameter::Binary(&b"foo".as_slice())], + ) + .map_err(|_| anyhow!("Error executing Redis smembers command via `execute`"))?; assert_eq!( values.into_iter().collect::>(), From 1dc7ce9a36d64c97c8dc52deb7b2f2824ecc4248 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 5 Oct 2023 11:23:13 +0200 Subject: [PATCH 03/31] Remove borrowing Signed-off-by: Ryan Levick --- sdk/rust/src/lib.rs | 3 -- sdk/rust/src/llm.rs | 16 +++--- sdk/rust/src/outbound_http.rs | 28 +++++----- sdk/rust/src/sqlite.rs | 54 ++++++++----------- .../http-rust-outbound-redis/src/lib.rs | 46 ++++++++-------- 5 files changed, 67 insertions(+), 80 deletions(-) diff --git a/sdk/rust/src/lib.rs b/sdk/rust/src/lib.rs index 775c08283..f867a56f0 100644 --- a/sdk/rust/src/lib.rs +++ b/sdk/rust/src/lib.rs @@ -26,9 +26,6 @@ pub mod wit { wit_bindgen::generate!({ world: "platform", path: "../../wit/preview2", - ownership: Borrowing { - duplicate_if_necessary: true - }, }); } diff --git a/sdk/rust/src/llm.rs b/sdk/rust/src/llm.rs index 55b431fb6..85b2726f4 100644 --- a/sdk/rust/src/llm.rs +++ b/sdk/rust/src/llm.rs @@ -7,6 +7,7 @@ pub use crate::wit::fermyon::spin::llm::{ /// The model use for inferencing #[allow(missing_docs)] +#[derive(Debug, Clone, Copy)] pub enum InferencingModel<'a> { Llama2Chat, CodellamaInstruct, @@ -14,12 +15,13 @@ pub enum InferencingModel<'a> { } impl<'a> InferencingModel<'a> { - fn as_str(&self) -> llm::InferencingModel<'a> { + fn to_string(&self) -> llm::InferencingModel { match self { InferencingModel::Llama2Chat => "llama2-chat", InferencingModel::CodellamaInstruct => "codellama-instruct", InferencingModel::Other(s) => s, } + .into() } } @@ -38,7 +40,7 @@ impl Default for InferencingParams { /// Perform inferencing using the provided model and prompt pub fn infer(model: InferencingModel, prompt: &str) -> Result { - llm::infer(&model.as_str(), prompt, None) + llm::infer(&model.to_string(), prompt, None) } /// Perform inferencing using the provided model, prompt, and options @@ -47,29 +49,31 @@ pub fn infer_with_options( prompt: &str, options: InferencingParams, ) -> Result { - llm::infer(&model.as_str(), prompt, Some(options)) + llm::infer(&model.to_string(), prompt, Some(options)) } /// Model used for generating embeddings #[allow(missing_docs)] +#[derive(Debug, Clone, Copy)] pub enum EmbeddingModel<'a> { AllMiniLmL6V2, Other(&'a str), } impl<'a> EmbeddingModel<'a> { - fn as_str(&self) -> llm::EmbeddingModel<'a> { + fn to_string(&self) -> llm::EmbeddingModel { match self { EmbeddingModel::AllMiniLmL6V2 => "all-minilm-l6-v2", EmbeddingModel::Other(s) => s, } + .into() } } /// Generate embeddings using the provided model and collection of text pub fn generate_embeddings( model: EmbeddingModel, - text: &[&str], + text: &[String], ) -> Result { - llm::generate_embeddings(&model.as_str(), text) + llm::generate_embeddings(&model.to_string(), text) } diff --git a/sdk/rust/src/outbound_http.rs b/sdk/rust/src/outbound_http.rs index 0871cf2d8..211ad8af8 100644 --- a/sdk/rust/src/outbound_http.rs +++ b/sdk/rust/src/outbound_http.rs @@ -20,27 +20,27 @@ pub fn send_request(req: Request) -> Result { let params = vec![]; - let headers = &req + let headers = req .headers .iter() .map(try_header_to_strs) .collect::>>()?; - let body = body.as_ref().map(|bytes| bytes.as_ref()); + let body = body.map(|bytes| bytes.to_vec()); - let out_req = spin_http_types::RequestParam { + let out_req = spin_http_types::Request { method, - uri: &uri.as_str(), - params: ¶ms.as_slice(), - headers: &headers.as_slice(), - body: body.as_ref(), + uri, + params, + headers, + body, }; let spin_http_types::Response { status, headers, body, - } = spin_http::send_request(&&out_req)?; + } = spin_http::send_request(&out_req)?; let resp_builder = http_types::response::Builder::new().status(status); let resp_builder = headers @@ -53,14 +53,14 @@ pub fn send_request(req: Request) -> Result { } fn try_header_to_strs<'k, 'v>( - header: (&'k HeaderName, &'v HeaderValue), -) -> Result<(&'k str, &'v str)> { + (header_name, header_value): (&'k HeaderName, &'v HeaderValue), +) -> Result<(String, String)> { Ok(( - header.0.as_str(), - header - .1 + header_name.to_string(), + header_value .to_str() - .map_err(|_| OutboundHttpError::InvalidUrl)?, + .map_err(|_| OutboundHttpError::InvalidUrl)? + .to_owned(), )) } diff --git a/sdk/rust/src/sqlite.rs b/sdk/rust/src/sqlite.rs index b6b10be5e..4912e3b64 100644 --- a/sdk/rust/src/sqlite.rs +++ b/sdk/rust/src/sqlite.rs @@ -9,10 +9,8 @@ pub use sqlite::Error; pub use sqlite::QueryResult; /// A row in a QueryResult pub use sqlite::RowResult; -/// A parameter used when executing a sqlite statement -pub use sqlite::ValueParam; /// A single column's result from a database query -pub use sqlite::ValueResult; +pub use sqlite::Value; /// Represents a store in which key value tuples may be placed #[derive(Debug)] @@ -30,16 +28,8 @@ impl Connection { } /// Execute a statement against the database - pub fn execute( - &self, - query: &str, - parameters: &[ValueParam<'_>], - ) -> Result { - sqlite::execute( - self.0, - query, - parameters.iter().collect::>().as_slice(), - ) + pub fn execute(&self, query: &str, parameters: &[Value]) -> Result { + sqlite::execute(self.0, query, parameters) } } @@ -61,7 +51,7 @@ pub struct Row<'a> { impl<'a> Row<'a> { /// Get a value by its column name - pub fn get>(&self, column: &str) -> Option { + pub fn get>(&self, column: &str) -> Option { let i = self.columns.iter().position(|c| c == column)?; self.result.get(i) } @@ -69,17 +59,17 @@ impl<'a> Row<'a> { impl sqlite::RowResult { /// Get a value by its index - pub fn get<'a, T: TryFrom<&'a ValueResult>>(&'a self, index: usize) -> Option { + pub fn get<'a, T: TryFrom<&'a Value>>(&'a self, index: usize) -> Option { self.values.get(index).and_then(|c| c.try_into().ok()) } } -impl<'a> TryFrom<&'a ValueResult> for bool { +impl<'a> TryFrom<&'a Value> for bool { type Error = (); - fn try_from(value: &'a ValueResult) -> Result { + fn try_from(value: &'a Value) -> Result { match value { - ValueResult::Integer(i) => Ok(*i != 0), + Value::Integer(i) => Ok(*i != 0), _ => Err(()), } } @@ -87,12 +77,12 @@ impl<'a> TryFrom<&'a ValueResult> for bool { macro_rules! int_conversions { ($($t:ty),*) => { - $(impl<'a> TryFrom<&'a ValueResult> for $t { + $(impl<'a> TryFrom<&'a Value> for $t { type Error = (); - fn try_from(value: &'a ValueResult) -> Result { + fn try_from(value: &'a Value) -> Result { match value { - ValueResult::Integer(i) => (*i).try_into().map_err(|_| ()), + Value::Integer(i) => (*i).try_into().map_err(|_| ()), _ => Err(()), } } @@ -102,36 +92,36 @@ macro_rules! int_conversions { int_conversions!(u8, u16, u32, u64, i8, i16, i32, i64, usize, isize); -impl<'a> TryFrom<&'a ValueResult> for f64 { +impl<'a> TryFrom<&'a Value> for f64 { type Error = (); - fn try_from(value: &'a ValueResult) -> Result { + fn try_from(value: &'a Value) -> Result { match value { - ValueResult::Real(f) => Ok(*f), + Value::Real(f) => Ok(*f), _ => Err(()), } } } -impl<'a> TryFrom<&'a ValueResult> for &'a str { +impl<'a> TryFrom<&'a Value> for &'a str { type Error = (); - fn try_from(value: &'a ValueResult) -> Result { + fn try_from(value: &'a Value) -> Result { match value { - ValueResult::Text(s) => Ok(s.as_str()), - ValueResult::Blob(b) => std::str::from_utf8(b).map_err(|_| ()), + Value::Text(s) => Ok(s.as_str()), + Value::Blob(b) => std::str::from_utf8(b).map_err(|_| ()), _ => Err(()), } } } -impl<'a> TryFrom<&'a ValueResult> for &'a [u8] { +impl<'a> TryFrom<&'a Value> for &'a [u8] { type Error = (); - fn try_from(value: &'a ValueResult) -> Result { + fn try_from(value: &'a Value) -> Result { match value { - ValueResult::Blob(b) => Ok(b.as_slice()), - ValueResult::Text(s) => Ok(s.as_bytes()), + Value::Blob(b) => Ok(b.as_slice()), + Value::Text(s) => Ok(s.as_bytes()), _ => Err(()), } } diff --git a/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs b/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs index 6f7095cb9..ccc19f8ae 100644 --- a/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs +++ b/tests/outbound-redis/http-rust-outbound-redis/src/lib.rs @@ -12,7 +12,7 @@ const REDIS_ADDRESS_ENV: &str = "REDIS_ADDRESS"; fn test(_req: Request) -> Result { let address = std::env::var(REDIS_ADDRESS_ENV)?; - redis::set(&address, "spin-example-get-set", &&b"Eureka!".as_slice()) + redis::set(&address, "spin-example-get-set", &b"Eureka!".to_vec()) .map_err(|_| anyhow!("Error executing Redis set command"))?; let payload = redis::get(&address, "spin-example-get-set") @@ -20,7 +20,7 @@ fn test(_req: Request) -> Result { assert_eq!(std::str::from_utf8(&payload).unwrap(), "Eureka!"); - redis::set(&address, "spin-example-incr", &&b"0".as_slice()) + redis::set(&address, "spin-example-incr", &b"0".to_vec()) .map_err(|_| anyhow!("Error querying Redis set command"))?; let int_value = redis::incr(&address, "spin-example-incr") @@ -28,7 +28,7 @@ fn test(_req: Request) -> Result { assert_eq!(int_value, 1); - let keys = vec!["spin-example-get-set", "spin-example-incr"]; + let keys = vec!["spin-example-get-set".into(), "spin-example-incr".into()]; let del_keys = redis::del(&address, &keys).map_err(|_| anyhow!("Error executing Redis incr command"))?; @@ -39,8 +39,8 @@ fn test(_req: Request) -> Result { &address, "set", &[ - &&RedisParameter::Binary(&b"spin-example".as_slice()), - &&RedisParameter::Binary(&b"Eureka!".as_slice()), + RedisParameter::Binary(b"spin-example".to_vec()), + RedisParameter::Binary(b"Eureka!".to_vec()), ], ) .map_err(|_| anyhow!("Error executing Redis set command"))?; @@ -49,8 +49,8 @@ fn test(_req: Request) -> Result { &address, "append", &[ - &&RedisParameter::Binary(&b"spin-example".as_slice()), - &&RedisParameter::Binary(&b" I've got it!".as_slice()), + RedisParameter::Binary(b"spin-example".to_vec()), + RedisParameter::Binary(b" I've got it!".to_vec()), ], ) .map_err(|_| anyhow!("Error executing Redis append command via `execute`"))?; @@ -58,7 +58,7 @@ fn test(_req: Request) -> Result { let values = redis::execute( &address, "get", - &[&&RedisParameter::Binary(&b"spin-example".as_slice())], + &[RedisParameter::Binary(b"spin-example".to_vec())], ) .map_err(|_| anyhow!("Error executing Redis get command via `execute`"))?; @@ -71,8 +71,8 @@ fn test(_req: Request) -> Result { &address, "set", &[ - &&RedisParameter::Binary(&b"int-key".as_slice()), - &&RedisParameter::Int64(0), + RedisParameter::Binary(b"int-key".to_vec()), + RedisParameter::Int64(0), ], ) .map_err(|_| anyhow!("Error executing Redis set command via `execute`"))?; @@ -80,7 +80,7 @@ fn test(_req: Request) -> Result { let values = redis::execute( &address, "incr", - &[&&RedisParameter::Binary(&b"int-key".as_slice())], + &[RedisParameter::Binary(b"int-key".to_vec())], ) .map_err(|_| anyhow!("Error executing Redis incr command via `execute`"))?; @@ -89,26 +89,22 @@ fn test(_req: Request) -> Result { let values = redis::execute( &address, "get", - &[&&RedisParameter::Binary(&b"int-key".as_slice())], + &[RedisParameter::Binary(b"int-key".to_vec())], ) .map_err(|_| anyhow!("Error executing Redis get command via `execute`"))?; assert_eq!(values, &[RedisResult::Binary(b"1".to_vec())]); - redis::execute( - &address, - "del", - &[&&RedisParameter::Binary(&b"foo".as_slice())], - ) - .map_err(|_| anyhow!("Error executing Redis del command via `execute`"))?; + redis::execute(&address, "del", &[RedisParameter::Binary(b"foo".to_vec())]) + .map_err(|_| anyhow!("Error executing Redis del command via `execute`"))?; redis::execute( &address, "sadd", &[ - &&RedisParameter::Binary(&b"foo".as_slice()), - &&RedisParameter::Binary(&b"bar".as_slice()), - &&RedisParameter::Binary(&b"baz".as_slice()), + RedisParameter::Binary(b"foo".to_vec()), + RedisParameter::Binary(b"bar".to_vec()), + RedisParameter::Binary(b"baz".to_vec()), ], ) .map_err(|_| anyhow!("Error executing Redis sadd command via `execute`"))?; @@ -116,7 +112,7 @@ fn test(_req: Request) -> Result { let values = redis::execute( &address, "smembers", - &[&&RedisParameter::Binary(&b"foo".as_slice())], + &[RedisParameter::Binary(b"foo".to_vec())], ) .map_err(|_| anyhow!("Error executing Redis smembers command via `execute`"))?; @@ -134,8 +130,8 @@ fn test(_req: Request) -> Result { &address, "srem", &[ - &&RedisParameter::Binary(&b"foo".as_slice()), - &&RedisParameter::Binary(&b"baz".as_slice()), + RedisParameter::Binary(b"foo".to_vec()), + RedisParameter::Binary(b"baz".to_vec()), ], ) .map_err(|_| anyhow!("Error executing Redis srem command via `execute`"))?; @@ -143,7 +139,7 @@ fn test(_req: Request) -> Result { let values = redis::execute( &address, "smembers", - &[&&RedisParameter::Binary(&b"foo".as_slice())], + &[RedisParameter::Binary(b"foo".to_vec())], ) .map_err(|_| anyhow!("Error executing Redis smembers command via `execute`"))?; From ab0b4af7595455d1a4bb5c08a4dc5a760e3527f7 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 5 Oct 2023 11:27:26 +0200 Subject: [PATCH 04/31] Update spin-componentize Signed-off-by: Ryan Levick --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fef06034f..bb8868ca3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5450,7 +5450,7 @@ dependencies = [ [[package]] name = "spin-componentize" version = "0.1.0" -source = "git+https://github.com/fermyon/spin-componentize?rev=f29cdb26a6b1700ae1fe48c94bbef26a8069d566#f29cdb26a6b1700ae1fe48c94bbef26a8069d566" +source = "git+https://github.com/fermyon/spin-componentize?rev=5c91eb4fb5c5ae6d51b2d6a7f8a40f8f8b0af7ac#5c91eb4fb5c5ae6d51b2d6a7f8a40f8f8b0af7ac" dependencies = [ "anyhow", "wasm-encoder 0.32.0", diff --git a/Cargo.toml b/Cargo.toml index 652a0156f..943dce501 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -110,7 +110,7 @@ tracing = { version = "0.1", features = ["log"] } wasmtime-wasi = { version = "13.0.0", features = ["tokio"] } wasi-common-preview1 = { version = "13.0.0", package = "wasi-common" } wasmtime = { version = "13.0.0", features = ["component-model"] } -spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "f29cdb26a6b1700ae1fe48c94bbef26a8069d566" } +spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "5c91eb4fb5c5ae6d51b2d6a7f8a40f8f8b0af7ac" } [[bin]] name = "spin" From 5e12f54a49d2da85358d151fc0b0b3cbcde3653e Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 5 Oct 2023 14:38:30 +0200 Subject: [PATCH 05/31] Move sqlite to resources Signed-off-by: Ryan Levick --- crates/sqlite/src/lib.rs | 22 ++++++++++++++-------- sdk/rust/src/sqlite.rs | 23 ++++------------------- wit/preview2/key-value.wit | 1 - wit/preview2/sqlite.wit | 25 +++++++++++-------------- 4 files changed, 29 insertions(+), 42 deletions(-) diff --git a/crates/sqlite/src/lib.rs b/crates/sqlite/src/lib.rs index d61980908..70cfd5c70 100644 --- a/crates/sqlite/src/lib.rs +++ b/crates/sqlite/src/lib.rs @@ -1,6 +1,7 @@ mod host_component; use spin_app::{async_trait, MetadataKey}; +use spin_core::wasmtime::component::Resource; use spin_key_value::table; use std::{collections::HashSet, sync::Arc}; @@ -60,20 +61,24 @@ impl SqliteDispatch { fn get_connection( &self, - connection: spin_world::sqlite::Connection, + connection: Resource, ) -> Result<&Arc, spin_world::sqlite::Error> { self.connections - .get(connection) + .get(connection.rep()) .ok_or(spin_world::sqlite::Error::InvalidConnection) } } #[async_trait] -impl spin_world::sqlite::Host for SqliteDispatch { +impl spin_world::sqlite::Host for SqliteDispatch {} + +#[async_trait] +impl spin_world::sqlite::HostConnection for SqliteDispatch { async fn open( &mut self, database: String, - ) -> anyhow::Result> { + ) -> anyhow::Result, spin_world::sqlite::Error>> + { if !self.allowed_databases.contains(&database) { return Ok(Err(spin_world::sqlite::Error::AccessDenied)); } @@ -86,12 +91,13 @@ impl spin_world::sqlite::Host for SqliteDispatch { self.connections.push(conn).map_err(|()| { spin_world::sqlite::Error::Io("too many connections opened".to_string()) }) - })) + }) + .map(|c| Resource::new_own(c))) } async fn execute( &mut self, - connection: spin_world::sqlite::Connection, + connection: Resource, query: String, parameters: Vec, ) -> anyhow::Result> { @@ -102,8 +108,8 @@ impl spin_world::sqlite::Host for SqliteDispatch { Ok(conn.query(&query, parameters).await) } - async fn close(&mut self, connection: spin_world::sqlite::Connection) -> anyhow::Result<()> { - let _ = self.connections.remove(connection); + fn drop(&mut self, connection: Resource) -> anyhow::Result<()> { + let _ = self.connections.remove(connection.rep()); Ok(()) } } diff --git a/sdk/rust/src/sqlite.rs b/sdk/rust/src/sqlite.rs index 4912e3b64..4e9e3b109 100644 --- a/sdk/rust/src/sqlite.rs +++ b/sdk/rust/src/sqlite.rs @@ -1,8 +1,7 @@ -#![allow(missing_docs)] - use super::wit::fermyon::spin::sqlite; -use sqlite::Connection as RawConnection; +/// Represents a store in which key value tuples may be placed +pub use sqlite::Connection; /// Errors which may be raised by the methods of `Store` pub use sqlite::Error; /// The result of making a query @@ -12,24 +11,10 @@ pub use sqlite::RowResult; /// A single column's result from a database query pub use sqlite::Value; -/// Represents a store in which key value tuples may be placed -#[derive(Debug)] -pub struct Connection(RawConnection); - -impl Connection { +impl sqlite::Connection { /// Open a connection to the default database pub fn open_default() -> Result { - Ok(Self(sqlite::open("default")?)) - } - - /// Open a connection - pub fn open(database: &str) -> Result { - Ok(Self(sqlite::open(database)?)) - } - - /// Execute a statement against the database - pub fn execute(&self, query: &str, parameters: &[Value]) -> Result { - sqlite::execute(self.0, query, parameters) + Self::open("default") } } diff --git a/wit/preview2/key-value.wit b/wit/preview2/key-value.wit index ff21c8661..05a5eed36 100644 --- a/wit/preview2/key-value.wit +++ b/wit/preview2/key-value.wit @@ -1,7 +1,6 @@ interface key-value { // An open key-value store resource store { - // Open the store with the specified name. // // If `name` is "default", the default store is opened. Otherwise, diff --git a/wit/preview2/sqlite.wit b/wit/preview2/sqlite.wit index 8d802edf8..35395f883 100644 --- a/wit/preview2/sqlite.wit +++ b/wit/preview2/sqlite.wit @@ -1,6 +1,16 @@ interface sqlite { // A handle to an open sqlite instance - type connection = u32 + resource connection { + // Open a connection to a named database instance. + // + // If `database` is "default", the default instance is opened. + // + // `error::no-such-database` will be raised if the `name` is not recognized. + open: static func(database: string) -> result + + // Execute a statement returning back data if there is any + execute: func(statement: string, parameters: list) -> result + } // The set of errors which may be raised by functions in this interface variant error { @@ -16,19 +26,6 @@ interface sqlite { io(string) } - // Open a connection to a named database instance. - // - // If `database` is "default", the default instance is opened. - // - // `error::no-such-database` will be raised if the `name` is not recognized. - open: func(database: string) -> result - - // Execute a statement returning back data if there is any - execute: func(conn: connection, statement: string, parameters: list) -> result - - // Close the specified `connection`. - close: func(conn: connection) - // A result of a query record query-result { // The names of the columns retrieved in the query From 83cb911436f763c5a6602a09726bf25a52570745 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 5 Oct 2023 14:38:37 +0200 Subject: [PATCH 06/31] Fix key-value test Signed-off-by: Ryan Levick --- crates/key-value-sqlite/src/lib.rs | 58 +++++++++++++++++++++--------- crates/key-value/src/lib.rs | 1 + 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/crates/key-value-sqlite/src/lib.rs b/crates/key-value-sqlite/src/lib.rs index 954cfb1eb..110b7ba45 100644 --- a/crates/key-value-sqlite/src/lib.rs +++ b/crates/key-value-sqlite/src/lib.rs @@ -144,8 +144,9 @@ impl Store for SqliteStore { #[cfg(test)] mod test { use super::*; + use spin_core::wasmtime::component::Resource; use spin_key_value::{DelegatingStoreManager, KeyValueDispatch}; - use spin_world::key_value::Host; + use spin_world::key_value::HostStore; #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn all() -> Result<()> { @@ -162,7 +163,7 @@ mod test { ); assert!(matches!( - kv.exists(42, "bar".to_owned()).await?, + kv.exists(Resource::new_own(42), "bar".to_owned()).await?, Err(Error::InvalidStore) )); @@ -176,41 +177,66 @@ mod test { )); let store = kv.open("default".to_owned()).await??; + let rep = store.rep(); - assert!(!kv.exists(store, "bar".to_owned()).await??); + assert!( + !kv.exists(Resource::new_own(rep), "bar".to_owned()) + .await?? + ); assert!(matches!( - kv.get(store, "bar".to_owned()).await?, + kv.get(Resource::new_own(rep), "bar".to_owned()).await?, Err(Error::NoSuchKey) )); - kv.set(store, "bar".to_owned(), b"baz".to_vec()).await??; + kv.set(Resource::new_own(rep), "bar".to_owned(), b"baz".to_vec()) + .await??; - assert!(kv.exists(store, "bar".to_owned()).await??); + assert!( + kv.exists(Resource::new_own(rep), "bar".to_owned()) + .await?? + ); - assert_eq!(b"baz" as &[_], &kv.get(store, "bar".to_owned()).await??); + assert_eq!( + b"baz" as &[_], + &kv.get(Resource::new_own(rep), "bar".to_owned()).await?? + ); - kv.set(store, "bar".to_owned(), b"wow".to_vec()).await??; + kv.set(Resource::new_own(rep), "bar".to_owned(), b"wow".to_vec()) + .await??; - assert_eq!(b"wow" as &[_], &kv.get(store, "bar".to_owned()).await??); + assert_eq!( + b"wow" as &[_], + &kv.get(Resource::new_own(rep), "bar".to_owned()).await?? + ); - assert_eq!(&["bar".to_owned()] as &[_], &kv.get_keys(store).await??); + assert_eq!( + &["bar".to_owned()] as &[_], + &kv.get_keys(Resource::new_own(rep)).await?? + ); - kv.delete(store, "bar".to_owned()).await??; + kv.delete(Resource::new_own(rep), "bar".to_owned()) + .await??; - assert!(!kv.exists(store, "bar".to_owned()).await??); + assert!( + !kv.exists(Resource::new_own(rep), "bar".to_owned()) + .await?? + ); - assert_eq!(&[] as &[String], &kv.get_keys(store).await??); + assert_eq!( + &[] as &[String], + &kv.get_keys(Resource::new_own(rep)).await?? + ); assert!(matches!( - kv.get(store, "bar".to_owned()).await?, + kv.get(Resource::new_own(rep), "bar".to_owned()).await?, Err(Error::NoSuchKey) )); - kv.close(store).await?; + kv.drop(Resource::new_own(rep))?; assert!(matches!( - kv.exists(store, "bar".to_owned()).await?, + kv.exists(Resource::new_own(rep), "bar".to_owned()).await?, Err(Error::InvalidStore) )); diff --git a/crates/key-value/src/lib.rs b/crates/key-value/src/lib.rs index 28b72244f..9c47aa270 100644 --- a/crates/key-value/src/lib.rs +++ b/crates/key-value/src/lib.rs @@ -70,6 +70,7 @@ impl Default for KeyValueDispatch { #[async_trait] impl key_value::Host for KeyValueDispatch {} + #[async_trait] impl key_value::HostStore for KeyValueDispatch { async fn open(&mut self, name: String) -> Result, Error>> { From 7dc99705b264b4b37ce0122ea3760b84abfe569b Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 5 Oct 2023 14:49:41 +0200 Subject: [PATCH 07/31] Update more examples to wit-bindgen 0.12 Signed-off-by: Ryan Levick --- crates/core/tests/core-wasi-test/Cargo.toml | 4 +- examples/spin-timer/app-example/Cargo.lock | 149 ++++++++++++-------- examples/spin-timer/app-example/Cargo.toml | 2 +- examples/spin-timer/app-example/src/lib.rs | 9 +- 4 files changed, 100 insertions(+), 64 deletions(-) diff --git a/crates/core/tests/core-wasi-test/Cargo.toml b/crates/core/tests/core-wasi-test/Cargo.toml index 675b7ccfa..5be599ae5 100644 --- a/crates/core/tests/core-wasi-test/Cargo.toml +++ b/crates/core/tests/core-wasi-test/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "core-wasi-test" +name = "core-wasi-test" version = "0.1.0" edition = "2021" @@ -7,6 +7,6 @@ edition = "2021" debug = true [dependencies] -wit-bindgen = "0.8" +wit-bindgen = "0.12" [workspace] diff --git a/examples/spin-timer/app-example/Cargo.lock b/examples/spin-timer/app-example/Cargo.lock index e105091a9..f33f14edb 100644 --- a/examples/spin-timer/app-example/Cargo.lock +++ b/examples/spin-timer/app-example/Cargo.lock @@ -4,15 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "bitflags" @@ -22,9 +16,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.2.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "cfg-if" @@ -32,6 +26,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "form_urlencoded" version = "1.1.0" @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -74,15 +74,21 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + [[package]] name = "leb128" version = "0.2.5" @@ -112,18 +118,18 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -132,13 +138,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.26" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" version = "1.0.17" @@ -147,40 +159,55 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.147" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 1.0.103", + "syn", ] [[package]] -name = "syn" -version = "1.0.103" +name = "serde_json" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", ] [[package]] name = "syn" -version = "2.0.15" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -270,31 +297,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -302,19 +331,19 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" dependencies = [ - "bitflags 2.2.1", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" dependencies = [ "anyhow", "wit-component", @@ -323,10 +352,11 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", @@ -336,9 +366,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-lib" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" +checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" dependencies = [ "heck", "wit-bindgen-core", @@ -346,28 +376,31 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.15", + "syn", "wit-bindgen-core", "wit-bindgen-rust", + "wit-bindgen-rust-lib", "wit-component", ] [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -376,9 +409,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -386,6 +419,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/examples/spin-timer/app-example/Cargo.toml b/examples/spin-timer/app-example/Cargo.toml index 92de91994..42968671a 100644 --- a/examples/spin-timer/app-example/Cargo.toml +++ b/examples/spin-timer/app-example/Cargo.toml @@ -9,6 +9,6 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.8.0" +wit-bindgen = "0.12" [workspace] diff --git a/examples/spin-timer/app-example/src/lib.rs b/examples/spin-timer/app-example/src/lib.rs index 7485a6065..c81e25544 100644 --- a/examples/spin-timer/app-example/src/lib.rs +++ b/examples/spin-timer/app-example/src/lib.rs @@ -1,17 +1,18 @@ wit_bindgen::generate!({ world: "spin-timer", - path: ".." + path: "..", + exports: { + world: MySpinTimer + } }); use fermyon::spin::config; struct MySpinTimer; -impl SpinTimer for MySpinTimer { +impl Guest for MySpinTimer { fn handle_timer_request() { let text = config::get_config("message").unwrap(); println!("{text}"); } } - -export_spin_timer!(MySpinTimer); From 93808451ef9462dc95a3f30fdaa66a1771bb4d33 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 5 Oct 2023 17:11:07 +0200 Subject: [PATCH 08/31] Fix documentation Signed-off-by: Ryan Levick --- sdk/rust/macro/src/lib.rs | 42 ++++----- sdk/rust/src/key_value.rs | 9 +- sdk/rust/src/sqlite.rs | 11 +-- tests/http/headers-env-routes-test/Cargo.lock | 20 ++-- tests/http/simple-spin-rust/Cargo.lock | 20 ++-- wit/preview2/key-value.wit | 92 +++++++++---------- wit/preview2/sqlite.wit | 35 +++---- 7 files changed, 113 insertions(+), 116 deletions(-) diff --git a/sdk/rust/macro/src/lib.rs b/sdk/rust/macro/src/lib.rs index 8461ba4b5..29634db44 100644 --- a/sdk/rust/macro/src/lib.rs +++ b/sdk/rust/macro/src/lib.rs @@ -56,28 +56,28 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { mod inbound_http_helpers { use super::fermyon::spin::http_types as spin_http_types; - + impl TryFrom for http::Request> { type Error = anyhow::Error; - + fn try_from(spin_req: spin_http_types::Request) -> Result { let mut http_req = http::Request::builder() .method(spin_req.method.clone()) .uri(&spin_req.uri); - + append_request_headers(&mut http_req, &spin_req)?; - + let body = match spin_req.body { Some(b) => b.to_vec(), None => Vec::new(), }; - + let body = Some(bytes::Bytes::from(body)); - + Ok(http_req.body(body)?) } } - + impl From for http::Method { fn from(spin_method: spin_http_types::Method) -> Self { match spin_method { @@ -91,7 +91,7 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { } } } - + fn append_request_headers( http_req: &mut http::request::Builder, spin_req: &spin_http_types::Request, @@ -103,27 +103,27 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { http::header::HeaderValue::from_str(v)?, ); } - + Ok(()) } - + impl TryFrom for http::Response> { type Error = anyhow::Error; - + fn try_from(spin_res: spin_http_types::Response) -> Result { let mut http_res = http::Response::builder().status(spin_res.status); append_response_headers(&mut http_res, spin_res.clone())?; - + let body = match spin_res.body { Some(b) => b.to_vec(), None => Vec::new(), }; let body = Some(bytes::Bytes::from(body)); - + Ok(http_res.body(body)?) } } - + fn append_response_headers( http_res: &mut http::response::Builder, spin_res: spin_http_types::Response, @@ -135,20 +135,20 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { http::header::HeaderValue::from_str(&v)?, ); } - + Ok(()) } - + impl TryFrom>> for spin_http_types::Response { type Error = anyhow::Error; - + fn try_from( http_res: http::Response>, ) -> Result { let status = http_res.status().as_u16(); let headers = Some(outbound_headers(http_res.headers())?); let body = http_res.body().as_ref().map(|b| b.to_vec()); - + Ok(spin_http_types::Response { status, headers, @@ -156,17 +156,17 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { }) } } - + fn outbound_headers(hm: &http::HeaderMap) -> anyhow::Result> { let mut res = Vec::new(); - + for (k, v) in hm { res.push(( k.as_str().to_string(), std::str::from_utf8(v.as_bytes())?.to_string(), )); } - + Ok(res) } } diff --git a/sdk/rust/src/key_value.rs b/sdk/rust/src/key_value.rs index dc8966f1f..623feee42 100644 --- a/sdk/rust/src/key_value.rs +++ b/sdk/rust/src/key_value.rs @@ -9,12 +9,13 @@ use super::wit::fermyon::spin::key_value; #[cfg(feature = "json")] use serde::{de::DeserializeOwned, Serialize}; -/// Errors which may be raised by the methods of `Store` -pub use key_value::Error; - -/// A store +/// An open key-value store +// TODO: use `#[doc(inline)]` as soon as wit-bindgen#688 is merged pub use key_value::Store; +#[doc(inline)] +pub use key_value::Error; + impl Store { #[cfg(feature = "json")] /// Serialize the given data to JSON, then set it as the value for the specified `key`. diff --git a/sdk/rust/src/sqlite.rs b/sdk/rust/src/sqlite.rs index 4e9e3b109..f466e3101 100644 --- a/sdk/rust/src/sqlite.rs +++ b/sdk/rust/src/sqlite.rs @@ -1,15 +1,10 @@ use super::wit::fermyon::spin::sqlite; /// Represents a store in which key value tuples may be placed +// TODO: use `#[doc(inline)]` as soon as wit-bindgen#688 is merged pub use sqlite::Connection; -/// Errors which may be raised by the methods of `Store` -pub use sqlite::Error; -/// The result of making a query -pub use sqlite::QueryResult; -/// A row in a QueryResult -pub use sqlite::RowResult; -/// A single column's result from a database query -pub use sqlite::Value; +#[doc(inline)] +pub use sqlite::{Error, QueryResult, RowResult, Value}; impl sqlite::Connection { /// Open a connection to the default database diff --git a/tests/http/headers-env-routes-test/Cargo.lock b/tests/http/headers-env-routes-test/Cargo.lock index 59aad0e82..3ff927856 100644 --- a/tests/http/headers-env-routes-test/Cargo.lock +++ b/tests/http/headers-env-routes-test/Cargo.lock @@ -413,18 +413,18 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.33.1" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39de0723a53d3c8f54bed106cfbc0d06b3e4d945c5c5022115a61e3b29183ae" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.10.5" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fab01638cbecc57afec7b53ce0e28620b44d7ae1dea53120c96dd08486c07ce" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", @@ -437,9 +437,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.113.1" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a128cea7b8516703ab41b10a0b1aa9ba18d0454cd3792341489947ddeee268db" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -507,9 +507,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af872ef43ecb73cc49c7bd2dd19ef9117168e183c78cf70000dca0e14b6a5473" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -525,9 +525,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.11.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dcd022610436a1873e60bfdd9b407763f2404adf7d1cb57912c7ae4059e57a5" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", diff --git a/tests/http/simple-spin-rust/Cargo.lock b/tests/http/simple-spin-rust/Cargo.lock index 2c79f9c47..c10b75288 100644 --- a/tests/http/simple-spin-rust/Cargo.lock +++ b/tests/http/simple-spin-rust/Cargo.lock @@ -421,18 +421,18 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.33.1" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39de0723a53d3c8f54bed106cfbc0d06b3e4d945c5c5022115a61e3b29183ae" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.10.5" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fab01638cbecc57afec7b53ce0e28620b44d7ae1dea53120c96dd08486c07ce" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", @@ -445,9 +445,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.113.1" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a128cea7b8516703ab41b10a0b1aa9ba18d0454cd3792341489947ddeee268db" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -515,9 +515,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af872ef43ecb73cc49c7bd2dd19ef9117168e183c78cf70000dca0e14b6a5473" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -533,9 +533,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.11.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dcd022610436a1873e60bfdd9b407763f2404adf7d1cb57912c7ae4059e57a5" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", diff --git a/wit/preview2/key-value.wit b/wit/preview2/key-value.wit index 05a5eed36..6ff177063 100644 --- a/wit/preview2/key-value.wit +++ b/wit/preview2/key-value.wit @@ -1,75 +1,75 @@ interface key-value { - // An open key-value store + /// An open key-value store resource store { - // Open the store with the specified name. - // - // If `name` is "default", the default store is opened. Otherwise, - // `name` must refer to a store defined and configured in a runtime - // configuration file supplied with the application. - // - // `error::no-such-store` will be raised if the `name` is not recognized. + /// Open the store with the specified name. + /// + /// If `name` is "default", the default store is opened. Otherwise, + /// `name` must refer to a store defined and configured in a runtime + /// configuration file supplied with the application. + /// + /// `error::no-such-store` will be raised if the `name` is not recognized. open: static func(name: string) -> result - // Get the value associated with the specified `key` from the specified - // `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store, and `error::no-such-key` will be raised if there is no - // tuple for `key` in `store`. + /// Get the value associated with the specified `key` from the specified + /// `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store, and `error::no-such-key` will be raised if there is no + /// tuple for `key` in `store`. get: func(key: string) -> result, error> - // Set the `value` associated with the specified `key` in the specified - // `store`, overwriting any existing value. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. + /// Set the `value` associated with the specified `key` in the specified + /// `store`, overwriting any existing value. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. set: func(key: string, value: list) -> result<_, error> - // Delete the tuple with the specified `key` from the specified `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. No error is raised if a tuple did not previously - // exist for `key`. + /// Delete the tuple with the specified `key` from the specified `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. No error is raised if a tuple did not previously + /// exist for `key`. delete: func(key: string) -> result<_, error> - // Return whether a tuple exists for the specified `key` in the specified - // `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. + /// Return whether a tuple exists for the specified `key` in the specified + /// `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. exists: func(key: string) -> result - // Return a list of all the keys in the specified `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. + /// Return a list of all the keys in the specified `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. get-keys: func() -> result, error> } - // The set of errors which may be raised by functions in this interface + /// The set of errors which may be raised by functions in this interface variant error { - // Too many stores have been opened simultaneously. Closing one or more - // stores prior to retrying may address this. + /// Too many stores have been opened simultaneously. Closing one or more + /// stores prior to retrying may address this. store-table-full, - // The host does not recognize the store name requested. Defining and - // configuring a store with that name in a runtime configuration file - // may address this. + /// The host does not recognize the store name requested. Defining and + /// configuring a store with that name in a runtime configuration file + /// may address this. no-such-store, - // The requesting component does not have access to the specified store - // (which may or may not exist). + /// The requesting component does not have access to the specified store + /// (which may or may not exist). access-denied, - // The store handle provided is not recognized, i.e. it was either never - // opened or has been closed. + /// The store handle provided is not recognized, i.e. it was either never + /// opened or has been closed. invalid-store, - // No key-value tuple exists for the specified key in the specified - // store. + /// No key-value tuple exists for the specified key in the specified + /// store. no-such-key, - // Some implementation-specific error has occurred (e.g. I/O) + /// Some implementation-specific error has occurred (e.g. I/O) io(string) } } diff --git a/wit/preview2/sqlite.wit b/wit/preview2/sqlite.wit index 35395f883..5d7badcb9 100644 --- a/wit/preview2/sqlite.wit +++ b/wit/preview2/sqlite.wit @@ -1,44 +1,45 @@ interface sqlite { - // A handle to an open sqlite instance + /// A handle to an open sqlite instance resource connection { - // Open a connection to a named database instance. - // - // If `database` is "default", the default instance is opened. - // - // `error::no-such-database` will be raised if the `name` is not recognized. + /// Open a connection to a named database instance. + /// + /// If `database` is "default", the default instance is opened. + /// + /// `error::no-such-database` will be raised if the `name` is not recognized. open: static func(database: string) -> result - // Execute a statement returning back data if there is any + /// Execute a statement returning back data if there is any execute: func(statement: string, parameters: list) -> result } - // The set of errors which may be raised by functions in this interface + /// The set of errors which may be raised by functions in this interface variant error { - // The host does not recognize the database name requested. + /// The host does not recognize the database name requested. no-such-database, - // The requesting component does not have access to the specified database (which may or may not exist). + /// The requesting component does not have access to the specified database (which may or may not exist). access-denied, - // The provided connection is not valid + /// The provided connection is not valid invalid-connection, - // The database has reached its capacity + /// The database has reached its capacity database-full, - // Some implementation-specific error has occurred (e.g. I/O) + /// Some implementation-specific error has occurred (e.g. I/O) io(string) } - // A result of a query + /// A result of a query record query-result { - // The names of the columns retrieved in the query + /// The names of the columns retrieved in the query columns: list, - // the row results each containing the values for all the columns for a given row + /// the row results each containing the values for all the columns for a given row rows: list, } - // A set of values for each of the columns in a query-result + /// A set of values for each of the columns in a query-result record row-result { values: list } + /// A single column's result from a database query variant value { integer(s64), real(float64), From 6498267a6c4a55f029d8e1b0f303f8136d3805ef Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Fri, 6 Oct 2023 11:02:06 +0200 Subject: [PATCH 09/31] Set up scaffolding for doing adapter Signed-off-by: Ryan Levick --- Cargo.lock | 2 + crates/trigger/Cargo.toml | 3 + crates/trigger/src/loader.rs | 43 +- crates/trigger/wasi/command-extended.wit | 39 + crates/trigger/wasi/deps/cli/command.wit | 33 + crates/trigger/wasi/deps/cli/environment.wit | 18 + crates/trigger/wasi/deps/cli/exit.wit | 4 + crates/trigger/wasi/deps/cli/run.wit | 4 + crates/trigger/wasi/deps/cli/stdio.wit | 17 + crates/trigger/wasi/deps/cli/terminal.wit | 59 ++ .../wasi/deps/clocks/monotonic-clock.wit | 34 + crates/trigger/wasi/deps/clocks/timezone.wit | 63 ++ .../trigger/wasi/deps/clocks/wall-clock.wit | 43 + .../trigger/wasi/deps/filesystem/preopens.wit | 6 + crates/trigger/wasi/deps/filesystem/types.wit | 824 ++++++++++++++++++ crates/trigger/wasi/deps/filesystem/world.wit | 6 + .../wasi/deps/http/incoming-handler.wit | 24 + .../wasi/deps/http/outgoing-handler.wit | 18 + crates/trigger/wasi/deps/http/proxy.wit | 34 + crates/trigger/wasi/deps/http/types.wit | 155 ++++ crates/trigger/wasi/deps/io/streams.wit | 300 +++++++ crates/trigger/wasi/deps/logging/logging.wit | 37 + crates/trigger/wasi/deps/poll/poll.wit | 39 + .../wasi/deps/random/insecure-seed.wit | 24 + crates/trigger/wasi/deps/random/insecure.wit | 21 + crates/trigger/wasi/deps/random/random.wit | 25 + .../wasi/deps/sockets/instance-network.wit | 9 + .../wasi/deps/sockets/ip-name-lookup.wit | 69 ++ crates/trigger/wasi/deps/sockets/network.wit | 187 ++++ .../wasi/deps/sockets/tcp-create-socket.wit | 27 + crates/trigger/wasi/deps/sockets/tcp.wit | 268 ++++++ .../wasi/deps/sockets/udp-create-socket.wit | 27 + crates/trigger/wasi/deps/sockets/udp.wit | 220 +++++ crates/trigger/wasi/main.wit | 33 + crates/trigger/wasi/test.wit | 41 + crates/trigger/wit/config.wit | 12 + crates/trigger/wit/http-types.wit | 44 + crates/trigger/wit/http.wit | 5 + crates/trigger/wit/inbound-http.wit | 5 + crates/trigger/wit/inbound-redis.wit | 6 + crates/trigger/wit/key-value.wit | 75 ++ crates/trigger/wit/llm.wit | 70 ++ crates/trigger/wit/mysql.wit | 19 + crates/trigger/wit/postgres.wit | 19 + crates/trigger/wit/rdbms-types.wit | 65 ++ crates/trigger/wit/reactor.wit | 50 ++ crates/trigger/wit/redis-types.wit | 24 + crates/trigger/wit/redis.wit | 31 + crates/trigger/wit/sqlite.wit | 50 ++ 49 files changed, 3229 insertions(+), 2 deletions(-) create mode 100644 crates/trigger/wasi/command-extended.wit create mode 100644 crates/trigger/wasi/deps/cli/command.wit create mode 100644 crates/trigger/wasi/deps/cli/environment.wit create mode 100644 crates/trigger/wasi/deps/cli/exit.wit create mode 100644 crates/trigger/wasi/deps/cli/run.wit create mode 100644 crates/trigger/wasi/deps/cli/stdio.wit create mode 100644 crates/trigger/wasi/deps/cli/terminal.wit create mode 100644 crates/trigger/wasi/deps/clocks/monotonic-clock.wit create mode 100644 crates/trigger/wasi/deps/clocks/timezone.wit create mode 100644 crates/trigger/wasi/deps/clocks/wall-clock.wit create mode 100644 crates/trigger/wasi/deps/filesystem/preopens.wit create mode 100644 crates/trigger/wasi/deps/filesystem/types.wit create mode 100644 crates/trigger/wasi/deps/filesystem/world.wit create mode 100644 crates/trigger/wasi/deps/http/incoming-handler.wit create mode 100644 crates/trigger/wasi/deps/http/outgoing-handler.wit create mode 100644 crates/trigger/wasi/deps/http/proxy.wit create mode 100644 crates/trigger/wasi/deps/http/types.wit create mode 100644 crates/trigger/wasi/deps/io/streams.wit create mode 100644 crates/trigger/wasi/deps/logging/logging.wit create mode 100644 crates/trigger/wasi/deps/poll/poll.wit create mode 100644 crates/trigger/wasi/deps/random/insecure-seed.wit create mode 100644 crates/trigger/wasi/deps/random/insecure.wit create mode 100644 crates/trigger/wasi/deps/random/random.wit create mode 100644 crates/trigger/wasi/deps/sockets/instance-network.wit create mode 100644 crates/trigger/wasi/deps/sockets/ip-name-lookup.wit create mode 100644 crates/trigger/wasi/deps/sockets/network.wit create mode 100644 crates/trigger/wasi/deps/sockets/tcp-create-socket.wit create mode 100644 crates/trigger/wasi/deps/sockets/tcp.wit create mode 100644 crates/trigger/wasi/deps/sockets/udp-create-socket.wit create mode 100644 crates/trigger/wasi/deps/sockets/udp.wit create mode 100644 crates/trigger/wasi/main.wit create mode 100644 crates/trigger/wasi/test.wit create mode 100644 crates/trigger/wit/config.wit create mode 100644 crates/trigger/wit/http-types.wit create mode 100644 crates/trigger/wit/http.wit create mode 100644 crates/trigger/wit/inbound-http.wit create mode 100644 crates/trigger/wit/inbound-redis.wit create mode 100644 crates/trigger/wit/key-value.wit create mode 100644 crates/trigger/wit/llm.wit create mode 100644 crates/trigger/wit/mysql.wit create mode 100644 crates/trigger/wit/postgres.wit create mode 100644 crates/trigger/wit/rdbms-types.wit create mode 100644 crates/trigger/wit/reactor.wit create mode 100644 crates/trigger/wit/redis-types.wit create mode 100644 crates/trigger/wit/redis.wit create mode 100644 crates/trigger/wit/sqlite.wit diff --git a/Cargo.lock b/Cargo.lock index bb8868ca3..4f9f080fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5913,6 +5913,8 @@ dependencies = [ "tracing", "url", "wasmtime", + "wit-component", + "wit-parser", ] [[package]] diff --git a/crates/trigger/Cargo.toml b/crates/trigger/Cargo.toml index 39da32c37..3672f37ac 100644 --- a/crates/trigger/Cargo.toml +++ b/crates/trigger/Cargo.toml @@ -49,6 +49,9 @@ url = "2" wasmtime = { workspace = true } spin-componentize = { workspace = true } +wit-component = "0.14.5" +wit-parser = "0.11.3" + [dev-dependencies] libtest-mimic = "0.6.1" snapbox = "0.4.12" diff --git a/crates/trigger/src/loader.rs b/crates/trigger/src/loader.rs index c98e59caa..d89cf3d1b 100644 --- a/crates/trigger/src/loader.rs +++ b/crates/trigger/src/loader.rs @@ -10,6 +10,7 @@ use spin_app::{ }; use spin_core::StoreBuilder; use tokio::fs; +use wit_parser::PackageName; use crate::parse_file_url; @@ -56,7 +57,6 @@ impl Loader for TriggerLoader { ) })?; let component = spin_componentize::componentize_if_necessary(&bytes)?; - std::fs::write("COMPONENT.wasm", &component).unwrap(); let was_already_component = matches!(component, std::borrow::Cow::Borrowed(_)); if was_already_component { terminal::warn!( @@ -65,7 +65,8 @@ impl Loader for TriggerLoader { path.display() ) } - spin_core::Component::new(engine, component) + let component = adapt_old_worlds_to_new(&component)?; + spin_core::Component::new(engine, component.as_ref()) .with_context(|| format!("loading module {path:?}")) } @@ -110,3 +111,41 @@ impl Loader for TriggerLoader { Ok(()) } } + +fn adapt_old_worlds_to_new(component: &[u8]) -> anyhow::Result> { + let mut resolve = wit_parser::Resolve::new(); + const SPIN_WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wit"); + resolve.push_dir(&std::path::Path::new(SPIN_WIT_PATH))?; + let pkg = resolve + .package_names + .get(&PackageName { + namespace: "fermyon".into(), + name: "spin".into(), + version: None, + }) + .unwrap(); + let spin_world = resolve.select_world(*pkg, Some("platform"))?; + const WASI_WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wasi"); + resolve.push_dir(&std::path::Path::new(WASI_WIT_PATH))?; + let pkg = resolve + .package_names + .get(&PackageName { + namespace: "wasmtime".into(), + name: "wasi".into(), + version: None, + }) + .unwrap(); + let wasi_world = resolve.select_world(*pkg, Some("preview1-adapter-reactor"))?; + resolve.merge_worlds(wasi_world, spin_world)?; + // We assume `component` is a valid component and so the only failure possible from `targets` + // is if the component does not conform to the world + if wit_component::targets(&resolve, spin_world, component).is_ok() { + return Ok(std::borrow::Cow::Borrowed(component)); + } + + // Now we compose the incoming component with an adapter component + // The adapter component exports the Spin 1.5 world and imports the Spin 2.0 world + // The exports of the adapter fill the incoming component's imports leaving a component + // that is 2.0 compatible + todo!() +} diff --git a/crates/trigger/wasi/command-extended.wit b/crates/trigger/wasi/command-extended.wit new file mode 100644 index 000000000..518fabdca --- /dev/null +++ b/crates/trigger/wasi/command-extended.wit @@ -0,0 +1,39 @@ +// All of the same imports and exports available in the wasi:cli/command world +// with addition of HTTP proxy related imports: +world command-extended { + import wasi:clocks/wall-clock + import wasi:clocks/monotonic-clock + import wasi:clocks/timezone + import wasi:filesystem/types + import wasi:filesystem/preopens + import wasi:sockets/instance-network + import wasi:sockets/ip-name-lookup + import wasi:sockets/network + import wasi:sockets/tcp-create-socket + import wasi:sockets/tcp + import wasi:sockets/udp-create-socket + import wasi:sockets/udp + import wasi:random/random + import wasi:random/insecure + import wasi:random/insecure-seed + import wasi:poll/poll + import wasi:io/streams + import wasi:cli/environment + import wasi:cli/exit + import wasi:cli/stdin + import wasi:cli/stdout + import wasi:cli/stderr + import wasi:cli/terminal-input + import wasi:cli/terminal-output + import wasi:cli/terminal-stdin + import wasi:cli/terminal-stdout + import wasi:cli/terminal-stderr + + export wasi:cli/run + + // We should replace all others with `include self.command` + // as soon as the unioning of worlds is available: + // https://github.com/WebAssembly/component-model/issues/169 + import wasi:logging/logging + import wasi:http/outgoing-handler +} diff --git a/crates/trigger/wasi/deps/cli/command.wit b/crates/trigger/wasi/deps/cli/command.wit new file mode 100644 index 000000000..3cd17bea3 --- /dev/null +++ b/crates/trigger/wasi/deps/cli/command.wit @@ -0,0 +1,33 @@ +package wasi:cli + +world command { + import wasi:clocks/wall-clock + import wasi:clocks/monotonic-clock + import wasi:clocks/timezone + import wasi:filesystem/types + import wasi:filesystem/preopens + import wasi:sockets/instance-network + import wasi:sockets/ip-name-lookup + import wasi:sockets/network + import wasi:sockets/tcp-create-socket + import wasi:sockets/tcp + import wasi:sockets/udp-create-socket + import wasi:sockets/udp + import wasi:random/random + import wasi:random/insecure + import wasi:random/insecure-seed + import wasi:poll/poll + import wasi:io/streams + + import environment + import exit + import stdin + import stdout + import stderr + import terminal-input + import terminal-output + import terminal-stdin + import terminal-stdout + import terminal-stderr + export run +} diff --git a/crates/trigger/wasi/deps/cli/environment.wit b/crates/trigger/wasi/deps/cli/environment.wit new file mode 100644 index 000000000..36790fe71 --- /dev/null +++ b/crates/trigger/wasi/deps/cli/environment.wit @@ -0,0 +1,18 @@ +interface environment { + /// Get the POSIX-style environment variables. + /// + /// Each environment variable is provided as a pair of string variable names + /// and string value. + /// + /// Morally, these are a value import, but until value imports are available + /// in the component model, this import function should return the same + /// values each time it is called. + get-environment: func() -> list> + + /// Get the POSIX-style arguments to the program. + get-arguments: func() -> list + + /// Return a path that programs should use as their initial current working + /// directory, interpreting `.` as shorthand for this. + initial-cwd: func() -> option +} diff --git a/crates/trigger/wasi/deps/cli/exit.wit b/crates/trigger/wasi/deps/cli/exit.wit new file mode 100644 index 000000000..4831d5078 --- /dev/null +++ b/crates/trigger/wasi/deps/cli/exit.wit @@ -0,0 +1,4 @@ +interface exit { + /// Exit the current instance and any linked instances. + exit: func(status: result) +} diff --git a/crates/trigger/wasi/deps/cli/run.wit b/crates/trigger/wasi/deps/cli/run.wit new file mode 100644 index 000000000..45a1ca533 --- /dev/null +++ b/crates/trigger/wasi/deps/cli/run.wit @@ -0,0 +1,4 @@ +interface run { + /// Run the program. + run: func() -> result +} diff --git a/crates/trigger/wasi/deps/cli/stdio.wit b/crates/trigger/wasi/deps/cli/stdio.wit new file mode 100644 index 000000000..6c9d4a41a --- /dev/null +++ b/crates/trigger/wasi/deps/cli/stdio.wit @@ -0,0 +1,17 @@ +interface stdin { + use wasi:io/streams.{input-stream} + + get-stdin: func() -> input-stream +} + +interface stdout { + use wasi:io/streams.{output-stream} + + get-stdout: func() -> output-stream +} + +interface stderr { + use wasi:io/streams.{output-stream} + + get-stderr: func() -> output-stream +} diff --git a/crates/trigger/wasi/deps/cli/terminal.wit b/crates/trigger/wasi/deps/cli/terminal.wit new file mode 100644 index 000000000..f32e74437 --- /dev/null +++ b/crates/trigger/wasi/deps/cli/terminal.wit @@ -0,0 +1,59 @@ +interface terminal-input { + /// The input side of a terminal. + /// + /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). + type terminal-input = u32 + + // In the future, this may include functions for disabling echoing, + // disabling input buffering so that keyboard events are sent through + // immediately, querying supported features, and so on. + + /// Dispose of the specified terminal-input after which it may no longer + /// be used. + drop-terminal-input: func(this: terminal-input) +} + +interface terminal-output { + /// The output side of a terminal. + /// + /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). + type terminal-output = u32 + + // In the future, this may include functions for querying the terminal + // size, being notified of terminal size changes, querying supported + // features, and so on. + + /// Dispose of the specified terminal-output, after which it may no longer + /// be used. + drop-terminal-output: func(this: terminal-output) +} + +/// An interface providing an optional `terminal-input` for stdin as a +/// link-time authority. +interface terminal-stdin { + use terminal-input.{terminal-input} + + /// If stdin is connected to a terminal, return a `terminal-input` handle + /// allowing further interaction with it. + get-terminal-stdin: func() -> option +} + +/// An interface providing an optional `terminal-output` for stdout as a +/// link-time authority. +interface terminal-stdout { + use terminal-output.{terminal-output} + + /// If stdout is connected to a terminal, return a `terminal-output` handle + /// allowing further interaction with it. + get-terminal-stdout: func() -> option +} + +/// An interface providing an optional `terminal-output` for stderr as a +/// link-time authority. +interface terminal-stderr { + use terminal-output.{terminal-output} + + /// If stderr is connected to a terminal, return a `terminal-output` handle + /// allowing further interaction with it. + get-terminal-stderr: func() -> option +} diff --git a/crates/trigger/wasi/deps/clocks/monotonic-clock.wit b/crates/trigger/wasi/deps/clocks/monotonic-clock.wit new file mode 100644 index 000000000..50eb4de11 --- /dev/null +++ b/crates/trigger/wasi/deps/clocks/monotonic-clock.wit @@ -0,0 +1,34 @@ +package wasi:clocks + +/// WASI Monotonic Clock is a clock API intended to let users measure elapsed +/// time. +/// +/// It is intended to be portable at least between Unix-family platforms and +/// Windows. +/// +/// A monotonic clock is a clock which has an unspecified initial value, and +/// successive reads of the clock will produce non-decreasing values. +/// +/// It is intended for measuring elapsed time. +interface monotonic-clock { + use wasi:poll/poll.{pollable} + + /// A timestamp in nanoseconds. + type instant = u64 + + /// Read the current value of the clock. + /// + /// The clock is monotonic, therefore calling this function repeatedly will + /// produce a sequence of non-decreasing values. + now: func() -> instant + + /// Query the resolution of the clock. + resolution: func() -> instant + + /// Create a `pollable` which will resolve once the specified time has been + /// reached. + subscribe: func( + when: instant, + absolute: bool + ) -> pollable +} diff --git a/crates/trigger/wasi/deps/clocks/timezone.wit b/crates/trigger/wasi/deps/clocks/timezone.wit new file mode 100644 index 000000000..2b6855668 --- /dev/null +++ b/crates/trigger/wasi/deps/clocks/timezone.wit @@ -0,0 +1,63 @@ +package wasi:clocks + +interface timezone { + use wall-clock.{datetime} + + /// A timezone. + /// + /// In timezones that recognize daylight saving time, also known as daylight + /// time and summer time, the information returned from the functions varies + /// over time to reflect these adjustments. + /// + /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). + type timezone = u32 + + /// Return information needed to display the given `datetime`. This includes + /// the UTC offset, the time zone name, and a flag indicating whether + /// daylight saving time is active. + /// + /// If the timezone cannot be determined for the given `datetime`, return a + /// `timezone-display` for `UTC` with a `utc-offset` of 0 and no daylight + /// saving time. + display: func(this: timezone, when: datetime) -> timezone-display + + /// The same as `display`, but only return the UTC offset. + utc-offset: func(this: timezone, when: datetime) -> s32 + + /// Dispose of the specified input-stream, after which it may no longer + /// be used. + drop-timezone: func(this: timezone) + + /// Information useful for displaying the timezone of a specific `datetime`. + /// + /// This information may vary within a single `timezone` to reflect daylight + /// saving time adjustments. + record timezone-display { + /// The number of seconds difference between UTC time and the local + /// time of the timezone. + /// + /// The returned value will always be less than 86400 which is the + /// number of seconds in a day (24*60*60). + /// + /// In implementations that do not expose an actual time zone, this + /// should return 0. + utc-offset: s32, + + /// The abbreviated name of the timezone to display to a user. The name + /// `UTC` indicates Coordinated Universal Time. Otherwise, this should + /// reference local standards for the name of the time zone. + /// + /// In implementations that do not expose an actual time zone, this + /// should be the string `UTC`. + /// + /// In time zones that do not have an applicable name, a formatted + /// representation of the UTC offset may be returned, such as `-04:00`. + name: string, + + /// Whether daylight saving time is active. + /// + /// In implementations that do not expose an actual time zone, this + /// should return false. + in-daylight-saving-time: bool, + } +} diff --git a/crates/trigger/wasi/deps/clocks/wall-clock.wit b/crates/trigger/wasi/deps/clocks/wall-clock.wit new file mode 100644 index 000000000..6137724f6 --- /dev/null +++ b/crates/trigger/wasi/deps/clocks/wall-clock.wit @@ -0,0 +1,43 @@ +package wasi:clocks + +/// WASI Wall Clock is a clock API intended to let users query the current +/// time. The name "wall" makes an analogy to a "clock on the wall", which +/// is not necessarily monotonic as it may be reset. +/// +/// It is intended to be portable at least between Unix-family platforms and +/// Windows. +/// +/// A wall clock is a clock which measures the date and time according to +/// some external reference. +/// +/// External references may be reset, so this clock is not necessarily +/// monotonic, making it unsuitable for measuring elapsed time. +/// +/// It is intended for reporting the current date and time for humans. +interface wall-clock { + /// A time and date in seconds plus nanoseconds. + record datetime { + seconds: u64, + nanoseconds: u32, + } + + /// Read the current value of the clock. + /// + /// This clock is not monotonic, therefore calling this function repeatedly + /// will not necessarily produce a sequence of non-decreasing values. + /// + /// The returned timestamps represent the number of seconds since + /// 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], + /// also known as [Unix Time]. + /// + /// The nanoseconds field of the output is always less than 1000000000. + /// + /// [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 + /// [Unix Time]: https://en.wikipedia.org/wiki/Unix_time + now: func() -> datetime + + /// Query the resolution of the clock. + /// + /// The nanoseconds field of the output is always less than 1000000000. + resolution: func() -> datetime +} diff --git a/crates/trigger/wasi/deps/filesystem/preopens.wit b/crates/trigger/wasi/deps/filesystem/preopens.wit new file mode 100644 index 000000000..f45661b8a --- /dev/null +++ b/crates/trigger/wasi/deps/filesystem/preopens.wit @@ -0,0 +1,6 @@ +interface preopens { + use types.{descriptor} + + /// Return the set of preopened directories, and their path. + get-directories: func() -> list> +} diff --git a/crates/trigger/wasi/deps/filesystem/types.wit b/crates/trigger/wasi/deps/filesystem/types.wit new file mode 100644 index 000000000..e72a742de --- /dev/null +++ b/crates/trigger/wasi/deps/filesystem/types.wit @@ -0,0 +1,824 @@ +/// WASI filesystem is a filesystem API primarily intended to let users run WASI +/// programs that access their files on their existing filesystems, without +/// significant overhead. +/// +/// It is intended to be roughly portable between Unix-family platforms and +/// Windows, though it does not hide many of the major differences. +/// +/// Paths are passed as interface-type `string`s, meaning they must consist of +/// a sequence of Unicode Scalar Values (USVs). Some filesystems may contain +/// paths which are not accessible by this API. +/// +/// The directory separator in WASI is always the forward-slash (`/`). +/// +/// All paths in WASI are relative paths, and are interpreted relative to a +/// `descriptor` referring to a base directory. If a `path` argument to any WASI +/// function starts with `/`, or if any step of resolving a `path`, including +/// `..` and symbolic link steps, reaches a directory outside of the base +/// directory, or reaches a symlink to an absolute or rooted path in the +/// underlying filesystem, the function fails with `error-code::not-permitted`. +interface types { + use wasi:io/streams.{input-stream, output-stream} + use wasi:clocks/wall-clock.{datetime} + + /// File size or length of a region within a file. + type filesize = u64 + + /// The type of a filesystem object referenced by a descriptor. + /// + /// Note: This was called `filetype` in earlier versions of WASI. + enum descriptor-type { + /// The type of the descriptor or file is unknown or is different from + /// any of the other types specified. + unknown, + /// The descriptor refers to a block device inode. + block-device, + /// The descriptor refers to a character device inode. + character-device, + /// The descriptor refers to a directory inode. + directory, + /// The descriptor refers to a named pipe. + fifo, + /// The file refers to a symbolic link inode. + symbolic-link, + /// The descriptor refers to a regular file inode. + regular-file, + /// The descriptor refers to a socket. + socket, + } + + /// Descriptor flags. + /// + /// Note: This was called `fdflags` in earlier versions of WASI. + flags descriptor-flags { + /// Read mode: Data can be read. + read, + /// Write mode: Data can be written to. + write, + /// Request that writes be performed according to synchronized I/O file + /// integrity completion. The data stored in the file and the file's + /// metadata are synchronized. This is similar to `O_SYNC` in POSIX. + /// + /// The precise semantics of this operation have not yet been defined for + /// WASI. At this time, it should be interpreted as a request, and not a + /// requirement. + file-integrity-sync, + /// Request that writes be performed according to synchronized I/O data + /// integrity completion. Only the data stored in the file is + /// synchronized. This is similar to `O_DSYNC` in POSIX. + /// + /// The precise semantics of this operation have not yet been defined for + /// WASI. At this time, it should be interpreted as a request, and not a + /// requirement. + data-integrity-sync, + /// Requests that reads be performed at the same level of integrety + /// requested for writes. This is similar to `O_RSYNC` in POSIX. + /// + /// The precise semantics of this operation have not yet been defined for + /// WASI. At this time, it should be interpreted as a request, and not a + /// requirement. + requested-write-sync, + /// Mutating directories mode: Directory contents may be mutated. + /// + /// When this flag is unset on a descriptor, operations using the + /// descriptor which would create, rename, delete, modify the data or + /// metadata of filesystem objects, or obtain another handle which + /// would permit any of those, shall fail with `error-code::read-only` if + /// they would otherwise succeed. + /// + /// This may only be set on directories. + mutate-directory, + } + + /// File attributes. + /// + /// Note: This was called `filestat` in earlier versions of WASI. + record descriptor-stat { + /// File type. + %type: descriptor-type, + /// Number of hard links to the file. + link-count: link-count, + /// For regular files, the file size in bytes. For symbolic links, the + /// length in bytes of the pathname contained in the symbolic link. + size: filesize, + /// Last data access timestamp. + data-access-timestamp: datetime, + /// Last data modification timestamp. + data-modification-timestamp: datetime, + /// Last file status change timestamp. + status-change-timestamp: datetime, + } + + /// Flags determining the method of how paths are resolved. + flags path-flags { + /// As long as the resolved path corresponds to a symbolic link, it is + /// expanded. + symlink-follow, + } + + /// Open flags used by `open-at`. + flags open-flags { + /// Create file if it does not exist, similar to `O_CREAT` in POSIX. + create, + /// Fail if not a directory, similar to `O_DIRECTORY` in POSIX. + directory, + /// Fail if file already exists, similar to `O_EXCL` in POSIX. + exclusive, + /// Truncate file to size 0, similar to `O_TRUNC` in POSIX. + truncate, + } + + /// Permissions mode used by `open-at`, `change-file-permissions-at`, and + /// similar. + flags modes { + /// True if the resource is considered readable by the containing + /// filesystem. + readable, + /// True if the resource is considered writable by the containing + /// filesystem. + writable, + /// True if the resource is considered executable by the containing + /// filesystem. This does not apply to directories. + executable, + } + + /// Access type used by `access-at`. + variant access-type { + /// Test for readability, writeability, or executability. + access(modes), + + /// Test whether the path exists. + exists, + } + + /// Number of hard links to an inode. + type link-count = u64 + + /// When setting a timestamp, this gives the value to set it to. + variant new-timestamp { + /// Leave the timestamp set to its previous value. + no-change, + /// Set the timestamp to the current time of the system clock associated + /// with the filesystem. + now, + /// Set the timestamp to the given value. + timestamp(datetime), + } + + /// A directory entry. + record directory-entry { + /// The type of the file referred to by this directory entry. + %type: descriptor-type, + + /// The name of the object. + name: string, + } + + /// Error codes returned by functions, similar to `errno` in POSIX. + /// Not all of these error codes are returned by the functions provided by this + /// API; some are used in higher-level library layers, and others are provided + /// merely for alignment with POSIX. + enum error-code { + /// Permission denied, similar to `EACCES` in POSIX. + access, + /// Resource unavailable, or operation would block, similar to `EAGAIN` and `EWOULDBLOCK` in POSIX. + would-block, + /// Connection already in progress, similar to `EALREADY` in POSIX. + already, + /// Bad descriptor, similar to `EBADF` in POSIX. + bad-descriptor, + /// Device or resource busy, similar to `EBUSY` in POSIX. + busy, + /// Resource deadlock would occur, similar to `EDEADLK` in POSIX. + deadlock, + /// Storage quota exceeded, similar to `EDQUOT` in POSIX. + quota, + /// File exists, similar to `EEXIST` in POSIX. + exist, + /// File too large, similar to `EFBIG` in POSIX. + file-too-large, + /// Illegal byte sequence, similar to `EILSEQ` in POSIX. + illegal-byte-sequence, + /// Operation in progress, similar to `EINPROGRESS` in POSIX. + in-progress, + /// Interrupted function, similar to `EINTR` in POSIX. + interrupted, + /// Invalid argument, similar to `EINVAL` in POSIX. + invalid, + /// I/O error, similar to `EIO` in POSIX. + io, + /// Is a directory, similar to `EISDIR` in POSIX. + is-directory, + /// Too many levels of symbolic links, similar to `ELOOP` in POSIX. + loop, + /// Too many links, similar to `EMLINK` in POSIX. + too-many-links, + /// Message too large, similar to `EMSGSIZE` in POSIX. + message-size, + /// Filename too long, similar to `ENAMETOOLONG` in POSIX. + name-too-long, + /// No such device, similar to `ENODEV` in POSIX. + no-device, + /// No such file or directory, similar to `ENOENT` in POSIX. + no-entry, + /// No locks available, similar to `ENOLCK` in POSIX. + no-lock, + /// Not enough space, similar to `ENOMEM` in POSIX. + insufficient-memory, + /// No space left on device, similar to `ENOSPC` in POSIX. + insufficient-space, + /// Not a directory or a symbolic link to a directory, similar to `ENOTDIR` in POSIX. + not-directory, + /// Directory not empty, similar to `ENOTEMPTY` in POSIX. + not-empty, + /// State not recoverable, similar to `ENOTRECOVERABLE` in POSIX. + not-recoverable, + /// Not supported, similar to `ENOTSUP` and `ENOSYS` in POSIX. + unsupported, + /// Inappropriate I/O control operation, similar to `ENOTTY` in POSIX. + no-tty, + /// No such device or address, similar to `ENXIO` in POSIX. + no-such-device, + /// Value too large to be stored in data type, similar to `EOVERFLOW` in POSIX. + overflow, + /// Operation not permitted, similar to `EPERM` in POSIX. + not-permitted, + /// Broken pipe, similar to `EPIPE` in POSIX. + pipe, + /// Read-only file system, similar to `EROFS` in POSIX. + read-only, + /// Invalid seek, similar to `ESPIPE` in POSIX. + invalid-seek, + /// Text file busy, similar to `ETXTBSY` in POSIX. + text-file-busy, + /// Cross-device link, similar to `EXDEV` in POSIX. + cross-device, + } + + /// File or memory access pattern advisory information. + enum advice { + /// The application has no advice to give on its behavior with respect + /// to the specified data. + normal, + /// The application expects to access the specified data sequentially + /// from lower offsets to higher offsets. + sequential, + /// The application expects to access the specified data in a random + /// order. + random, + /// The application expects to access the specified data in the near + /// future. + will-need, + /// The application expects that it will not access the specified data + /// in the near future. + dont-need, + /// The application expects to access the specified data once and then + /// not reuse it thereafter. + no-reuse, + } + + /// A descriptor is a reference to a filesystem object, which may be a file, + /// directory, named pipe, special file, or other object on which filesystem + /// calls may be made. + /// + /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). + type descriptor = u32 + + /// A 128-bit hash value, split into parts because wasm doesn't have a + /// 128-bit integer type. + record metadata-hash-value { + /// 64 bits of a 128-bit hash value. + lower: u64, + /// Another 64 bits of a 128-bit hash value. + upper: u64, + } + + /// Return a stream for reading from a file, if available. + /// + /// May fail with an error-code describing why the file cannot be read. + /// + /// Multiple read, write, and append streams may be active on the same open + /// file and they do not interfere with each other. + /// + /// Note: This allows using `read-stream`, which is similar to `read` in POSIX. + read-via-stream: func( + this: descriptor, + /// The offset within the file at which to start reading. + offset: filesize, + ) -> result + + /// Return a stream for writing to a file, if available. + /// + /// May fail with an error-code describing why the file cannot be written. + /// + /// Note: This allows using `write-stream`, which is similar to `write` in + /// POSIX. + write-via-stream: func( + this: descriptor, + /// The offset within the file at which to start writing. + offset: filesize, + ) -> result + + /// Return a stream for appending to a file, if available. + /// + /// May fail with an error-code describing why the file cannot be appended. + /// + /// Note: This allows using `write-stream`, which is similar to `write` with + /// `O_APPEND` in in POSIX. + append-via-stream: func( + this: descriptor, + ) -> result + + /// Provide file advisory information on a descriptor. + /// + /// This is similar to `posix_fadvise` in POSIX. + advise: func( + this: descriptor, + /// The offset within the file to which the advisory applies. + offset: filesize, + /// The length of the region to which the advisory applies. + length: filesize, + /// The advice. + advice: advice + ) -> result<_, error-code> + + /// Synchronize the data of a file to disk. + /// + /// This function succeeds with no effect if the file descriptor is not + /// opened for writing. + /// + /// Note: This is similar to `fdatasync` in POSIX. + sync-data: func(this: descriptor) -> result<_, error-code> + + /// Get flags associated with a descriptor. + /// + /// Note: This returns similar flags to `fcntl(fd, F_GETFL)` in POSIX. + /// + /// Note: This returns the value that was the `fs_flags` value returned + /// from `fdstat_get` in earlier versions of WASI. + get-flags: func(this: descriptor) -> result + + /// Get the dynamic type of a descriptor. + /// + /// Note: This returns the same value as the `type` field of the `fd-stat` + /// returned by `stat`, `stat-at` and similar. + /// + /// Note: This returns similar flags to the `st_mode & S_IFMT` value provided + /// by `fstat` in POSIX. + /// + /// Note: This returns the value that was the `fs_filetype` value returned + /// from `fdstat_get` in earlier versions of WASI. + get-type: func(this: descriptor) -> result + + /// Adjust the size of an open file. If this increases the file's size, the + /// extra bytes are filled with zeros. + /// + /// Note: This was called `fd_filestat_set_size` in earlier versions of WASI. + set-size: func(this: descriptor, size: filesize) -> result<_, error-code> + + /// Adjust the timestamps of an open file or directory. + /// + /// Note: This is similar to `futimens` in POSIX. + /// + /// Note: This was called `fd_filestat_set_times` in earlier versions of WASI. + set-times: func( + this: descriptor, + /// The desired values of the data access timestamp. + data-access-timestamp: new-timestamp, + /// The desired values of the data modification timestamp. + data-modification-timestamp: new-timestamp, + ) -> result<_, error-code> + + /// Read from a descriptor, without using and updating the descriptor's offset. + /// + /// This function returns a list of bytes containing the data that was + /// read, along with a bool which, when true, indicates that the end of the + /// file was reached. The returned list will contain up to `length` bytes; it + /// may return fewer than requested, if the end of the file is reached or + /// if the I/O operation is interrupted. + /// + /// In the future, this may change to return a `stream`. + /// + /// Note: This is similar to `pread` in POSIX. + read: func( + this: descriptor, + /// The maximum number of bytes to read. + length: filesize, + /// The offset within the file at which to read. + offset: filesize, + ) -> result, bool>, error-code> + + /// Write to a descriptor, without using and updating the descriptor's offset. + /// + /// It is valid to write past the end of a file; the file is extended to the + /// extent of the write, with bytes between the previous end and the start of + /// the write set to zero. + /// + /// In the future, this may change to take a `stream`. + /// + /// Note: This is similar to `pwrite` in POSIX. + write: func( + this: descriptor, + /// Data to write + buffer: list, + /// The offset within the file at which to write. + offset: filesize, + ) -> result + + /// Read directory entries from a directory. + /// + /// On filesystems where directories contain entries referring to themselves + /// and their parents, often named `.` and `..` respectively, these entries + /// are omitted. + /// + /// This always returns a new stream which starts at the beginning of the + /// directory. Multiple streams may be active on the same directory, and they + /// do not interfere with each other. + read-directory: func( + this: descriptor + ) -> result + + /// Synchronize the data and metadata of a file to disk. + /// + /// This function succeeds with no effect if the file descriptor is not + /// opened for writing. + /// + /// Note: This is similar to `fsync` in POSIX. + sync: func(this: descriptor) -> result<_, error-code> + + /// Create a directory. + /// + /// Note: This is similar to `mkdirat` in POSIX. + create-directory-at: func( + this: descriptor, + /// The relative path at which to create the directory. + path: string, + ) -> result<_, error-code> + + /// Return the attributes of an open file or directory. + /// + /// Note: This is similar to `fstat` in POSIX, except that it does not return + /// device and inode information. For testing whether two descriptors refer to + /// the same underlying filesystem object, use `is-same-object`. To obtain + /// additional data that can be used do determine whether a file has been + /// modified, use `metadata-hash`. + /// + /// Note: This was called `fd_filestat_get` in earlier versions of WASI. + stat: func(this: descriptor) -> result + + /// Return the attributes of a file or directory. + /// + /// Note: This is similar to `fstatat` in POSIX, except that it does not + /// return device and inode information. See the `stat` description for a + /// discussion of alternatives. + /// + /// Note: This was called `path_filestat_get` in earlier versions of WASI. + stat-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + path-flags: path-flags, + /// The relative path of the file or directory to inspect. + path: string, + ) -> result + + /// Adjust the timestamps of a file or directory. + /// + /// Note: This is similar to `utimensat` in POSIX. + /// + /// Note: This was called `path_filestat_set_times` in earlier versions of + /// WASI. + set-times-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + path-flags: path-flags, + /// The relative path of the file or directory to operate on. + path: string, + /// The desired values of the data access timestamp. + data-access-timestamp: new-timestamp, + /// The desired values of the data modification timestamp. + data-modification-timestamp: new-timestamp, + ) -> result<_, error-code> + + /// Create a hard link. + /// + /// Note: This is similar to `linkat` in POSIX. + link-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + old-path-flags: path-flags, + /// The relative source path from which to link. + old-path: string, + /// The base directory for `new-path`. + new-descriptor: descriptor, + /// The relative destination path at which to create the hard link. + new-path: string, + ) -> result<_, error-code> + + /// Open a file or directory. + /// + /// The returned descriptor is not guaranteed to be the lowest-numbered + /// descriptor not currently open/ it is randomized to prevent applications + /// from depending on making assumptions about indexes, since this is + /// error-prone in multi-threaded contexts. The returned descriptor is + /// guaranteed to be less than 2**31. + /// + /// If `flags` contains `descriptor-flags::mutate-directory`, and the base + /// descriptor doesn't have `descriptor-flags::mutate-directory` set, + /// `open-at` fails with `error-code::read-only`. + /// + /// If `flags` contains `write` or `mutate-directory`, or `open-flags` + /// contains `truncate` or `create`, and the base descriptor doesn't have + /// `descriptor-flags::mutate-directory` set, `open-at` fails with + /// `error-code::read-only`. + /// + /// Note: This is similar to `openat` in POSIX. + open-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + path-flags: path-flags, + /// The relative path of the object to open. + path: string, + /// The method by which to open the file. + open-flags: open-flags, + /// Flags to use for the resulting descriptor. + %flags: descriptor-flags, + /// Permissions to use when creating a new file. + modes: modes + ) -> result + + /// Read the contents of a symbolic link. + /// + /// If the contents contain an absolute or rooted path in the underlying + /// filesystem, this function fails with `error-code::not-permitted`. + /// + /// Note: This is similar to `readlinkat` in POSIX. + readlink-at: func( + this: descriptor, + /// The relative path of the symbolic link from which to read. + path: string, + ) -> result + + /// Remove a directory. + /// + /// Return `error-code::not-empty` if the directory is not empty. + /// + /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. + remove-directory-at: func( + this: descriptor, + /// The relative path to a directory to remove. + path: string, + ) -> result<_, error-code> + + /// Rename a filesystem object. + /// + /// Note: This is similar to `renameat` in POSIX. + rename-at: func( + this: descriptor, + /// The relative source path of the file or directory to rename. + old-path: string, + /// The base directory for `new-path`. + new-descriptor: descriptor, + /// The relative destination path to which to rename the file or directory. + new-path: string, + ) -> result<_, error-code> + + /// Create a symbolic link (also known as a "symlink"). + /// + /// If `old-path` starts with `/`, the function fails with + /// `error-code::not-permitted`. + /// + /// Note: This is similar to `symlinkat` in POSIX. + symlink-at: func( + this: descriptor, + /// The contents of the symbolic link. + old-path: string, + /// The relative destination path at which to create the symbolic link. + new-path: string, + ) -> result<_, error-code> + + /// Check accessibility of a filesystem path. + /// + /// Check whether the given filesystem path names an object which is + /// readable, writable, or executable, or whether it exists. + /// + /// This does not a guarantee that subsequent accesses will succeed, as + /// filesystem permissions may be modified asynchronously by external + /// entities. + /// + /// Note: This is similar to `faccessat` with the `AT_EACCESS` flag in POSIX. + access-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + path-flags: path-flags, + /// The relative path to check. + path: string, + /// The type of check to perform. + %type: access-type + ) -> result<_, error-code> + + /// Unlink a filesystem object that is not a directory. + /// + /// Return `error-code::is-directory` if the path refers to a directory. + /// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. + unlink-file-at: func( + this: descriptor, + /// The relative path to a file to unlink. + path: string, + ) -> result<_, error-code> + + /// Change the permissions of a filesystem object that is not a directory. + /// + /// Note that the ultimate meanings of these permissions is + /// filesystem-specific. + /// + /// Note: This is similar to `fchmodat` in POSIX. + change-file-permissions-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + path-flags: path-flags, + /// The relative path to operate on. + path: string, + /// The new permissions for the filesystem object. + modes: modes, + ) -> result<_, error-code> + + /// Change the permissions of a directory. + /// + /// Note that the ultimate meanings of these permissions is + /// filesystem-specific. + /// + /// Unlike in POSIX, the `executable` flag is not reinterpreted as a "search" + /// flag. `read` on a directory implies readability and searchability, and + /// `execute` is not valid for directories. + /// + /// Note: This is similar to `fchmodat` in POSIX. + change-directory-permissions-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + path-flags: path-flags, + /// The relative path to operate on. + path: string, + /// The new permissions for the directory. + modes: modes, + ) -> result<_, error-code> + + /// Request a shared advisory lock for an open file. + /// + /// This requests a *shared* lock; more than one shared lock can be held for + /// a file at the same time. + /// + /// If the open file has an exclusive lock, this function downgrades the lock + /// to a shared lock. If it has a shared lock, this function has no effect. + /// + /// This requests an *advisory* lock, meaning that the file could be accessed + /// by other programs that don't hold the lock. + /// + /// It is unspecified how shared locks interact with locks acquired by + /// non-WASI programs. + /// + /// This function blocks until the lock can be acquired. + /// + /// Not all filesystems support locking; on filesystems which don't support + /// locking, this function returns `error-code::unsupported`. + /// + /// Note: This is similar to `flock(fd, LOCK_SH)` in Unix. + lock-shared: func(this: descriptor) -> result<_, error-code> + + /// Request an exclusive advisory lock for an open file. + /// + /// This requests an *exclusive* lock; no other locks may be held for the + /// file while an exclusive lock is held. + /// + /// If the open file has a shared lock and there are no exclusive locks held + /// for the file, this function upgrades the lock to an exclusive lock. If the + /// open file already has an exclusive lock, this function has no effect. + /// + /// This requests an *advisory* lock, meaning that the file could be accessed + /// by other programs that don't hold the lock. + /// + /// It is unspecified whether this function succeeds if the file descriptor + /// is not opened for writing. It is unspecified how exclusive locks interact + /// with locks acquired by non-WASI programs. + /// + /// This function blocks until the lock can be acquired. + /// + /// Not all filesystems support locking; on filesystems which don't support + /// locking, this function returns `error-code::unsupported`. + /// + /// Note: This is similar to `flock(fd, LOCK_EX)` in Unix. + lock-exclusive: func(this: descriptor) -> result<_, error-code> + + /// Request a shared advisory lock for an open file. + /// + /// This requests a *shared* lock; more than one shared lock can be held for + /// a file at the same time. + /// + /// If the open file has an exclusive lock, this function downgrades the lock + /// to a shared lock. If it has a shared lock, this function has no effect. + /// + /// This requests an *advisory* lock, meaning that the file could be accessed + /// by other programs that don't hold the lock. + /// + /// It is unspecified how shared locks interact with locks acquired by + /// non-WASI programs. + /// + /// This function returns `error-code::would-block` if the lock cannot be + /// acquired. + /// + /// Not all filesystems support locking; on filesystems which don't support + /// locking, this function returns `error-code::unsupported`. + /// + /// Note: This is similar to `flock(fd, LOCK_SH | LOCK_NB)` in Unix. + try-lock-shared: func(this: descriptor) -> result<_, error-code> + + /// Request an exclusive advisory lock for an open file. + /// + /// This requests an *exclusive* lock; no other locks may be held for the + /// file while an exclusive lock is held. + /// + /// If the open file has a shared lock and there are no exclusive locks held + /// for the file, this function upgrades the lock to an exclusive lock. If the + /// open file already has an exclusive lock, this function has no effect. + /// + /// This requests an *advisory* lock, meaning that the file could be accessed + /// by other programs that don't hold the lock. + /// + /// It is unspecified whether this function succeeds if the file descriptor + /// is not opened for writing. It is unspecified how exclusive locks interact + /// with locks acquired by non-WASI programs. + /// + /// This function returns `error-code::would-block` if the lock cannot be + /// acquired. + /// + /// Not all filesystems support locking; on filesystems which don't support + /// locking, this function returns `error-code::unsupported`. + /// + /// Note: This is similar to `flock(fd, LOCK_EX | LOCK_NB)` in Unix. + try-lock-exclusive: func(this: descriptor) -> result<_, error-code> + + /// Release a shared or exclusive lock on an open file. + /// + /// Note: This is similar to `flock(fd, LOCK_UN)` in Unix. + unlock: func(this: descriptor) -> result<_, error-code> + + /// Dispose of the specified `descriptor`, after which it may no longer + /// be used. + drop-descriptor: func(this: descriptor) + + /// A stream of directory entries. + /// + /// This [represents a stream of `dir-entry`](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Streams). + type directory-entry-stream = u32 + + /// Read a single directory entry from a `directory-entry-stream`. + read-directory-entry: func( + this: directory-entry-stream + ) -> result, error-code> + + /// Dispose of the specified `directory-entry-stream`, after which it may no longer + /// be used. + drop-directory-entry-stream: func(this: directory-entry-stream) + + /// Test whether two descriptors refer to the same filesystem object. + /// + /// In POSIX, this corresponds to testing whether the two descriptors have the + /// same device (`st_dev`) and inode (`st_ino` or `d_ino`) numbers. + /// wasi-filesystem does not expose device and inode numbers, so this function + /// may be used instead. + is-same-object: func(this: descriptor, other: descriptor) -> bool + + /// Return a hash of the metadata associated with a filesystem object referred + /// to by a descriptor. + /// + /// This returns a hash of the last-modification timestamp and file size, and + /// may also include the inode number, device number, birth timestamp, and + /// other metadata fields that may change when the file is modified or + /// replaced. It may also include a secret value chosen by the + /// implementation and not otherwise exposed. + /// + /// Implementations are encourated to provide the following properties: + /// + /// - If the file is not modified or replaced, the computed hash value should + /// usually not change. + /// - If the object is modified or replaced, the computed hash value should + /// usually change. + /// - The inputs to the hash should not be easily computable from the + /// computed hash. + /// + /// However, none of these is required. + metadata-hash: func( + this: descriptor, + ) -> result + + /// Return a hash of the metadata associated with a filesystem object referred + /// to by a directory descriptor and a relative path. + /// + /// This performs the same hash computation as `metadata-hash`. + metadata-hash-at: func( + this: descriptor, + /// Flags determining the method of how the path is resolved. + path-flags: path-flags, + /// The relative path of the file or directory to inspect. + path: string, + ) -> result +} diff --git a/crates/trigger/wasi/deps/filesystem/world.wit b/crates/trigger/wasi/deps/filesystem/world.wit new file mode 100644 index 000000000..b51f484f8 --- /dev/null +++ b/crates/trigger/wasi/deps/filesystem/world.wit @@ -0,0 +1,6 @@ +package wasi:filesystem + +world example-world { + import types + import preopens +} diff --git a/crates/trigger/wasi/deps/http/incoming-handler.wit b/crates/trigger/wasi/deps/http/incoming-handler.wit new file mode 100644 index 000000000..d0e270465 --- /dev/null +++ b/crates/trigger/wasi/deps/http/incoming-handler.wit @@ -0,0 +1,24 @@ +// The `wasi:http/incoming-handler` interface is meant to be exported by +// components and called by the host in response to a new incoming HTTP +// response. +// +// NOTE: in Preview3, this interface will be merged with +// `wasi:http/outgoing-handler` into a single `wasi:http/handler` interface +// that takes a `request` parameter and returns a `response` result. +// +interface incoming-handler { + use types.{incoming-request, response-outparam} + + // The `handle` function takes an outparam instead of returning its response + // so that the component may stream its response while streaming any other + // request or response bodies. The callee MUST write a response to the + // `response-out` and then finish the response before returning. The `handle` + // function is allowed to continue execution after finishing the response's + // output stream. While this post-response execution is taken off the + // critical path, since there is no return value, there is no way to report + // its success or failure. + handle: func( + request: incoming-request, + response-out: response-outparam + ) +} diff --git a/crates/trigger/wasi/deps/http/outgoing-handler.wit b/crates/trigger/wasi/deps/http/outgoing-handler.wit new file mode 100644 index 000000000..06c8e469f --- /dev/null +++ b/crates/trigger/wasi/deps/http/outgoing-handler.wit @@ -0,0 +1,18 @@ +// The `wasi:http/outgoing-handler` interface is meant to be imported by +// components and implemented by the host. +// +// NOTE: in Preview3, this interface will be merged with +// `wasi:http/outgoing-handler` into a single `wasi:http/handler` interface +// that takes a `request` parameter and returns a `response` result. +// +interface outgoing-handler { + use types.{outgoing-request, request-options, future-incoming-response} + + // The parameter and result types of the `handle` function allow the caller + // to concurrently stream the bodies of the outgoing request and the incoming + // response. + handle: func( + request: outgoing-request, + options: option + ) -> future-incoming-response +} diff --git a/crates/trigger/wasi/deps/http/proxy.wit b/crates/trigger/wasi/deps/http/proxy.wit new file mode 100644 index 000000000..162ab32b2 --- /dev/null +++ b/crates/trigger/wasi/deps/http/proxy.wit @@ -0,0 +1,34 @@ +package wasi:http + +// The `wasi:http/proxy` world captures a widely-implementable intersection of +// hosts that includes HTTP forward and reverse proxies. Components targeting +// this world may concurrently stream in and out any number of incoming and +// outgoing HTTP requests. +world proxy { + // HTTP proxies have access to time and randomness. + import wasi:clocks/wall-clock + import wasi:clocks/monotonic-clock + import wasi:clocks/timezone + import wasi:random/random + + // Proxies have standard output and error streams which are expected to + // terminate in a developer-facing console provided by the host. + import wasi:cli/stdout + import wasi:cli/stderr + + // TODO: this is a temporary workaround until component tooling is able to + // gracefully handle the absence of stdin. Hosts must return an eof stream + // for this import, which is what wasi-libc + tooling will do automatically + // when this import is properly removed. + import wasi:cli/stdin + + // This is the default handler to use when user code simply wants to make an + // HTTP request (e.g., via `fetch()`). + import outgoing-handler + + // The host delivers incoming HTTP requests to a component by calling the + // `handle` function of this exported interface. A host may arbitrarily reuse + // or not reuse component instance when delivering incoming HTTP requests and + // thus a component must be able to handle 0..N calls to `handle`. + export incoming-handler +} diff --git a/crates/trigger/wasi/deps/http/types.wit b/crates/trigger/wasi/deps/http/types.wit new file mode 100644 index 000000000..7b7b01552 --- /dev/null +++ b/crates/trigger/wasi/deps/http/types.wit @@ -0,0 +1,155 @@ +// The `wasi:http/types` interface is meant to be imported by components to +// define the HTTP resource types and operations used by the component's +// imported and exported interfaces. +interface types { + use wasi:io/streams.{input-stream, output-stream} + use wasi:poll/poll.{pollable} + + // This type corresponds to HTTP standard Methods. + variant method { + get, + head, + post, + put, + delete, + connect, + options, + trace, + patch, + other(string) + } + + // This type corresponds to HTTP standard Related Schemes. + variant scheme { + HTTP, + HTTPS, + other(string) + } + + // TODO: perhaps better align with HTTP semantics? + // This type enumerates the different kinds of errors that may occur when + // initially returning a response. + variant error { + invalid-url(string), + timeout-error(string), + protocol-error(string), + unexpected-error(string) + } + + // This following block defines the `fields` resource which corresponds to + // HTTP standard Fields. Soon, when resource types are added, the `type + // fields = u32` type alias can be replaced by a proper `resource fields` + // definition containing all the functions using the method syntactic sugar. + type fields = u32 + drop-fields: func(fields: fields) + new-fields: func(entries: list>) -> fields + fields-get: func(fields: fields, name: string) -> list> + fields-set: func(fields: fields, name: string, value: list>) + fields-delete: func(fields: fields, name: string) + fields-append: func(fields: fields, name: string, value: list) + fields-entries: func(fields: fields) -> list>> + fields-clone: func(fields: fields) -> fields + + type headers = fields + type trailers = fields + + // The following block defines stream types which corresponds to the HTTP + // standard Contents and Trailers. With Preview3, all of these fields can be + // replaced by a stream>. In the interim, we need to + // build on separate resource types defined by `wasi:io/streams`. The + // `finish-` functions emulate the stream's result value and MUST be called + // exactly once after the final read/write from/to the stream before dropping + // the stream. + type incoming-stream = input-stream + type outgoing-stream = output-stream + finish-incoming-stream: func(s: incoming-stream) -> option + finish-outgoing-stream: func(s: outgoing-stream, trailers: option) + + // The following block defines the `incoming-request` and `outgoing-request` + // resource types that correspond to HTTP standard Requests. Soon, when + // resource types are added, the `u32` type aliases can be replaced by + // proper `resource` type definitions containing all the functions as + // methods. Later, Preview2 will allow both types to be merged together into + // a single `request` type (that uses the single `stream` type mentioned + // above). The `consume` and `write` methods may only be called once (and + // return failure thereafter). + type incoming-request = u32 + type outgoing-request = u32 + drop-incoming-request: func(request: incoming-request) + drop-outgoing-request: func(request: outgoing-request) + incoming-request-method: func(request: incoming-request) -> method + incoming-request-path-with-query: func(request: incoming-request) -> option + incoming-request-scheme: func(request: incoming-request) -> option + incoming-request-authority: func(request: incoming-request) -> option + incoming-request-headers: func(request: incoming-request) -> headers + incoming-request-consume: func(request: incoming-request) -> result + new-outgoing-request: func( + method: method, + path-with-query: option, + scheme: option, + authority: option, + headers: headers + ) -> outgoing-request + outgoing-request-write: func(request: outgoing-request) -> result + + // Additional optional parameters that can be set when making a request. + record request-options { + // The following timeouts are specific to the HTTP protocol and work + // independently of the overall timeouts passed to `io.poll.poll-oneoff`. + + // The timeout for the initial connect. + connect-timeout-ms: option, + + // The timeout for receiving the first byte of the response body. + first-byte-timeout-ms: option, + + // The timeout for receiving the next chunk of bytes in the response body + // stream. + between-bytes-timeout-ms: option + } + + // The following block defines a special resource type used by the + // `wasi:http/incoming-handler` interface. When resource types are added, this + // block can be replaced by a proper `resource response-outparam { ... }` + // definition. Later, with Preview3, the need for an outparam goes away entirely + // (the `wasi:http/handler` interface used for both incoming and outgoing can + // simply return a `stream`). + type response-outparam = u32 + drop-response-outparam: func(response: response-outparam) + set-response-outparam: func(param: response-outparam, response: result) -> result + + // This type corresponds to the HTTP standard Status Code. + type status-code = u16 + + // The following block defines the `incoming-response` and `outgoing-response` + // resource types that correspond to HTTP standard Responses. Soon, when + // resource types are added, the `u32` type aliases can be replaced by proper + // `resource` type definitions containing all the functions as methods. Later, + // Preview2 will allow both types to be merged together into a single `response` + // type (that uses the single `stream` type mentioned above). The `consume` and + // `write` methods may only be called once (and return failure thereafter). + type incoming-response = u32 + type outgoing-response = u32 + drop-incoming-response: func(response: incoming-response) + drop-outgoing-response: func(response: outgoing-response) + incoming-response-status: func(response: incoming-response) -> status-code + incoming-response-headers: func(response: incoming-response) -> headers + incoming-response-consume: func(response: incoming-response) -> result + new-outgoing-response: func( + status-code: status-code, + headers: headers + ) -> outgoing-response + outgoing-response-write: func(response: outgoing-response) -> result + + // The following block defines a special resource type used by the + // `wasi:http/outgoing-handler` interface to emulate + // `future>` in advance of Preview3. Given a + // `future-incoming-response`, the client can call the non-blocking `get` + // method to get the result if it is available. If the result is not available, + // the client can call `listen` to get a `pollable` that can be passed to + // `io.poll.poll-oneoff`. + type future-incoming-response = u32 + drop-future-incoming-response: func(f: future-incoming-response) + future-incoming-response-get: func(f: future-incoming-response) -> option> + listen-to-future-incoming-response: func(f: future-incoming-response) -> pollable +} diff --git a/crates/trigger/wasi/deps/io/streams.wit b/crates/trigger/wasi/deps/io/streams.wit new file mode 100644 index 000000000..e2631f66a --- /dev/null +++ b/crates/trigger/wasi/deps/io/streams.wit @@ -0,0 +1,300 @@ +package wasi:io + +/// WASI I/O is an I/O abstraction API which is currently focused on providing +/// stream types. +/// +/// In the future, the component model is expected to add built-in stream types; +/// when it does, they are expected to subsume this API. +interface streams { + use wasi:poll/poll.{pollable} + + /// Streams provide a sequence of data and then end; once they end, they + /// no longer provide any further data. + /// + /// For example, a stream reading from a file ends when the stream reaches + /// the end of the file. For another example, a stream reading from a + /// socket ends when the socket is closed. + enum stream-status { + /// The stream is open and may produce further data. + open, + /// When reading, this indicates that the stream will not produce + /// further data. + /// When writing, this indicates that the stream will no longer be read. + /// Further writes are still permitted. + ended, + } + + /// An input bytestream. In the future, this will be replaced by handle + /// types. + /// + /// `input-stream`s are *non-blocking* to the extent practical on underlying + /// platforms. I/O operations always return promptly; if fewer bytes are + /// promptly available than requested, they return the number of bytes promptly + /// available, which could even be zero. To wait for data to be available, + /// use the `subscribe-to-input-stream` function to obtain a `pollable` which + /// can be polled for using `wasi:poll/poll.poll_oneoff`. + /// + /// And at present, it is a `u32` instead of being an actual handle, until + /// the wit-bindgen implementation of handles and resources is ready. + /// + /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). + type input-stream = u32 + + /// Perform a non-blocking read from the stream. + /// + /// This function returns a list of bytes containing the data that was + /// read, along with a `stream-status` which, indicates whether further + /// reads are expected to produce data. The returned list will contain up to + /// `len` bytes; it may return fewer than requested, but not more. An + /// empty list and `stream-status:open` indicates no more data is + /// available at this time, and that the pollable given by + /// `subscribe-to-input-stream` will be ready when more data is available. + /// + /// Once a stream has reached the end, subsequent calls to `read` or + /// `skip` will always report `stream-status:ended` rather than producing more + /// data. + /// + /// When the caller gives a `len` of 0, it represents a request to read 0 + /// bytes. This read should always succeed and return an empty list and + /// the current `stream-status`. + /// + /// The `len` parameter is a `u64`, which could represent a list of u8 which + /// is not possible to allocate in wasm32, or not desirable to allocate as + /// as a return value by the callee. The callee may return a list of bytes + /// less than `len` in size while more bytes are available for reading. + read: func( + this: input-stream, + /// The maximum number of bytes to read + len: u64 + ) -> result, stream-status>> + + /// Read bytes from a stream, after blocking until at least one byte can + /// be read. Except for blocking, identical to `read`. + blocking-read: func( + this: input-stream, + /// The maximum number of bytes to read + len: u64 + ) -> result, stream-status>> + + /// Skip bytes from a stream. + /// + /// This is similar to the `read` function, but avoids copying the + /// bytes into the instance. + /// + /// Once a stream has reached the end, subsequent calls to read or + /// `skip` will always report end-of-stream rather than producing more + /// data. + /// + /// This function returns the number of bytes skipped, along with a + /// `stream-status` indicating whether the end of the stream was + /// reached. The returned value will be at most `len`; it may be less. + skip: func( + this: input-stream, + /// The maximum number of bytes to skip. + len: u64, + ) -> result> + + /// Skip bytes from a stream, after blocking until at least one byte + /// can be skipped. Except for blocking behavior, identical to `skip`. + blocking-skip: func( + this: input-stream, + /// The maximum number of bytes to skip. + len: u64, + ) -> result> + + /// Create a `pollable` which will resolve once either the specified stream + /// has bytes available to read or the other end of the stream has been + /// closed. + /// The created `pollable` is a child resource of the `input-stream`. + /// Implementations may trap if the `input-stream` is dropped before + /// all derived `pollable`s created with this function are dropped. + subscribe-to-input-stream: func(this: input-stream) -> pollable + + /// Dispose of the specified `input-stream`, after which it may no longer + /// be used. + /// Implementations may trap if this `input-stream` is dropped while child + /// `pollable` resources are still alive. + /// After this `input-stream` is dropped, implementations may report any + /// corresponding `output-stream` has `stream-state.closed`. + drop-input-stream: func(this: input-stream) + + /// An output bytestream. In the future, this will be replaced by handle + /// types. + /// + /// `output-stream`s are *non-blocking* to the extent practical on + /// underlying platforms. Except where specified otherwise, I/O operations also + /// always return promptly, after the number of bytes that can be written + /// promptly, which could even be zero. To wait for the stream to be ready to + /// accept data, the `subscribe-to-output-stream` function to obtain a + /// `pollable` which can be polled for using `wasi:poll`. + /// + /// And at present, it is a `u32` instead of being an actual handle, until + /// the wit-bindgen implementation of handles and resources is ready. + /// + /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). + type output-stream = u32 + + /// An error for output-stream operations. + /// + /// Contrary to input-streams, a closed output-stream is reported using + /// an error. + enum write-error { + /// The last operation (a write or flush) failed before completion. + last-operation-failed, + /// The stream is closed: no more input will be accepted by the + /// stream. A closed output-stream will return this error on all + /// future operations. + closed + } + /// Check readiness for writing. This function never blocks. + /// + /// Returns the number of bytes permitted for the next call to `write`, + /// or an error. Calling `write` with more bytes than this function has + /// permitted will trap. + /// + /// When this function returns 0 bytes, the `subscribe-to-output-stream` + /// pollable will become ready when this function will report at least + /// 1 byte, or an error. + check-write: func( + this: output-stream + ) -> result + + /// Perform a write. This function never blocks. + /// + /// Precondition: check-write gave permit of Ok(n) and contents has a + /// length of less than or equal to n. Otherwise, this function will trap. + /// + /// returns Err(closed) without writing if the stream has closed since + /// the last call to check-write provided a permit. + write: func( + this: output-stream, + contents: list + ) -> result<_, write-error> + + /// Perform a write of up to 4096 bytes, and then flush the stream. Block + /// until all of these operations are complete, or an error occurs. + /// + /// This is a convenience wrapper around the use of `check-write`, + /// `subscribe-to-output-stream`, `write`, and `flush`, and is implemented + /// with the following pseudo-code: + /// + /// ```text + /// let pollable = subscribe-to-output-stream(this); + /// while !contents.is_empty() { + /// // Wait for the stream to become writable + /// poll-oneoff(pollable); + /// let Ok(n) = check-write(this); // eliding error handling + /// let len = min(n, contents.len()); + /// let (chunk, rest) = contents.split_at(len); + /// write(this, chunk); // eliding error handling + /// contents = rest; + /// } + /// flush(this); + /// // Wait for completion of `flush` + /// poll-oneoff(pollable); + /// // Check for any errors that arose during `flush` + /// let _ = check-write(this); // eliding error handling + /// ``` + blocking-write-and-flush: func( + this: output-stream, + contents: list + ) -> result<_, write-error> + + /// Request to flush buffered output. This function never blocks. + /// + /// This tells the output-stream that the caller intends any buffered + /// output to be flushed. the output which is expected to be flushed + /// is all that has been passed to `write` prior to this call. + /// + /// Upon calling this function, the `output-stream` will not accept any + /// writes (`check-write` will return `ok(0)`) until the flush has + /// completed. The `subscribe-to-output-stream` pollable will become ready + /// when the flush has completed and the stream can accept more writes. + flush: func( + this: output-stream, + ) -> result<_, write-error> + + /// Request to flush buffered output, and block until flush completes + /// and stream is ready for writing again. + blocking-flush: func( + this: output-stream, + ) -> result<_, write-error> + + /// Create a `pollable` which will resolve once the output-stream + /// is ready for more writing, or an error has occured. When this + /// pollable is ready, `check-write` will return `ok(n)` with n>0, or an + /// error. + /// + /// If the stream is closed, this pollable is always ready immediately. + /// + /// The created `pollable` is a child resource of the `output-stream`. + /// Implementations may trap if the `output-stream` is dropped before + /// all derived `pollable`s created with this function are dropped. + subscribe-to-output-stream: func(this: output-stream) -> pollable + + /// Write zeroes to a stream. + /// + /// this should be used precisely like `write` with the exact same + /// preconditions (must use check-write first), but instead of + /// passing a list of bytes, you simply pass the number of zero-bytes + /// that should be written. + write-zeroes: func( + this: output-stream, + /// The number of zero-bytes to write + len: u64 + ) -> result<_, write-error> + + /// Read from one stream and write to another. + /// + /// This function returns the number of bytes transferred; it may be less + /// than `len`. + /// + /// Unlike other I/O functions, this function blocks until all the data + /// read from the input stream has been written to the output stream. + splice: func( + this: output-stream, + /// The stream to read from + src: input-stream, + /// The number of bytes to splice + len: u64, + ) -> result> + + /// Read from one stream and write to another, with blocking. + /// + /// This is similar to `splice`, except that it blocks until at least + /// one byte can be read. + blocking-splice: func( + this: output-stream, + /// The stream to read from + src: input-stream, + /// The number of bytes to splice + len: u64, + ) -> result> + + /// Forward the entire contents of an input stream to an output stream. + /// + /// This function repeatedly reads from the input stream and writes + /// the data to the output stream, until the end of the input stream + /// is reached, or an error is encountered. + /// + /// Unlike other I/O functions, this function blocks until the end + /// of the input stream is seen and all the data has been written to + /// the output stream. + /// + /// This function returns the number of bytes transferred, and the status of + /// the output stream. + forward: func( + this: output-stream, + /// The stream to read from + src: input-stream + ) -> result> + + + /// Dispose of the specified `output-stream`, after which it may no longer + /// be used. + /// Implementations may trap if this `output-stream` is dropped while + /// child `pollable` resources are still alive. + /// After this `output-stream` is dropped, implementations may report any + /// corresponding `input-stream` has `stream-state.closed`. + drop-output-stream: func(this: output-stream) +} diff --git a/crates/trigger/wasi/deps/logging/logging.wit b/crates/trigger/wasi/deps/logging/logging.wit new file mode 100644 index 000000000..b0cc4514d --- /dev/null +++ b/crates/trigger/wasi/deps/logging/logging.wit @@ -0,0 +1,37 @@ +package wasi:logging + +/// WASI Logging is a logging API intended to let users emit log messages with +/// simple priority levels and context values. +interface logging { + /// A log level, describing a kind of message. + enum level { + /// Describes messages about the values of variables and the flow of + /// control within a program. + trace, + + /// Describes messages likely to be of interest to someone debugging a + /// program. + debug, + + /// Describes messages likely to be of interest to someone monitoring a + /// program. + info, + + /// Describes messages indicating hazardous situations. + warn, + + /// Describes messages indicating serious errors. + error, + + /// Describes messages indicating fatal errors. + critical, + } + + /// Emit a log message. + /// + /// A log message has a `level` describing what kind of message is being + /// sent, a context, which is an uninterpreted string meant to help + /// consumers group similar messages, and a string containing the message + /// text. + log: func(level: level, context: string, message: string) +} diff --git a/crates/trigger/wasi/deps/poll/poll.wit b/crates/trigger/wasi/deps/poll/poll.wit new file mode 100644 index 000000000..a6334c557 --- /dev/null +++ b/crates/trigger/wasi/deps/poll/poll.wit @@ -0,0 +1,39 @@ +package wasi:poll + +/// A poll API intended to let users wait for I/O events on multiple handles +/// at once. +interface poll { + /// A "pollable" handle. + /// + /// This is conceptually represents a `stream<_, _>`, or in other words, + /// a stream that one can wait on, repeatedly, but which does not itself + /// produce any data. It's temporary scaffolding until component-model's + /// async features are ready. + /// + /// And at present, it is a `u32` instead of being an actual handle, until + /// the wit-bindgen implementation of handles and resources is ready. + /// + /// `pollable` lifetimes are not automatically managed. Users must ensure + /// that they do not outlive the resource they reference. + /// + /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). + type pollable = u32 + + /// Dispose of the specified `pollable`, after which it may no longer + /// be used. + drop-pollable: func(this: pollable) + + /// Poll for completion on a set of pollables. + /// + /// The "oneoff" in the name refers to the fact that this function must do a + /// linear scan through the entire list of subscriptions, which may be + /// inefficient if the number is large and the same subscriptions are used + /// many times. In the future, this is expected to be obsoleted by the + /// component model async proposal, which will include a scalable waiting + /// facility. + /// + /// The result list is the same length as the argument + /// list, and indicates the readiness of each corresponding + /// element in that / list, with true indicating ready. + poll-oneoff: func(in: list) -> list +} diff --git a/crates/trigger/wasi/deps/random/insecure-seed.wit b/crates/trigger/wasi/deps/random/insecure-seed.wit new file mode 100644 index 000000000..ff2ff65d0 --- /dev/null +++ b/crates/trigger/wasi/deps/random/insecure-seed.wit @@ -0,0 +1,24 @@ +/// The insecure-seed interface for seeding hash-map DoS resistance. +/// +/// It is intended to be portable at least between Unix-family platforms and +/// Windows. +interface insecure-seed { + /// Return a 128-bit value that may contain a pseudo-random value. + /// + /// The returned value is not required to be computed from a CSPRNG, and may + /// even be entirely deterministic. Host implementations are encouraged to + /// provide pseudo-random values to any program exposed to + /// attacker-controlled content, to enable DoS protection built into many + /// languages' hash-map implementations. + /// + /// This function is intended to only be called once, by a source language + /// to initialize Denial Of Service (DoS) protection in its hash-map + /// implementation. + /// + /// # Expected future evolution + /// + /// This will likely be changed to a value import, to prevent it from being + /// called multiple times and potentially used for purposes other than DoS + /// protection. + insecure-seed: func() -> tuple +} diff --git a/crates/trigger/wasi/deps/random/insecure.wit b/crates/trigger/wasi/deps/random/insecure.wit new file mode 100644 index 000000000..ff0826822 --- /dev/null +++ b/crates/trigger/wasi/deps/random/insecure.wit @@ -0,0 +1,21 @@ +/// The insecure interface for insecure pseudo-random numbers. +/// +/// It is intended to be portable at least between Unix-family platforms and +/// Windows. +interface insecure { + /// Return `len` insecure pseudo-random bytes. + /// + /// This function is not cryptographically secure. Do not use it for + /// anything related to security. + /// + /// There are no requirements on the values of the returned bytes, however + /// implementations are encouraged to return evenly distributed values with + /// a long period. + get-insecure-random-bytes: func(len: u64) -> list + + /// Return an insecure pseudo-random `u64` value. + /// + /// This function returns the same type of pseudo-random data as + /// `get-insecure-random-bytes`, represented as a `u64`. + get-insecure-random-u64: func() -> u64 +} diff --git a/crates/trigger/wasi/deps/random/random.wit b/crates/trigger/wasi/deps/random/random.wit new file mode 100644 index 000000000..f2bd6358c --- /dev/null +++ b/crates/trigger/wasi/deps/random/random.wit @@ -0,0 +1,25 @@ +package wasi:random + +/// WASI Random is a random data API. +/// +/// It is intended to be portable at least between Unix-family platforms and +/// Windows. +interface random { + /// Return `len` cryptographically-secure pseudo-random bytes. + /// + /// This function must produce data from an adequately seeded + /// cryptographically-secure pseudo-random number generator (CSPRNG), so it + /// must not block, from the perspective of the calling program, and the + /// returned data is always unpredictable. + /// + /// This function must always return fresh pseudo-random data. Deterministic + /// environments must omit this function, rather than implementing it with + /// deterministic data. + get-random-bytes: func(len: u64) -> list + + /// Return a cryptographically-secure pseudo-random `u64` value. + /// + /// This function returns the same type of pseudo-random data as + /// `get-random-bytes`, represented as a `u64`. + get-random-u64: func() -> u64 +} diff --git a/crates/trigger/wasi/deps/sockets/instance-network.wit b/crates/trigger/wasi/deps/sockets/instance-network.wit new file mode 100644 index 000000000..d911a29cc --- /dev/null +++ b/crates/trigger/wasi/deps/sockets/instance-network.wit @@ -0,0 +1,9 @@ + +/// This interface provides a value-export of the default network handle.. +interface instance-network { + use network.{network} + + /// Get a handle to the default network. + instance-network: func() -> network + +} diff --git a/crates/trigger/wasi/deps/sockets/ip-name-lookup.wit b/crates/trigger/wasi/deps/sockets/ip-name-lookup.wit new file mode 100644 index 000000000..f15d19d03 --- /dev/null +++ b/crates/trigger/wasi/deps/sockets/ip-name-lookup.wit @@ -0,0 +1,69 @@ + +interface ip-name-lookup { + use wasi:poll/poll.{pollable} + use network.{network, error-code, ip-address, ip-address-family} + + + /// Resolve an internet host name to a list of IP addresses. + /// + /// See the wasi-socket proposal README.md for a comparison with getaddrinfo. + /// + /// # Parameters + /// - `name`: The name to look up. IP addresses are not allowed. Unicode domain names are automatically converted + /// to ASCII using IDNA encoding. + /// - `address-family`: If provided, limit the results to addresses of this specific address family. + /// - `include-unavailable`: When set to true, this function will also return addresses of which the runtime + /// thinks (or knows) can't be connected to at the moment. For example, this will return IPv6 addresses on + /// systems without an active IPv6 interface. Notes: + /// - Even when no public IPv6 interfaces are present or active, names like "localhost" can still resolve to an IPv6 address. + /// - Whatever is "available" or "unavailable" is volatile and can change everytime a network cable is unplugged. + /// + /// This function never blocks. It either immediately fails or immediately returns successfully with a `resolve-address-stream` + /// that can be used to (asynchronously) fetch the results. + /// + /// At the moment, the stream never completes successfully with 0 items. Ie. the first call + /// to `resolve-next-address` never returns `ok(none)`. This may change in the future. + /// + /// # Typical errors + /// - `invalid-name`: `name` is a syntactically invalid domain name. + /// - `invalid-name`: `name` is an IP address. + /// - `address-family-not-supported`: The specified `address-family` is not supported. (EAI_FAMILY) + /// + /// # References: + /// - + /// - + /// - + /// - + resolve-addresses: func(network: network, name: string, address-family: option, include-unavailable: bool) -> result + + + + type resolve-address-stream = u32 + + /// Returns the next address from the resolver. + /// + /// This function should be called multiple times. On each call, it will + /// return the next address in connection order preference. If all + /// addresses have been exhausted, this function returns `none`. + /// After which, you should release the stream with `drop-resolve-address-stream`. + /// + /// This function never returns IPv4-mapped IPv6 addresses. + /// + /// # Typical errors + /// - `name-unresolvable`: Name does not exist or has no suitable associated IP addresses. (EAI_NONAME, EAI_NODATA, EAI_ADDRFAMILY) + /// - `temporary-resolver-failure`: A temporary failure in name resolution occurred. (EAI_AGAIN) + /// - `permanent-resolver-failure`: A permanent failure in name resolution occurred. (EAI_FAIL) + /// - `would-block`: A result is not available yet. (EWOULDBLOCK, EAGAIN) + resolve-next-address: func(this: resolve-address-stream) -> result, error-code> + + /// Dispose of the specified `resolve-address-stream`, after which it may no longer be used. + /// + /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. + drop-resolve-address-stream: func(this: resolve-address-stream) + + /// Create a `pollable` which will resolve once the stream is ready for I/O. + /// + /// Note: this function is here for WASI Preview2 only. + /// It's planned to be removed when `future` is natively supported in Preview3. + subscribe: func(this: resolve-address-stream) -> pollable +} diff --git a/crates/trigger/wasi/deps/sockets/network.wit b/crates/trigger/wasi/deps/sockets/network.wit new file mode 100644 index 000000000..a198ea801 --- /dev/null +++ b/crates/trigger/wasi/deps/sockets/network.wit @@ -0,0 +1,187 @@ +package wasi:sockets + +interface network { + /// An opaque resource that represents access to (a subset of) the network. + /// This enables context-based security for networking. + /// There is no need for this to map 1:1 to a physical network interface. + /// + /// FYI, In the future this will be replaced by handle types. + type network = u32 + + /// Dispose of the specified `network`, after which it may no longer be used. + /// + /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. + drop-network: func(this: network) + + + /// Error codes. + /// + /// In theory, every API can return any error code. + /// In practice, API's typically only return the errors documented per API + /// combined with a couple of errors that are always possible: + /// - `unknown` + /// - `access-denied` + /// - `not-supported` + /// - `out-of-memory` + /// + /// See each individual API for what the POSIX equivalents are. They sometimes differ per API. + enum error-code { + // ### GENERAL ERRORS ### + + /// Unknown error + unknown, + + /// Access denied. + /// + /// POSIX equivalent: EACCES, EPERM + access-denied, + + /// The operation is not supported. + /// + /// POSIX equivalent: EOPNOTSUPP + not-supported, + + /// Not enough memory to complete the operation. + /// + /// POSIX equivalent: ENOMEM, ENOBUFS, EAI_MEMORY + out-of-memory, + + /// The operation timed out before it could finish completely. + timeout, + + /// This operation is incompatible with another asynchronous operation that is already in progress. + concurrency-conflict, + + /// Trying to finish an asynchronous operation that: + /// - has not been started yet, or: + /// - was already finished by a previous `finish-*` call. + /// + /// Note: this is scheduled to be removed when `future`s are natively supported. + not-in-progress, + + /// The operation has been aborted because it could not be completed immediately. + /// + /// Note: this is scheduled to be removed when `future`s are natively supported. + would-block, + + + // ### IP ERRORS ### + + /// The specified address-family is not supported. + address-family-not-supported, + + /// An IPv4 address was passed to an IPv6 resource, or vice versa. + address-family-mismatch, + + /// The socket address is not a valid remote address. E.g. the IP address is set to INADDR_ANY, or the port is set to 0. + invalid-remote-address, + + /// The operation is only supported on IPv4 resources. + ipv4-only-operation, + + /// The operation is only supported on IPv6 resources. + ipv6-only-operation, + + + + // ### TCP & UDP SOCKET ERRORS ### + + /// A new socket resource could not be created because of a system limit. + new-socket-limit, + + /// The socket is already attached to another network. + already-attached, + + /// The socket is already bound. + already-bound, + + /// The socket is already in the Connection state. + already-connected, + + /// The socket is not bound to any local address. + not-bound, + + /// The socket is not in the Connection state. + not-connected, + + /// A bind operation failed because the provided address is not an address that the `network` can bind to. + address-not-bindable, + + /// A bind operation failed because the provided address is already in use. + address-in-use, + + /// A bind operation failed because there are no ephemeral ports available. + ephemeral-ports-exhausted, + + /// The remote address is not reachable + remote-unreachable, + + + // ### TCP SOCKET ERRORS ### + + /// The socket is already in the Listener state. + already-listening, + + /// The socket is already in the Listener state. + not-listening, + + /// The connection was forcefully rejected + connection-refused, + + /// The connection was reset. + connection-reset, + + + // ### UDP SOCKET ERRORS ### + datagram-too-large, + + + // ### NAME LOOKUP ERRORS ### + + /// The provided name is a syntactically invalid domain name. + invalid-name, + + /// Name does not exist or has no suitable associated IP addresses. + name-unresolvable, + + /// A temporary failure in name resolution occurred. + temporary-resolver-failure, + + /// A permanent failure in name resolution occurred. + permanent-resolver-failure, + } + + enum ip-address-family { + /// Similar to `AF_INET` in POSIX. + ipv4, + + /// Similar to `AF_INET6` in POSIX. + ipv6, + } + + type ipv4-address = tuple + type ipv6-address = tuple + + variant ip-address { + ipv4(ipv4-address), + ipv6(ipv6-address), + } + + record ipv4-socket-address { + port: u16, // sin_port + address: ipv4-address, // sin_addr + } + + record ipv6-socket-address { + port: u16, // sin6_port + flow-info: u32, // sin6_flowinfo + address: ipv6-address, // sin6_addr + scope-id: u32, // sin6_scope_id + } + + variant ip-socket-address { + ipv4(ipv4-socket-address), + ipv6(ipv6-socket-address), + } + +} diff --git a/crates/trigger/wasi/deps/sockets/tcp-create-socket.wit b/crates/trigger/wasi/deps/sockets/tcp-create-socket.wit new file mode 100644 index 000000000..f43bc8979 --- /dev/null +++ b/crates/trigger/wasi/deps/sockets/tcp-create-socket.wit @@ -0,0 +1,27 @@ + +interface tcp-create-socket { + use network.{network, error-code, ip-address-family} + use tcp.{tcp-socket} + + /// Create a new TCP socket. + /// + /// Similar to `socket(AF_INET or AF_INET6, SOCK_STREAM, IPPROTO_TCP)` in POSIX. + /// + /// This function does not require a network capability handle. This is considered to be safe because + /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`listen`/`connect` + /// is called, the socket is effectively an in-memory configuration object, unable to communicate with the outside world. + /// + /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. + /// + /// # Typical errors + /// - `not-supported`: The host does not support TCP sockets. (EOPNOTSUPP) + /// - `address-family-not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) + /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) + /// + /// # References + /// - + /// - + /// - + /// - + create-tcp-socket: func(address-family: ip-address-family) -> result +} diff --git a/crates/trigger/wasi/deps/sockets/tcp.wit b/crates/trigger/wasi/deps/sockets/tcp.wit new file mode 100644 index 000000000..3922769b3 --- /dev/null +++ b/crates/trigger/wasi/deps/sockets/tcp.wit @@ -0,0 +1,268 @@ + +interface tcp { + use wasi:io/streams.{input-stream, output-stream} + use wasi:poll/poll.{pollable} + use network.{network, error-code, ip-socket-address, ip-address-family} + + /// A TCP socket handle. + type tcp-socket = u32 + + + enum shutdown-type { + /// Similar to `SHUT_RD` in POSIX. + receive, + + /// Similar to `SHUT_WR` in POSIX. + send, + + /// Similar to `SHUT_RDWR` in POSIX. + both, + } + + + /// Bind the socket to a specific network on the provided IP address and port. + /// + /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which + /// network interface(s) to bind to. + /// If the TCP/UDP port is zero, the socket will be bound to a random free port. + /// + /// When a socket is not explicitly bound, the first invocation to a listen or connect operation will + /// implicitly bind the socket. + /// + /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. + /// + /// # Typical `start` errors + /// - `address-family-mismatch`: The `local-address` has the wrong address family. (EINVAL) + /// - `already-bound`: The socket is already bound. (EINVAL) + /// - `concurrency-conflict`: Another `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + /// + /// # Typical `finish` errors + /// - `ephemeral-ports-exhausted`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) + /// - `address-in-use`: Address is already in use. (EADDRINUSE) + /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) + /// - `not-in-progress`: A `bind` operation is not in progress. + /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) + /// + /// # References + /// - + /// - + /// - + /// - + start-bind: func(this: tcp-socket, network: network, local-address: ip-socket-address) -> result<_, error-code> + finish-bind: func(this: tcp-socket) -> result<_, error-code> + + /// Connect to a remote endpoint. + /// + /// On success: + /// - the socket is transitioned into the Connection state + /// - a pair of streams is returned that can be used to read & write to the connection + /// + /// # Typical `start` errors + /// - `address-family-mismatch`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) + /// - `invalid-remote-address`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EADDRNOTAVAIL on Windows) + /// - `invalid-remote-address`: The port in `remote-address` is set to 0. (EADDRNOTAVAIL on Windows) + /// - `already-attached`: The socket is already attached to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. + /// - `already-connected`: The socket is already in the Connection state. (EISCONN) + /// - `already-listening`: The socket is already in the Listener state. (EOPNOTSUPP, EINVAL on Windows) + /// - `concurrency-conflict`: Another `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + /// + /// # Typical `finish` errors + /// - `timeout`: Connection timed out. (ETIMEDOUT) + /// - `connection-refused`: The connection was forcefully rejected. (ECONNREFUSED) + /// - `connection-reset`: The connection was reset. (ECONNRESET) + /// - `remote-unreachable`: The remote address is not reachable. (EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) + /// - `ephemeral-ports-exhausted`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) + /// - `not-in-progress`: A `connect` operation is not in progress. + /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) + /// + /// # References + /// - + /// - + /// - + /// - + start-connect: func(this: tcp-socket, network: network, remote-address: ip-socket-address) -> result<_, error-code> + /// Note: the returned `input-stream` and `output-stream` are child + /// resources of the `tcp-socket`. Implementations may trap if the + /// `tcp-socket` is dropped before both of these streams are dropped. + finish-connect: func(this: tcp-socket) -> result, error-code> + + /// Start listening for new connections. + /// + /// Transitions the socket into the Listener state. + /// + /// Unlike POSIX: + /// - this function is async. This enables interactive WASI hosts to inject permission prompts. + /// - the socket must already be explicitly bound. + /// + /// # Typical `start` errors + /// - `not-bound`: The socket is not bound to any local address. (EDESTADDRREQ) + /// - `already-connected`: The socket is already in the Connection state. (EISCONN, EINVAL on BSD) + /// - `already-listening`: The socket is already in the Listener state. + /// - `concurrency-conflict`: Another `bind`, `connect` or `listen` operation is already in progress. (EINVAL on BSD) + /// + /// # Typical `finish` errors + /// - `ephemeral-ports-exhausted`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE) + /// - `not-in-progress`: A `listen` operation is not in progress. + /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) + /// + /// # References + /// - + /// - + /// - + /// - + start-listen: func(this: tcp-socket) -> result<_, error-code> + finish-listen: func(this: tcp-socket) -> result<_, error-code> + + /// Accept a new client socket. + /// + /// The returned socket is bound and in the Connection state. + /// + /// On success, this function returns the newly accepted client socket along with + /// a pair of streams that can be used to read & write to the connection. + /// + /// Note: the returned `input-stream` and `output-stream` are child + /// resources of the returned `tcp-socket`. Implementations may trap if the + /// `tcp-socket` is dropped before its child streams are dropped. + /// + /// # Typical errors + /// - `not-listening`: Socket is not in the Listener state. (EINVAL) + /// - `would-block`: No pending connections at the moment. (EWOULDBLOCK, EAGAIN) + /// + /// Host implementations must skip over transient errors returned by the native accept syscall. + /// + /// # References + /// - + /// - + /// - + /// - + accept: func(this: tcp-socket) -> result, error-code> + + /// Get the bound local address. + /// + /// # Typical errors + /// - `not-bound`: The socket is not bound to any local address. + /// + /// # References + /// - + /// - + /// - + /// - + local-address: func(this: tcp-socket) -> result + + /// Get the bound remote address. + /// + /// # Typical errors + /// - `not-connected`: The socket is not connected to a remote address. (ENOTCONN) + /// + /// # References + /// - + /// - + /// - + /// - + remote-address: func(this: tcp-socket) -> result + + /// Whether this is a IPv4 or IPv6 socket. + /// + /// Equivalent to the SO_DOMAIN socket option. + address-family: func(this: tcp-socket) -> ip-address-family + + /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. + /// + /// Equivalent to the IPV6_V6ONLY socket option. + /// + /// # Typical errors + /// - `ipv6-only-operation`: (get/set) `this` socket is an IPv4 socket. + /// - `already-bound`: (set) The socket is already bound. + /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) + /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + ipv6-only: func(this: tcp-socket) -> result + set-ipv6-only: func(this: tcp-socket, value: bool) -> result<_, error-code> + + /// Hints the desired listen queue size. Implementations are free to ignore this. + /// + /// # Typical errors + /// - `already-connected`: (set) The socket is already in the Connection state. + /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + set-listen-backlog-size: func(this: tcp-socket, value: u64) -> result<_, error-code> + + /// Equivalent to the SO_KEEPALIVE socket option. + /// + /// # Typical errors + /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + keep-alive: func(this: tcp-socket) -> result + set-keep-alive: func(this: tcp-socket, value: bool) -> result<_, error-code> + + /// Equivalent to the TCP_NODELAY socket option. + /// + /// # Typical errors + /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + no-delay: func(this: tcp-socket) -> result + set-no-delay: func(this: tcp-socket, value: bool) -> result<_, error-code> + + /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. + /// + /// # Typical errors + /// - `already-connected`: (set) The socket is already in the Connection state. + /// - `already-listening`: (set) The socket is already in the Listener state. + /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + unicast-hop-limit: func(this: tcp-socket) -> result + set-unicast-hop-limit: func(this: tcp-socket, value: u8) -> result<_, error-code> + + /// The kernel buffer space reserved for sends/receives on this socket. + /// + /// Note #1: an implementation may choose to cap or round the buffer size when setting the value. + /// In other words, after setting a value, reading the same setting back may return a different value. + /// + /// Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of + /// actual data to be sent/received by the application, because the kernel might also use the buffer space + /// for internal metadata structures. + /// + /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. + /// + /// # Typical errors + /// - `already-connected`: (set) The socket is already in the Connection state. + /// - `already-listening`: (set) The socket is already in the Listener state. + /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) + receive-buffer-size: func(this: tcp-socket) -> result + set-receive-buffer-size: func(this: tcp-socket, value: u64) -> result<_, error-code> + send-buffer-size: func(this: tcp-socket) -> result + set-send-buffer-size: func(this: tcp-socket, value: u64) -> result<_, error-code> + + /// Create a `pollable` which will resolve once the socket is ready for I/O. + /// + /// The created `pollable` is a child resource of the `tcp-socket`. + /// Implementations may trap if the `tcp-socket` is dropped before all + /// derived `pollable`s created with this function are dropped. + /// + /// Note: this function is here for WASI Preview2 only. + /// It's planned to be removed when `future` is natively supported in Preview3. + subscribe: func(this: tcp-socket) -> pollable + + /// Initiate a graceful shutdown. + /// + /// - receive: the socket is not expecting to receive any more data from the peer. All subsequent read + /// operations on the `input-stream` associated with this socket will return an End Of Stream indication. + /// Any data still in the receive queue at time of calling `shutdown` will be discarded. + /// - send: the socket is not expecting to send any more data to the peer. All subsequent write + /// operations on the `output-stream` associated with this socket will return an error. + /// - both: same effect as receive & send combined. + /// + /// The shutdown function does not close (drop) the socket. + /// + /// # Typical errors + /// - `not-connected`: The socket is not in the Connection state. (ENOTCONN) + /// + /// # References + /// - + /// - + /// - + /// - + shutdown: func(this: tcp-socket, shutdown-type: shutdown-type) -> result<_, error-code> + + /// Dispose of the specified `tcp-socket`, after which it may no longer be used. + /// + /// Similar to the POSIX `close` function. + /// + /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. + drop-tcp-socket: func(this: tcp-socket) +} diff --git a/crates/trigger/wasi/deps/sockets/udp-create-socket.wit b/crates/trigger/wasi/deps/sockets/udp-create-socket.wit new file mode 100644 index 000000000..cd4c08fb1 --- /dev/null +++ b/crates/trigger/wasi/deps/sockets/udp-create-socket.wit @@ -0,0 +1,27 @@ + +interface udp-create-socket { + use network.{network, error-code, ip-address-family} + use udp.{udp-socket} + + /// Create a new UDP socket. + /// + /// Similar to `socket(AF_INET or AF_INET6, SOCK_DGRAM, IPPROTO_UDP)` in POSIX. + /// + /// This function does not require a network capability handle. This is considered to be safe because + /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`connect` is called, + /// the socket is effectively an in-memory configuration object, unable to communicate with the outside world. + /// + /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. + /// + /// # Typical errors + /// - `not-supported`: The host does not support UDP sockets. (EOPNOTSUPP) + /// - `address-family-not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) + /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) + /// + /// # References: + /// - + /// - + /// - + /// - + create-udp-socket: func(address-family: ip-address-family) -> result +} diff --git a/crates/trigger/wasi/deps/sockets/udp.wit b/crates/trigger/wasi/deps/sockets/udp.wit new file mode 100644 index 000000000..700b9e247 --- /dev/null +++ b/crates/trigger/wasi/deps/sockets/udp.wit @@ -0,0 +1,220 @@ + +interface udp { + use wasi:poll/poll.{pollable} + use network.{network, error-code, ip-socket-address, ip-address-family} + + + /// A UDP socket handle. + type udp-socket = u32 + + + record datagram { + data: list, // Theoretical max size: ~64 KiB. In practice, typically less than 1500 bytes. + remote-address: ip-socket-address, + + /// Possible future additions: + /// local-address: ip-socket-address, // IP_PKTINFO / IP_RECVDSTADDR / IPV6_PKTINFO + /// local-interface: u32, // IP_PKTINFO / IP_RECVIF + /// ttl: u8, // IP_RECVTTL + /// dscp: u6, // IP_RECVTOS + /// ecn: u2, // IP_RECVTOS + } + + + + /// Bind the socket to a specific network on the provided IP address and port. + /// + /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which + /// network interface(s) to bind to. + /// If the TCP/UDP port is zero, the socket will be bound to a random free port. + /// + /// When a socket is not explicitly bound, the first invocation to connect will implicitly bind the socket. + /// + /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. + /// + /// # Typical `start` errors + /// - `address-family-mismatch`: The `local-address` has the wrong address family. (EINVAL) + /// - `already-bound`: The socket is already bound. (EINVAL) + /// - `concurrency-conflict`: Another `bind` or `connect` operation is already in progress. (EALREADY) + /// + /// # Typical `finish` errors + /// - `ephemeral-ports-exhausted`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) + /// - `address-in-use`: Address is already in use. (EADDRINUSE) + /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) + /// - `not-in-progress`: A `bind` operation is not in progress. + /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) + /// + /// # References + /// - + /// - + /// - + /// - + start-bind: func(this: udp-socket, network: network, local-address: ip-socket-address) -> result<_, error-code> + finish-bind: func(this: udp-socket) -> result<_, error-code> + + /// Set the destination address. + /// + /// The local-address is updated based on the best network path to `remote-address`. + /// + /// When a destination address is set: + /// - all receive operations will only return datagrams sent from the provided `remote-address`. + /// - the `send` function can only be used to send to this destination. + /// + /// Note that this function does not generate any network traffic and the peer is not aware of this "connection". + /// + /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. + /// + /// # Typical `start` errors + /// - `address-family-mismatch`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) + /// - `invalid-remote-address`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) + /// - `invalid-remote-address`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) + /// - `already-attached`: The socket is already bound to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. + /// - `concurrency-conflict`: Another `bind` or `connect` operation is already in progress. (EALREADY) + /// + /// # Typical `finish` errors + /// - `ephemeral-ports-exhausted`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) + /// - `not-in-progress`: A `connect` operation is not in progress. + /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) + /// + /// # References + /// - + /// - + /// - + /// - + start-connect: func(this: udp-socket, network: network, remote-address: ip-socket-address) -> result<_, error-code> + finish-connect: func(this: udp-socket) -> result<_, error-code> + + /// Receive messages on the socket. + /// + /// This function attempts to receive up to `max-results` datagrams on the socket without blocking. + /// The returned list may contain fewer elements than requested, but never more. + /// If `max-results` is 0, this function returns successfully with an empty list. + /// + /// # Typical errors + /// - `not-bound`: The socket is not bound to any local address. (EINVAL) + /// - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) + /// - `would-block`: There is no pending data available to be read at the moment. (EWOULDBLOCK, EAGAIN) + /// + /// # References + /// - + /// - + /// - + /// - + /// - + /// - + /// - + /// - + receive: func(this: udp-socket, max-results: u64) -> result, error-code> + + /// Send messages on the socket. + /// + /// This function attempts to send all provided `datagrams` on the socket without blocking and + /// returns how many messages were actually sent (or queued for sending). + /// + /// This function semantically behaves the same as iterating the `datagrams` list and sequentially + /// sending each individual datagram until either the end of the list has been reached or the first error occurred. + /// If at least one datagram has been sent successfully, this function never returns an error. + /// + /// If the input list is empty, the function returns `ok(0)`. + /// + /// The remote address option is required. To send a message to the "connected" peer, + /// call `remote-address` to get their address. + /// + /// # Typical errors + /// - `address-family-mismatch`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) + /// - `invalid-remote-address`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) + /// - `invalid-remote-address`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) + /// - `already-connected`: The socket is in "connected" mode and the `datagram.remote-address` does not match the address passed to `connect`. (EISCONN) + /// - `not-bound`: The socket is not bound to any local address. Unlike POSIX, this function does not perform an implicit bind. + /// - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) + /// - `datagram-too-large`: The datagram is too large. (EMSGSIZE) + /// - `would-block`: The send buffer is currently full. (EWOULDBLOCK, EAGAIN) + /// + /// # References + /// - + /// - + /// - + /// - + /// - + /// - + /// - + /// - + send: func(this: udp-socket, datagrams: list) -> result + + /// Get the current bound address. + /// + /// # Typical errors + /// - `not-bound`: The socket is not bound to any local address. + /// + /// # References + /// - + /// - + /// - + /// - + local-address: func(this: udp-socket) -> result + + /// Get the address set with `connect`. + /// + /// # Typical errors + /// - `not-connected`: The socket is not connected to a remote address. (ENOTCONN) + /// + /// # References + /// - + /// - + /// - + /// - + remote-address: func(this: udp-socket) -> result + + /// Whether this is a IPv4 or IPv6 socket. + /// + /// Equivalent to the SO_DOMAIN socket option. + address-family: func(this: udp-socket) -> ip-address-family + + /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. + /// + /// Equivalent to the IPV6_V6ONLY socket option. + /// + /// # Typical errors + /// - `ipv6-only-operation`: (get/set) `this` socket is an IPv4 socket. + /// - `already-bound`: (set) The socket is already bound. + /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) + /// - `concurrency-conflict`: (set) Another `bind` or `connect` operation is already in progress. (EALREADY) + ipv6-only: func(this: udp-socket) -> result + set-ipv6-only: func(this: udp-socket, value: bool) -> result<_, error-code> + + /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. + /// + /// # Typical errors + /// - `concurrency-conflict`: (set) Another `bind` or `connect` operation is already in progress. (EALREADY) + unicast-hop-limit: func(this: udp-socket) -> result + set-unicast-hop-limit: func(this: udp-socket, value: u8) -> result<_, error-code> + + /// The kernel buffer space reserved for sends/receives on this socket. + /// + /// Note #1: an implementation may choose to cap or round the buffer size when setting the value. + /// In other words, after setting a value, reading the same setting back may return a different value. + /// + /// Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of + /// actual data to be sent/received by the application, because the kernel might also use the buffer space + /// for internal metadata structures. + /// + /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. + /// + /// # Typical errors + /// - `concurrency-conflict`: (set) Another `bind` or `connect` operation is already in progress. (EALREADY) + receive-buffer-size: func(this: udp-socket) -> result + set-receive-buffer-size: func(this: udp-socket, value: u64) -> result<_, error-code> + send-buffer-size: func(this: udp-socket) -> result + set-send-buffer-size: func(this: udp-socket, value: u64) -> result<_, error-code> + + /// Create a `pollable` which will resolve once the socket is ready for I/O. + /// + /// Note: this function is here for WASI Preview2 only. + /// It's planned to be removed when `future` is natively supported in Preview3. + subscribe: func(this: udp-socket) -> pollable + + /// Dispose of the specified `udp-socket`, after which it may no longer be used. + /// + /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. + drop-udp-socket: func(this: udp-socket) +} diff --git a/crates/trigger/wasi/main.wit b/crates/trigger/wasi/main.wit new file mode 100644 index 000000000..753770ad2 --- /dev/null +++ b/crates/trigger/wasi/main.wit @@ -0,0 +1,33 @@ +package wasmtime:wasi + +// All of the same imports available in the wasi:cli/command world, but no +// export required: +world preview1-adapter-reactor { + import wasi:clocks/wall-clock + import wasi:clocks/monotonic-clock + import wasi:clocks/timezone + import wasi:filesystem/types + import wasi:filesystem/preopens + import wasi:sockets/instance-network + import wasi:sockets/ip-name-lookup + import wasi:sockets/network + import wasi:sockets/tcp-create-socket + import wasi:sockets/tcp + import wasi:sockets/udp-create-socket + import wasi:sockets/udp + import wasi:random/random + import wasi:random/insecure + import wasi:random/insecure-seed + import wasi:poll/poll + import wasi:io/streams + import wasi:cli/environment + import wasi:cli/exit + import wasi:cli/stdin + import wasi:cli/stdout + import wasi:cli/stderr + import wasi:cli/terminal-input + import wasi:cli/terminal-output + import wasi:cli/terminal-stdin + import wasi:cli/terminal-stdout + import wasi:cli/terminal-stderr +} diff --git a/crates/trigger/wasi/test.wit b/crates/trigger/wasi/test.wit new file mode 100644 index 000000000..4543cb194 --- /dev/null +++ b/crates/trigger/wasi/test.wit @@ -0,0 +1,41 @@ +// only used as part of `test-programs` +world test-reactor { + + import wasi:cli/environment + import wasi:io/streams + import wasi:filesystem/types + import wasi:filesystem/preopens + import wasi:cli/exit + + export add-strings: func(s: list) -> u32 + export get-strings: func() -> list + + use wasi:io/streams.{output-stream} + + export write-strings-to: func(o: output-stream) -> result + + use wasi:filesystem/types.{descriptor-stat} + export pass-an-imported-record: func(d: descriptor-stat) -> string +} + +world test-command { + import wasi:poll/poll + import wasi:io/streams + import wasi:cli/environment + import wasi:cli/stdin + import wasi:cli/stdout + import wasi:cli/stderr +} + +world test-command-with-sockets { + import wasi:poll/poll + import wasi:io/streams + import wasi:cli/environment + import wasi:cli/stdin + import wasi:cli/stdout + import wasi:cli/stderr + import wasi:sockets/tcp + import wasi:sockets/tcp-create-socket + import wasi:sockets/network + import wasi:sockets/instance-network +} diff --git a/crates/trigger/wit/config.wit b/crates/trigger/wit/config.wit new file mode 100644 index 000000000..2513e9e2a --- /dev/null +++ b/crates/trigger/wit/config.wit @@ -0,0 +1,12 @@ +interface config { + // Get a configuration value for the current component. + // The config key must match one defined in in the component manifest. + get-config: func(key: string) -> result + + variant error { + provider(string), + invalid-key(string), + invalid-schema(string), + other(string), + } +} diff --git a/crates/trigger/wit/http-types.wit b/crates/trigger/wit/http-types.wit new file mode 100644 index 000000000..5d156046b --- /dev/null +++ b/crates/trigger/wit/http-types.wit @@ -0,0 +1,44 @@ +interface http-types { + type http-status = u16 + + type body = list + + type headers = list> + + type params = list> + + type uri = string + + enum method { + get, + post, + put, + delete, + patch, + head, + options, + } + + record request { + method: method, + uri: uri, + headers: headers, + params: params, + body: option, + } + + record response { + status: http-status, + headers: option, + body: option, + } + + enum http-error { + success, + destination-not-allowed, + invalid-url, + request-error, + runtime-error, + too-many-requests, + } +} diff --git a/crates/trigger/wit/http.wit b/crates/trigger/wit/http.wit new file mode 100644 index 000000000..faac938ac --- /dev/null +++ b/crates/trigger/wit/http.wit @@ -0,0 +1,5 @@ +interface http { + use http-types.{request, response, http-error} + + send-request: func(req: request) -> result +} diff --git a/crates/trigger/wit/inbound-http.wit b/crates/trigger/wit/inbound-http.wit new file mode 100644 index 000000000..0fef7f58d --- /dev/null +++ b/crates/trigger/wit/inbound-http.wit @@ -0,0 +1,5 @@ +interface inbound-http { + use http-types.{request, response} + + handle-request: func(req: request) -> response +} diff --git a/crates/trigger/wit/inbound-redis.wit b/crates/trigger/wit/inbound-redis.wit new file mode 100644 index 000000000..2a027c546 --- /dev/null +++ b/crates/trigger/wit/inbound-redis.wit @@ -0,0 +1,6 @@ +interface inbound-redis { + use redis-types.{payload, error} + + // The entrypoint for a Redis handler. + handle-message: func(message: payload) -> result<_, error> +} diff --git a/crates/trigger/wit/key-value.wit b/crates/trigger/wit/key-value.wit new file mode 100644 index 000000000..6ff177063 --- /dev/null +++ b/crates/trigger/wit/key-value.wit @@ -0,0 +1,75 @@ +interface key-value { + /// An open key-value store + resource store { + /// Open the store with the specified name. + /// + /// If `name` is "default", the default store is opened. Otherwise, + /// `name` must refer to a store defined and configured in a runtime + /// configuration file supplied with the application. + /// + /// `error::no-such-store` will be raised if the `name` is not recognized. + open: static func(name: string) -> result + + /// Get the value associated with the specified `key` from the specified + /// `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store, and `error::no-such-key` will be raised if there is no + /// tuple for `key` in `store`. + get: func(key: string) -> result, error> + + /// Set the `value` associated with the specified `key` in the specified + /// `store`, overwriting any existing value. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. + set: func(key: string, value: list) -> result<_, error> + + /// Delete the tuple with the specified `key` from the specified `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. No error is raised if a tuple did not previously + /// exist for `key`. + delete: func(key: string) -> result<_, error> + + /// Return whether a tuple exists for the specified `key` in the specified + /// `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. + exists: func(key: string) -> result + + /// Return a list of all the keys in the specified `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. + get-keys: func() -> result, error> + } + + /// The set of errors which may be raised by functions in this interface + variant error { + /// Too many stores have been opened simultaneously. Closing one or more + /// stores prior to retrying may address this. + store-table-full, + + /// The host does not recognize the store name requested. Defining and + /// configuring a store with that name in a runtime configuration file + /// may address this. + no-such-store, + + /// The requesting component does not have access to the specified store + /// (which may or may not exist). + access-denied, + + /// The store handle provided is not recognized, i.e. it was either never + /// opened or has been closed. + invalid-store, + + /// No key-value tuple exists for the specified key in the specified + /// store. + no-such-key, + + /// Some implementation-specific error has occurred (e.g. I/O) + io(string) + } +} diff --git a/crates/trigger/wit/llm.wit b/crates/trigger/wit/llm.wit new file mode 100644 index 000000000..2b1533c34 --- /dev/null +++ b/crates/trigger/wit/llm.wit @@ -0,0 +1,70 @@ +// A WASI interface dedicated to performing inferencing for Large Language Models. +interface llm { + /// A Large Language Model. + type inferencing-model = string + + /// Inference request parameters + record inferencing-params { + /// The maximum tokens that should be inferred. + /// + /// Note: the backing implementation may return less tokens. + max-tokens: u32, + /// The amount the model should avoid repeating tokens. + repeat-penalty: float32, + /// The number of tokens the model should apply the repeat penalty to. + repeat-penalty-last-n-token-count: u32, + /// The randomness with which the next token is selected. + temperature: float32, + /// The number of possible next tokens the model will choose from. + top-k: u32, + /// The probability total of next tokens the model will choose from. + top-p: float32 + } + + /// The set of errors which may be raised by functions in this interface + variant error { + model-not-supported, + runtime-error(string), + invalid-input(string) + } + + /// An inferencing result + record inferencing-result { + /// The text generated by the model + // TODO: this should be a stream + text: string, + /// Usage information about the inferencing request + usage: inferencing-usage + } + + /// Usage information related to the inferencing result + record inferencing-usage { + /// Number of tokens in the prompt + prompt-token-count: u32, + /// Number of tokens generated by the inferencing operation + generated-token-count: u32 + } + + /// Perform inferencing using the provided model and prompt with the given optional params + infer: func(model: inferencing-model, prompt: string, params: option) -> result + + /// The model used for generating embeddings + type embedding-model = string + + /// Generate embeddings for the supplied list of text + generate-embeddings: func(model: embedding-model, text: list) -> result + + /// Result of generating embeddings + record embeddings-result { + /// The embeddings generated by the request + embeddings: list>, + /// Usage related to the embeddings generation request + usage: embeddings-usage + } + + /// Usage related to an embeddings generation request + record embeddings-usage { + /// Number of tokens in the prompt + prompt-token-count: u32, + } +} diff --git a/crates/trigger/wit/mysql.wit b/crates/trigger/wit/mysql.wit new file mode 100644 index 000000000..a08d86f5e --- /dev/null +++ b/crates/trigger/wit/mysql.wit @@ -0,0 +1,19 @@ +interface mysql { + use rdbms-types.{parameter-value, row-set} + + // General purpose error. + variant mysql-error { + success, + connection-failed(string), + bad-parameter(string), + query-failed(string), + value-conversion-failed(string), + other-error(string) + } + + // query the database: select + query: func(address: string, statement: string, params: list) -> result + + // execute command to the database: insert, update, delete + execute: func(address: string, statement: string, params: list) -> result<_, mysql-error> +} diff --git a/crates/trigger/wit/postgres.wit b/crates/trigger/wit/postgres.wit new file mode 100644 index 000000000..d9c8afef6 --- /dev/null +++ b/crates/trigger/wit/postgres.wit @@ -0,0 +1,19 @@ +interface postgres { + use rdbms-types.{parameter-value, row-set} + + // General purpose error. + variant pg-error { + success, + connection-failed(string), + bad-parameter(string), + query-failed(string), + value-conversion-failed(string), + other-error(string) + } + + // query the database: select + query: func(address: string, statement: string, params: list) -> result + + // execute command to the database: insert, update, delete + execute: func(address: string, statement: string, params: list) -> result +} diff --git a/crates/trigger/wit/rdbms-types.wit b/crates/trigger/wit/rdbms-types.wit new file mode 100644 index 000000000..ffadd9a3e --- /dev/null +++ b/crates/trigger/wit/rdbms-types.wit @@ -0,0 +1,65 @@ +interface rdbms-types { + enum db-data-type { + boolean, + int8, + int16, + int32, + int64, + uint8, + uint16, + uint32, + uint64, + floating32, + floating64, + str, + binary, + other, + } + + variant db-value { + boolean(bool), + int8(s8), + int16(s16), + int32(s32), + int64(s64), + uint8(u8), + uint16(u16), + uint32(u32), + uint64(u64), + floating32(float32), + floating64(float64), + str(string), + binary(list), + db-null, + unsupported, + } + + variant parameter-value { + boolean(bool), + int8(s8), + int16(s16), + int32(s32), + int64(s64), + uint8(u8), + uint16(u16), + uint32(u32), + uint64(u64), + floating32(float32), + floating64(float64), + str(string), + binary(list), + db-null, + } + + record column { + name: string, + data-type: db-data-type, + } + + type row = list + + record row-set { + columns: list, + rows: list, + } +} diff --git a/crates/trigger/wit/reactor.wit b/crates/trigger/wit/reactor.wit new file mode 100644 index 000000000..7387f1839 --- /dev/null +++ b/crates/trigger/wit/reactor.wit @@ -0,0 +1,50 @@ +package fermyon:spin + +world reactor { + import config + import postgres + import mysql + import sqlite + import redis + import key-value + import http + import llm + export inbound-http + export inbound-redis +} + +world redis-trigger { + import config + import postgres + import mysql + import sqlite + import redis + import key-value + import http + import llm + export inbound-redis +} + +world http-trigger { + import config + import postgres + import mysql + import sqlite + import redis + import key-value + import http + import llm + export inbound-http +} + +world platform { + import http-types + import config + import postgres + import mysql + import sqlite + import redis + import key-value + import http + import llm +} diff --git a/crates/trigger/wit/redis-types.wit b/crates/trigger/wit/redis-types.wit new file mode 100644 index 000000000..e08d593dd --- /dev/null +++ b/crates/trigger/wit/redis-types.wit @@ -0,0 +1,24 @@ +interface redis-types { + // General purpose error. + enum error { + success, + error, + } + + // The message payload. + type payload = list + + // A parameter type for the general-purpose `execute` function. + variant redis-parameter { + int64(s64), + binary(payload) + } + + // A return type for the general-purpose `execute` function. + variant redis-result { + nil, + status(string), + int64(s64), + binary(payload) + } +} diff --git a/crates/trigger/wit/redis.wit b/crates/trigger/wit/redis.wit new file mode 100644 index 000000000..6d1d1da3e --- /dev/null +++ b/crates/trigger/wit/redis.wit @@ -0,0 +1,31 @@ +interface redis { + use redis-types.{payload, redis-parameter, redis-result, error} + + // Publish a Redis message to the specificed channel and return an error, if any. + publish: func(address: string, channel: string, payload: payload) -> result<_, error> + + // Get the value of a key. + get: func(address: string, key: string) -> result + + // Set key to value. If key alreads holds a value, it is overwritten. + set: func(address: string, key: string, value: payload) -> result<_, error> + + // Increments the number stored at key by one. If the key does not exist, it is set to 0 before performing the operation. + // An error is returned if the key contains a value of the wrong type or contains a string that can not be represented as integer. + incr: func(address: string, key: string) -> result + + // Removes the specified keys. A key is ignored if it does not exist. + del: func(address: string, keys: list) -> result + + // Add the specified `values` to the set named `key`, returning the number of newly-added values. + sadd: func(address: string, key: string, values: list) -> result + + // Retrieve the contents of the set named `key`. + smembers: func(address: string, key: string) -> result, error> + + // Remove the specified `values` from the set named `key`, returning the number of newly-removed values. + srem: func(address: string, key: string, values: list) -> result + + // Execute an arbitrary Redis command and receive the result. + execute: func(address: string, command: string, arguments: list) -> result, error> +} diff --git a/crates/trigger/wit/sqlite.wit b/crates/trigger/wit/sqlite.wit new file mode 100644 index 000000000..5d7badcb9 --- /dev/null +++ b/crates/trigger/wit/sqlite.wit @@ -0,0 +1,50 @@ +interface sqlite { + /// A handle to an open sqlite instance + resource connection { + /// Open a connection to a named database instance. + /// + /// If `database` is "default", the default instance is opened. + /// + /// `error::no-such-database` will be raised if the `name` is not recognized. + open: static func(database: string) -> result + + /// Execute a statement returning back data if there is any + execute: func(statement: string, parameters: list) -> result + } + + /// The set of errors which may be raised by functions in this interface + variant error { + /// The host does not recognize the database name requested. + no-such-database, + /// The requesting component does not have access to the specified database (which may or may not exist). + access-denied, + /// The provided connection is not valid + invalid-connection, + /// The database has reached its capacity + database-full, + /// Some implementation-specific error has occurred (e.g. I/O) + io(string) + } + + /// A result of a query + record query-result { + /// The names of the columns retrieved in the query + columns: list, + /// the row results each containing the values for all the columns for a given row + rows: list, + } + + /// A set of values for each of the columns in a query-result + record row-result { + values: list + } + + /// A single column's result from a database query + variant value { + integer(s64), + real(float64), + text(string), + blob(list), + null + } +} From 1033fa81b1779c0ebf9494f183627aa1c85b92c0 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Fri, 6 Oct 2023 15:58:45 +0200 Subject: [PATCH 10/31] Do composition Signed-off-by: Ryan Levick --- Cargo.lock | 174 ++++++++++++++++-- crates/spin-adapter/.vscode/settings.json | 3 + crates/spin-adapter/Cargo.toml | 20 ++ crates/spin-adapter/src/lib.rs | 154 ++++++++++++++++ .../wit/deps/spin-one/key-value.wit | 82 +++++++++ .../spin-adapter/wit/deps/spin-one/sqlite.wit | 52 ++++++ .../wit/deps/spin-two/key-value.wit | 77 ++++++++ .../spin-adapter/wit/deps/spin-two/sqlite.wit | 52 ++++++ crates/spin-adapter/wit/world.wit | 9 + crates/trigger/Cargo.toml | 1 + crates/trigger/adapters/spin_adapter.wasm | Bin 0 -> 3220493 bytes crates/trigger/src/loader.rs | 35 +++- 12 files changed, 644 insertions(+), 15 deletions(-) create mode 100644 crates/spin-adapter/.vscode/settings.json create mode 100644 crates/spin-adapter/Cargo.toml create mode 100644 crates/spin-adapter/src/lib.rs create mode 100644 crates/spin-adapter/wit/deps/spin-one/key-value.wit create mode 100644 crates/spin-adapter/wit/deps/spin-one/sqlite.wit create mode 100644 crates/spin-adapter/wit/deps/spin-two/key-value.wit create mode 100644 crates/spin-adapter/wit/deps/spin-two/sqlite.wit create mode 100644 crates/spin-adapter/wit/world.wit create mode 100755 crates/trigger/adapters/spin_adapter.wasm diff --git a/Cargo.lock b/Cargo.lock index 4f9f080fb..30b752b9a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -771,6 +771,30 @@ dependencies = [ "winx", ] +[[package]] +name = "cargo-component-bindings" +version = "0.1.0" +source = "git+https://github.com/bytecodealliance/cargo-component?rev=86ccf3e9e57885784d5a32dcbb162813d5c820ba#86ccf3e9e57885784d5a32dcbb162813d5c820ba" +dependencies = [ + "cargo-component-macro", + "wit-bindgen 0.11.0", +] + +[[package]] +name = "cargo-component-macro" +version = "0.1.0" +source = "git+https://github.com/bytecodealliance/cargo-component?rev=86ccf3e9e57885784d5a32dcbb162813d5c820ba#86ccf3e9e57885784d5a32dcbb162813d5c820ba" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.29", + "wit-bindgen-core 0.11.0", + "wit-bindgen-rust 0.11.0", + "wit-bindgen-rust-lib 0.11.0", + "wit-component", +] + [[package]] name = "cargo-target-dep" version = "0.1.0" @@ -1824,6 +1848,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.25" @@ -4139,6 +4169,16 @@ dependencies = [ "sha2", ] +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.0.0", +] + [[package]] name = "phf" version = "0.11.1" @@ -5120,6 +5160,19 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_yaml" +version = "0.9.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "sha1" version = "0.6.1" @@ -5336,6 +5389,13 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "spin-adapter" +version = "2.0.0-pre0" +dependencies = [ + "cargo-component-bindings", +] + [[package]] name = "spin-app" version = "2.0.0-pre0" @@ -5772,7 +5832,7 @@ dependencies = [ "serde_json", "spin-macro", "thiserror", - "wit-bindgen", + "wit-bindgen 0.12.0", ] [[package]] @@ -5912,6 +5972,7 @@ dependencies = [ "toml 0.5.11", "tracing", "url", + "wasm-compose", "wasmtime", "wit-component", "wit-parser", @@ -6704,6 +6765,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +[[package]] +name = "unsafe-libyaml" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" + [[package]] name = "untrusted" version = "0.7.1" @@ -6958,6 +7025,25 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +[[package]] +name = "wasm-compose" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "464a6a72d5bff3bec4fc27d3512deb7271f5323e96c5c80e3c0d6f3b7353c4fc" +dependencies = [ + "anyhow", + "heck 0.4.1", + "indexmap 2.0.0", + "log", + "petgraph", + "serde", + "serde_yaml", + "smallvec", + "wasm-encoder 0.33.2", + "wasmparser 0.113.3", + "wat", +] + [[package]] name = "wasm-encoder" version = "0.32.0" @@ -7387,23 +7473,23 @@ dependencies = [ [[package]] name = "wast" -version = "64.0.0" +version = "66.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a259b226fd6910225aa7baeba82f9d9933b6d00f2ce1b49b80fa4214328237cc" +checksum = "0da7529bb848d58ab8bf32230fc065b363baee2bd338d5e58c589a1e7d83ad07" dependencies = [ "leb128", "memchr", "unicode-width", - "wasm-encoder 0.32.0", + "wasm-encoder 0.33.2", ] [[package]] name = "wat" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53253d920ab413fca1c7dc2161d601c79b4fdf631d0ba51dd4343bf9b556c3f6" +checksum = "4780374047c65b6b6e86019093fe80c18b66825eb684df778a4e068282a780e7" dependencies = [ - "wast 64.0.0", + "wast 66.0.0", ] [[package]] @@ -7792,6 +7878,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" +dependencies = [ + "bitflags 2.4.0", + "wit-bindgen-rust-macro 0.11.0", +] + [[package]] name = "wit-bindgen" version = "0.12.0" @@ -7799,7 +7895,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" dependencies = [ "bitflags 2.4.0", - "wit-bindgen-rust-macro", + "wit-bindgen-rust-macro 0.12.0", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" +dependencies = [ + "anyhow", + "wit-component", + "wit-parser", ] [[package]] @@ -7813,6 +7920,20 @@ dependencies = [ "wit-parser", ] +[[package]] +name = "wit-bindgen-rust" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" +dependencies = [ + "anyhow", + "heck 0.4.1", + "wasm-metadata", + "wit-bindgen-core 0.11.0", + "wit-bindgen-rust-lib 0.11.0", + "wit-component", +] + [[package]] name = "wit-bindgen-rust" version = "0.12.0" @@ -7822,11 +7943,21 @@ dependencies = [ "anyhow", "heck 0.4.1", "wasm-metadata", - "wit-bindgen-core", - "wit-bindgen-rust-lib", + "wit-bindgen-core 0.12.0", + "wit-bindgen-rust-lib 0.12.0", "wit-component", ] +[[package]] +name = "wit-bindgen-rust-lib" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" +dependencies = [ + "heck 0.4.1", + "wit-bindgen-core 0.11.0", +] + [[package]] name = "wit-bindgen-rust-lib" version = "0.12.0" @@ -7834,7 +7965,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" dependencies = [ "heck 0.4.1", - "wit-bindgen-core", + "wit-bindgen-core 0.12.0", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" +dependencies = [ + "anyhow", + "proc-macro2", + "syn 2.0.29", + "wit-bindgen-core 0.11.0", + "wit-bindgen-rust 0.11.0", + "wit-bindgen-rust-lib 0.11.0", + "wit-component", ] [[package]] @@ -7846,9 +7992,9 @@ dependencies = [ "anyhow", "proc-macro2", "syn 2.0.29", - "wit-bindgen-core", - "wit-bindgen-rust", - "wit-bindgen-rust-lib", + "wit-bindgen-core 0.12.0", + "wit-bindgen-rust 0.12.0", + "wit-bindgen-rust-lib 0.12.0", "wit-component", ] diff --git a/crates/spin-adapter/.vscode/settings.json b/crates/spin-adapter/.vscode/settings.json new file mode 100644 index 000000000..35e43fe7c --- /dev/null +++ b/crates/spin-adapter/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "rust-analyzer.check.overrideCommand": ["cargo", "component", "check", "--message-format=json"] +} diff --git a/crates/spin-adapter/Cargo.toml b/crates/spin-adapter/Cargo.toml new file mode 100644 index 000000000..7a26d8601 --- /dev/null +++ b/crates/spin-adapter/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "spin-adapter" +version.workspace = true +authors.workspace = true +edition.workspace = true + +[dependencies] +cargo-component-bindings = { git = "https://github.com/bytecodealliance/cargo-component", rev = "86ccf3e9e57885784d5a32dcbb162813d5c820ba" } + +[lib] +crate-type = ["cdylib"] + +[package.metadata.component] +package = "component:spin-adapter" + +[package.metadata.component.dependencies] + +[package.metadata.component.target.dependencies] +"fermyon:spin-two" = { path = "wit/deps/spin-two" } +"fermyon:spin-one" = { path = "wit/deps/spin-one" } diff --git a/crates/spin-adapter/src/lib.rs b/crates/spin-adapter/src/lib.rs new file mode 100644 index 000000000..ac470ecbd --- /dev/null +++ b/crates/spin-adapter/src/lib.rs @@ -0,0 +1,154 @@ +cargo_component_bindings::generate!(); + +use std::mem::ManuallyDrop; + +use bindings::exports::fermyon::spin_one::{key_value, sqlite}; + +use bindings::fermyon::spin_two; + +struct Component; + +impl From for key_value::Error { + fn from(value: spin_two::key_value::Error) -> Self { + match value { + spin_two::key_value::Error::StoreTableFull => Self::StoreTableFull, + spin_two::key_value::Error::NoSuchStore => Self::NoSuchStore, + spin_two::key_value::Error::AccessDenied => Self::AccessDenied, + spin_two::key_value::Error::InvalidStore => Self::InvalidStore, + spin_two::key_value::Error::NoSuchKey => Self::NoSuchKey, + spin_two::key_value::Error::Io(s) => Self::Io(s), + } + } +} + +impl key_value::Guest for Component { + fn open(name: String) -> Result { + let store = + spin_two::key_value::Store::open(&name).map_err::(From::from)?; + let handle = store.handle(); + // Forget the store so that we don't run the destructor + std::mem::forget(store); + Ok(handle) + } + + fn get(store: key_value::Store, key: String) -> Result, key_value::Error> { + let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); + store.get(&key).map_err::(From::from) + } + + fn set(store: key_value::Store, key: String, value: Vec) -> Result<(), key_value::Error> { + let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); + store + .set(&key, &value) + .map_err::(From::from) + } + + fn delete(store: key_value::Store, key: String) -> Result<(), key_value::Error> { + let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); + store + .delete(&key) + .map_err::(From::from) + } + + fn exists(store: key_value::Store, key: String) -> Result { + let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); + store + .exists(&key) + .map_err::(From::from) + } + + fn get_keys(store: key_value::Store) -> Result, key_value::Error> { + let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); + store.get_keys().map_err::(From::from) + } + + fn close(store: key_value::Store) { + // Run the destructor + let _ = unsafe { spin_two::key_value::Store::from_handle(store) }; + } +} + +impl From for sqlite::Error { + fn from(value: spin_two::sqlite::Error) -> Self { + match value { + spin_two::sqlite::Error::NoSuchDatabase => Self::NoSuchDatabase, + spin_two::sqlite::Error::AccessDenied => Self::AccessDenied, + spin_two::sqlite::Error::InvalidConnection => Self::InvalidConnection, + spin_two::sqlite::Error::DatabaseFull => Self::DatabaseFull, + spin_two::sqlite::Error::Io(s) => Self::Io(s), + } + } +} + +impl From for spin_two::sqlite::Value { + fn from(value: sqlite::Value) -> Self { + match value { + sqlite::Value::Integer(i) => Self::Integer(i), + sqlite::Value::Real(r) => Self::Real(r), + sqlite::Value::Text(t) => Self::Text(t), + sqlite::Value::Blob(b) => Self::Blob(b), + sqlite::Value::Null => Self::Null, + } + } +} + +impl From for sqlite::QueryResult { + fn from(query_result: spin_two::sqlite::QueryResult) -> Self { + Self { + columns: query_result.columns, + rows: query_result.rows.into_iter().map(From::from).collect(), + } + } +} + +impl From for sqlite::RowResult { + fn from(row_result: spin_two::sqlite::RowResult) -> Self { + Self { + values: row_result.values.into_iter().map(From::from).collect(), + } + } +} + +impl From for sqlite::Value { + fn from(value: spin_two::sqlite::Value) -> Self { + match value { + spin_two::sqlite::Value::Integer(i) => Self::Integer(i), + spin_two::sqlite::Value::Real(r) => Self::Real(r), + spin_two::sqlite::Value::Text(t) => Self::Text(t), + spin_two::sqlite::Value::Blob(b) => Self::Blob(b), + spin_two::sqlite::Value::Null => Self::Null, + } + } +} + +impl sqlite::Guest for Component { + fn open(database: String) -> Result { + let connection = spin_two::sqlite::Connection::open(&database) + .map_err::(From::from)?; + let handle = connection.handle(); + // Forget the connection so that we don't run the destructor + std::mem::forget(connection); + Ok(handle) + } + + fn execute( + conn: sqlite::Connection, + statement: String, + parameters: Vec, + ) -> Result { + let conn = + std::mem::ManuallyDrop::new(unsafe { spin_two::sqlite::Connection::from_handle(conn) }); + let result = conn + .execute( + &statement, + ¶meters.into_iter().map(From::from).collect::>(), + ) + .map_err::(From::from)?; + Ok(result.into()) + } + + fn close(conn: sqlite::Connection) { + // Run the destructor + let _ = unsafe { spin_two::sqlite::Connection::from_handle(conn) }; + } +} diff --git a/crates/spin-adapter/wit/deps/spin-one/key-value.wit b/crates/spin-adapter/wit/deps/spin-one/key-value.wit new file mode 100644 index 000000000..0738bf542 --- /dev/null +++ b/crates/spin-adapter/wit/deps/spin-one/key-value.wit @@ -0,0 +1,82 @@ +package fermyon:spin-one + +interface key-value { + // A handle to an open key-value store + type store = u32 + + // The set of errors which may be raised by functions in this interface + variant error { + // Too many stores have been opened simultaneously. Closing one or more + // stores prior to retrying may address this. + store-table-full, + + // The host does not recognize the store name requested. Defining and + // configuring a store with that name in a runtime configuration file + // may address this. + no-such-store, + + // The requesting component does not have access to the specified store + // (which may or may not exist). + access-denied, + + // The store handle provided is not recognized, i.e. it was either never + // opened or has been closed. + invalid-store, + + // No key-value tuple exists for the specified key in the specified + // store. + no-such-key, + + // Some implementation-specific error has occurred (e.g. I/O) + io(string) + } + + // Open the store with the specified name. + // + // If `name` is "default", the default store is opened. Otherwise, + // `name` must refer to a store defined and configured in a runtime + // configuration file supplied with the application. + // + // `error::no-such-store` will be raised if the `name` is not recognized. + open: func(name: string) -> result + + // Get the value associated with the specified `key` from the specified + // `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store, and `error::no-such-key` will be raised if there is no + // tuple for `key` in `store`. + get: func(store: store, key: string) -> result, error> + + // Set the `value` associated with the specified `key` in the specified + // `store`, overwriting any existing value. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + set: func(store: store, key: string, value: list) -> result<_, error> + + // Delete the tuple with the specified `key` from the specified `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. No error is raised if a tuple did not previously + // exist for `key`. + delete: func(store: store, key: string) -> result<_, error> + + // Return whether a tuple exists for the specified `key` in the specified + // `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + exists: func(store: store, key: string) -> result + + // Return a list of all the keys in the specified `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + get-keys: func(store: store) -> result, error> + + // Close the specified `store`. + // + // This has no effect if `store` is not a valid handle to an open store. + close: func(store: store) +} diff --git a/crates/spin-adapter/wit/deps/spin-one/sqlite.wit b/crates/spin-adapter/wit/deps/spin-one/sqlite.wit new file mode 100644 index 000000000..8d802edf8 --- /dev/null +++ b/crates/spin-adapter/wit/deps/spin-one/sqlite.wit @@ -0,0 +1,52 @@ +interface sqlite { + // A handle to an open sqlite instance + type connection = u32 + + // The set of errors which may be raised by functions in this interface + variant error { + // The host does not recognize the database name requested. + no-such-database, + // The requesting component does not have access to the specified database (which may or may not exist). + access-denied, + // The provided connection is not valid + invalid-connection, + // The database has reached its capacity + database-full, + // Some implementation-specific error has occurred (e.g. I/O) + io(string) + } + + // Open a connection to a named database instance. + // + // If `database` is "default", the default instance is opened. + // + // `error::no-such-database` will be raised if the `name` is not recognized. + open: func(database: string) -> result + + // Execute a statement returning back data if there is any + execute: func(conn: connection, statement: string, parameters: list) -> result + + // Close the specified `connection`. + close: func(conn: connection) + + // A result of a query + record query-result { + // The names of the columns retrieved in the query + columns: list, + // the row results each containing the values for all the columns for a given row + rows: list, + } + + // A set of values for each of the columns in a query-result + record row-result { + values: list + } + + variant value { + integer(s64), + real(float64), + text(string), + blob(list), + null + } +} diff --git a/crates/spin-adapter/wit/deps/spin-two/key-value.wit b/crates/spin-adapter/wit/deps/spin-two/key-value.wit new file mode 100644 index 000000000..7ec22b01a --- /dev/null +++ b/crates/spin-adapter/wit/deps/spin-two/key-value.wit @@ -0,0 +1,77 @@ +package fermyon:spin-two + +interface key-value { + /// An open key-value store + resource store { + /// Open the store with the specified name. + /// + /// If `name` is "default", the default store is opened. Otherwise, + /// `name` must refer to a store defined and configured in a runtime + /// configuration file supplied with the application. + /// + /// `error::no-such-store` will be raised if the `name` is not recognized. + open: static func(name: string) -> result + + /// Get the value associated with the specified `key` from the specified + /// `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store, and `error::no-such-key` will be raised if there is no + /// tuple for `key` in `store`. + get: func(key: string) -> result, error> + + /// Set the `value` associated with the specified `key` in the specified + /// `store`, overwriting any existing value. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. + set: func(key: string, value: list) -> result<_, error> + + /// Delete the tuple with the specified `key` from the specified `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. No error is raised if a tuple did not previously + /// exist for `key`. + delete: func(key: string) -> result<_, error> + + /// Return whether a tuple exists for the specified `key` in the specified + /// `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. + exists: func(key: string) -> result + + /// Return a list of all the keys in the specified `store`. + /// + /// `error::invalid-store` will be raised if `store` is not a valid handle + /// to an open store. + get-keys: func() -> result, error> + } + + /// The set of errors which may be raised by functions in this interface + variant error { + /// Too many stores have been opened simultaneously. Closing one or more + /// stores prior to retrying may address this. + store-table-full, + + /// The host does not recognize the store name requested. Defining and + /// configuring a store with that name in a runtime configuration file + /// may address this. + no-such-store, + + /// The requesting component does not have access to the specified store + /// (which may or may not exist). + access-denied, + + /// The store handle provided is not recognized, i.e. it was either never + /// opened or has been closed. + invalid-store, + + /// No key-value tuple exists for the specified key in the specified + /// store. + no-such-key, + + /// Some implementation-specific error has occurred (e.g. I/O) + io(string) + } +} diff --git a/crates/spin-adapter/wit/deps/spin-two/sqlite.wit b/crates/spin-adapter/wit/deps/spin-two/sqlite.wit new file mode 100644 index 000000000..bf8245c99 --- /dev/null +++ b/crates/spin-adapter/wit/deps/spin-two/sqlite.wit @@ -0,0 +1,52 @@ +package fermyon:spin-two + +interface sqlite { + /// A handle to an open sqlite instance + resource connection { + /// Open a connection to a named database instance. + /// + /// If `database` is "default", the default instance is opened. + /// + /// `error::no-such-database` will be raised if the `name` is not recognized. + open: static func(database: string) -> result + + /// Execute a statement returning back data if there is any + execute: func(statement: string, parameters: list) -> result + } + + /// The set of errors which may be raised by functions in this interface + variant error { + /// The host does not recognize the database name requested. + no-such-database, + /// The requesting component does not have access to the specified database (which may or may not exist). + access-denied, + /// The provided connection is not valid + invalid-connection, + /// The database has reached its capacity + database-full, + /// Some implementation-specific error has occurred (e.g. I/O) + io(string) + } + + /// A result of a query + record query-result { + /// The names of the columns retrieved in the query + columns: list, + /// the row results each containing the values for all the columns for a given row + rows: list, + } + + /// A set of values for each of the columns in a query-result + record row-result { + values: list + } + + /// A single column's result from a database query + variant value { + integer(s64), + real(float64), + text(string), + blob(list), + null + } +} diff --git a/crates/spin-adapter/wit/world.wit b/crates/spin-adapter/wit/world.wit new file mode 100644 index 000000000..b7d208530 --- /dev/null +++ b/crates/spin-adapter/wit/world.wit @@ -0,0 +1,9 @@ +package example:spin-adapter + +world adapter { + import fermyon:spin-two/sqlite + import fermyon:spin-two/key-value + + export fermyon:spin-one/sqlite + export fermyon:spin-one/key-value +} diff --git a/crates/trigger/Cargo.toml b/crates/trigger/Cargo.toml index 3672f37ac..957236249 100644 --- a/crates/trigger/Cargo.toml +++ b/crates/trigger/Cargo.toml @@ -51,6 +51,7 @@ spin-componentize = { workspace = true } wit-component = "0.14.5" wit-parser = "0.11.3" +wasm-compose = "0.4.7" [dev-dependencies] libtest-mimic = "0.6.1" diff --git a/crates/trigger/adapters/spin_adapter.wasm b/crates/trigger/adapters/spin_adapter.wasm new file mode 100755 index 0000000000000000000000000000000000000000..353b1503ef969660f1ad8c7defaad6646aff6b18 GIT binary patch literal 3220493 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 z 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 O39h=r5;| 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

^^S+)1-95(!8 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�*t33mw0@ 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 z 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

nLX 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�=3LIpvR8(j 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 anyhow::Result Date: Fri, 6 Oct 2023 16:18:13 +0200 Subject: [PATCH 11/31] Appease clippy Signed-off-by: Ryan Levick --- crates/sqlite/src/lib.rs | 2 +- crates/trigger/src/loader.rs | 4 ++-- sdk/rust/src/llm.rs | 20 ++++++++++---------- sdk/rust/src/outbound_http.rs | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/crates/sqlite/src/lib.rs b/crates/sqlite/src/lib.rs index 70cfd5c70..536018284 100644 --- a/crates/sqlite/src/lib.rs +++ b/crates/sqlite/src/lib.rs @@ -92,7 +92,7 @@ impl spin_world::sqlite::HostConnection for SqliteDispatch { spin_world::sqlite::Error::Io("too many connections opened".to_string()) }) }) - .map(|c| Resource::new_own(c))) + .map(Resource::new_own)) } async fn execute( diff --git a/crates/trigger/src/loader.rs b/crates/trigger/src/loader.rs index 872f56345..50070e1a0 100644 --- a/crates/trigger/src/loader.rs +++ b/crates/trigger/src/loader.rs @@ -115,7 +115,7 @@ impl Loader for TriggerLoader { fn adapt_old_worlds_to_new(component: &[u8]) -> anyhow::Result> { let mut resolve = wit_parser::Resolve::new(); const SPIN_WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wit"); - resolve.push_dir(&std::path::Path::new(SPIN_WIT_PATH))?; + resolve.push_dir(std::path::Path::new(SPIN_WIT_PATH))?; let pkg = resolve .package_names .get(&PackageName { @@ -126,7 +126,7 @@ fn adapt_old_worlds_to_new(component: &[u8]) -> anyhow::Result { Other(&'a str), } -impl<'a> InferencingModel<'a> { - fn to_string(&self) -> llm::InferencingModel { - match self { +impl<'a> std::fmt::Display for InferencingModel<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let str = match self { InferencingModel::Llama2Chat => "llama2-chat", InferencingModel::CodellamaInstruct => "codellama-instruct", InferencingModel::Other(s) => s, - } - .into() + }; + f.write_str(str) } } @@ -60,13 +60,13 @@ pub enum EmbeddingModel<'a> { Other(&'a str), } -impl<'a> EmbeddingModel<'a> { - fn to_string(&self) -> llm::EmbeddingModel { - match self { +impl<'a> std::fmt::Display for EmbeddingModel<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let str = match self { EmbeddingModel::AllMiniLmL6V2 => "all-minilm-l6-v2", EmbeddingModel::Other(s) => s, - } - .into() + }; + f.write_str(str) } } diff --git a/sdk/rust/src/outbound_http.rs b/sdk/rust/src/outbound_http.rs index 211ad8af8..4c5ffac1a 100644 --- a/sdk/rust/src/outbound_http.rs +++ b/sdk/rust/src/outbound_http.rs @@ -52,8 +52,8 @@ pub fn send_request(req: Request) -> Result { .map_err(|_| OutboundHttpError::RuntimeError) } -fn try_header_to_strs<'k, 'v>( - (header_name, header_value): (&'k HeaderName, &'v HeaderValue), +fn try_header_to_strs( + (header_name, header_value): (&HeaderName, &HeaderValue), ) -> Result<(String, String)> { Ok(( header_name.to_string(), From b96e1adf13e2a04d46af7f314a276cc27eadd9a7 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Fri, 6 Oct 2023 18:21:49 +0200 Subject: [PATCH 12/31] Add back open_default to Store Signed-off-by: Ryan Levick --- sdk/rust/src/key_value.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sdk/rust/src/key_value.rs b/sdk/rust/src/key_value.rs index 623feee42..19a2a3e62 100644 --- a/sdk/rust/src/key_value.rs +++ b/sdk/rust/src/key_value.rs @@ -13,6 +13,15 @@ use serde::{de::DeserializeOwned, Serialize}; // TODO: use `#[doc(inline)]` as soon as wit-bindgen#688 is merged pub use key_value::Store; +impl Store { + /// Open the default store. + /// + /// This is equivalent to `Store::open("default")`. + pub fn open_default() -> Result { + Self::open("default") + } +} + #[doc(inline)] pub use key_value::Error; From a2d47e0f20f6d06e89686508794376f81afef76e Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Mon, 9 Oct 2023 12:14:18 +0200 Subject: [PATCH 13/31] WIP broken WIT changes Signed-off-by: Ryan Levick --- wit/preview2/deps/spin@1.0.0/key-value.wit | 82 ++++++++++++++++++++++ wit/preview2/reactor.wit | 3 +- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 wit/preview2/deps/spin@1.0.0/key-value.wit diff --git a/wit/preview2/deps/spin@1.0.0/key-value.wit b/wit/preview2/deps/spin@1.0.0/key-value.wit new file mode 100644 index 000000000..24e0f1efb --- /dev/null +++ b/wit/preview2/deps/spin@1.0.0/key-value.wit @@ -0,0 +1,82 @@ +package fermyon:spin + +interface key-value { + // A handle to an open key-value store + type store = u32 + + // The set of errors which may be raised by functions in this interface + variant error { + // Too many stores have been opened simultaneously. Closing one or more + // stores prior to retrying may address this. + store-table-full, + + // The host does not recognize the store name requested. Defining and + // configuring a store with that name in a runtime configuration file + // may address this. + no-such-store, + + // The requesting component does not have access to the specified store + // (which may or may not exist). + access-denied, + + // The store handle provided is not recognized, i.e. it was either never + // opened or has been closed. + invalid-store, + + // No key-value tuple exists for the specified key in the specified + // store. + no-such-key, + + // Some implementation-specific error has occurred (e.g. I/O) + io(string) + } + + // Open the store with the specified name. + // + // If `name` is "default", the default store is opened. Otherwise, + // `name` must refer to a store defined and configured in a runtime + // configuration file supplied with the application. + // + // `error::no-such-store` will be raised if the `name` is not recognized. + open: func(name: string) -> result + + // Get the value associated with the specified `key` from the specified + // `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store, and `error::no-such-key` will be raised if there is no + // tuple for `key` in `store`. + get: func(store: store, key: string) -> result, error> + + // Set the `value` associated with the specified `key` in the specified + // `store`, overwriting any existing value. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + set: func(store: store, key: string, value: list) -> result<_, error> + + // Delete the tuple with the specified `key` from the specified `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. No error is raised if a tuple did not previously + // exist for `key`. + delete: func(store: store, key: string) -> result<_, error> + + // Return whether a tuple exists for the specified `key` in the specified + // `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + exists: func(store: store, key: string) -> result + + // Return a list of all the keys in the specified `store`. + // + // `error::invalid-store` will be raised if `store` is not a valid handle + // to an open store. + get-keys: func(store: store) -> result, error> + + // Close the specified `store`. + // + // This has no effect if `store` is not a valid handle to an open store. + close: func(store: store) +} \ No newline at end of file diff --git a/wit/preview2/reactor.wit b/wit/preview2/reactor.wit index 7387f1839..345cbb895 100644 --- a/wit/preview2/reactor.wit +++ b/wit/preview2/reactor.wit @@ -1,4 +1,4 @@ -package fermyon:spin +package fermyon:spin@2.0.0 world reactor { import config @@ -7,6 +7,7 @@ world reactor { import sqlite import redis import key-value + import fermyon:spin/key-value import http import llm export inbound-http From d5f2747887c35c0dea51a53d3a7ccde4e57d26bd Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Mon, 9 Oct 2023 17:42:38 +0200 Subject: [PATCH 14/31] Support old key-value Signed-off-by: Ryan Levick --- Cargo.lock | 266 +++++++----------- Cargo.toml | 12 +- crates/core/src/store.rs | 58 +++- crates/key-value/src/host_component.rs | 35 ++- crates/key-value/src/lib.rs | 67 ++++- crates/trigger/src/lib.rs | 8 + crates/trigger/src/loader.rs | 5 +- .../trigger/src/runtime_config/key_value.rs | 12 +- crates/world/Cargo.toml | 2 +- crates/world/src/lib.rs | 3 +- examples/spin-timer/Cargo.toml | 4 +- 11 files changed, 284 insertions(+), 188 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 30b752b9a..fcb04c730 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1101,18 +1101,16 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b9d1a9e776c27ad55d7792a380785d1fe8c2d7b099eed8dbd8f4af2b598192" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5528483314c2dd5da438576cd8a9d0b3cedad66fb8a4727f90cd319a81950038" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "bumpalo", "cranelift-bforest", @@ -1131,33 +1129,29 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f46a8318163f7682e35b8730ba93c1b586a2da8ce12a0ed545efc1218550f70" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d1239cfd50eecfaed468d46943f8650e32969591868ad50111613704da6c70" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "cranelift-control" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc530560c8f16cc1d4dd7ea000c56f519c60d1a914977abe849ce555c35a61d" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f333fa641a9ad2bff0b107767dcb972c18c2bfab7969805a1d7e42449ccb0408" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "serde", "serde_derive", @@ -1165,9 +1159,8 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abf6563015a80f03f8bc4df307d0a81363f4eb73108df3a34f6e66fb6d5307" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen", "log", @@ -1177,15 +1170,13 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eb29d0edc8a5c029ed0f7ca77501f272738e3c410020b4a00f42ffe8ad2a8aa" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "cranelift-native" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006056a7fa920870bad06bf8e1b3033d70cbb7ee625b035efa9d90882a931868" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen", "libc", @@ -1194,9 +1185,8 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b3d08c05f82903a1f6a04d89c4b9ecb47a4035710f89a39a21a147a80214672" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1204,7 +1194,7 @@ dependencies = [ "itertools 0.10.5", "log", "smallvec", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-types", ] @@ -2854,9 +2844,9 @@ checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "ittapi" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e648c437172ce7d3ac35ca11a068755072054826fa455a916b43524fa4a62a7" +checksum = "25a5c0b993601cad796222ea076565c5d9f337d35592f8622c753724f06d7271" dependencies = [ "anyhow", "ittapi-sys", @@ -2865,9 +2855,9 @@ dependencies = [ [[package]] name = "ittapi-sys" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b32a4d23f72548178dde54f3c12c6b6a08598e25575c0d0fa5bd861e0dc1a5" +checksum = "cb7b5e473765060536a660eed127f758cf1a810c73e49063264959c60d1727d9" dependencies = [ "cc", ] @@ -4637,9 +4627,9 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b4dcbd3a2ae7fb94b5813fa0e957c6ab51bf5d0a8ee1b69e0c2d0f1e6eb8485" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" dependencies = [ "hashbrown 0.13.2", "log", @@ -5510,11 +5500,11 @@ dependencies = [ [[package]] name = "spin-componentize" version = "0.1.0" -source = "git+https://github.com/fermyon/spin-componentize?rev=5c91eb4fb5c5ae6d51b2d6a7f8a40f8f8b0af7ac#5c91eb4fb5c5ae6d51b2d6a7f8a40f8f8b0af7ac" +source = "git+https://github.com/fermyon/spin-componentize?rev=d687583d1cf36104044a1f32d72cb3de587e55aa#d687583d1cf36104044a1f32d72cb3de587e55aa" dependencies = [ "anyhow", - "wasm-encoder 0.32.0", - "wasmparser 0.112.0", + "wasm-encoder", + "wasmparser", "wit-component", "wit-parser", ] @@ -6680,7 +6670,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", - "rand 0.8.5", + "rand 0.7.3", "static_assertions", ] @@ -6900,9 +6890,8 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-cap-std-sync" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec076cd75f207327f5bfaebb915ef03d82c3a01a6d9b5d0deb6eafffceab3095" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -6913,7 +6902,6 @@ dependencies = [ "fs-set-times", "io-extras", "io-lifetimes 2.0.2", - "is-terminal", "once_cell", "rustix 0.38.13", "system-interface", @@ -6924,9 +6912,8 @@ dependencies = [ [[package]] name = "wasi-common" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f391b334c783c1154369be62c31dc8598ffa1a6c34ea05d7f8cf0b18ce7c272" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -6944,9 +6931,8 @@ dependencies = [ [[package]] name = "wasi-tokio" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6de05e4d9f81b8e82672cff04bab4128a170274ed2c44ff4c9e36905aefcaf35" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cap-std", @@ -7039,20 +7025,11 @@ dependencies = [ "serde", "serde_yaml", "smallvec", - "wasm-encoder 0.33.2", - "wasmparser 0.113.3", + "wasm-encoder", + "wasmparser", "wat", ] -[[package]] -name = "wasm-encoder" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba64e81215916eaeb48fee292f29401d69235d62d8b8fd92a7b2844ec5ae5f7" -dependencies = [ - "leb128", -] - [[package]] name = "wasm-encoder" version = "0.33.2" @@ -7073,8 +7050,8 @@ dependencies = [ "serde", "serde_json", "spdx", - "wasm-encoder 0.33.2", - "wasmparser 0.113.3", + "wasm-encoder", + "wasmparser", ] [[package]] @@ -7090,16 +7067,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.112.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e986b010f47fcce49cf8ea5d5f9e5d2737832f12b53ae8ae785bbe895d0877bf" -dependencies = [ - "indexmap 2.0.0", - "semver", -] - [[package]] name = "wasmparser" version = "0.113.3" @@ -7112,19 +7079,18 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.2.64" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ddf5892036cd4b780d505eff1194a0cbc10ed896097656fdcea3744b5e7c2f" +checksum = "537030718ce76e985896e91fe2cac77c1913c8dccd46eaf8ab1a4cd56d824cc3" dependencies = [ "anyhow", - "wasmparser 0.112.0", + "wasmparser", ] [[package]] name = "wasmtime" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ed7db409c1acf60d33128b2a38bee25aaf38c4bd955ab98a5b623c8294593c" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -7145,8 +7111,8 @@ dependencies = [ "serde_derive", "serde_json", "target-lexicon", - "wasm-encoder 0.32.0", - "wasmparser 0.112.0", + "wasm-encoder", + "wasmparser", "wasmtime-cache", "wasmtime-component-macro", "wasmtime-component-util", @@ -7162,18 +7128,16 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53af0f8f6271bd687fe5632c8fe0a0f061d0aa1b99a0cd4e1df8e4cbeb809d2f" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41376a7c094335ee08abe6a4eff79a32510cc805a249eff1b5e7adf0a42e7cdf" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "base64 0.21.3", @@ -7191,9 +7155,8 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ab5b291f2dad56f1e6929cc61fb7cac68845766ca77c3838b5d05d82c33976" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "proc-macro2", @@ -7206,15 +7169,13 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21436177bf19f6b60dc0b83ad5872e849892a4a90c3572785e1a28c0e2e1132c" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "wasmtime-cranelift" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "920e42058862d1f7a3dd3fca73cb495a20d7506e3ada4bbc0a9780cd636da7ca" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cfg-if", @@ -7229,7 +7190,7 @@ dependencies = [ "object 0.32.1", "target-lexicon", "thiserror", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-cranelift-shared", "wasmtime-environ", "wasmtime-versioned-export-macros", @@ -7237,9 +7198,8 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516d63bbe18219e64a9705cf3a2c865afe1fb711454ea03091dc85a1d708194d" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-codegen", @@ -7253,9 +7213,8 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59cef239d663885f1427f8b8f4fde7be6075249c282580d94b480f11953ca194" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-entity", @@ -7267,8 +7226,8 @@ dependencies = [ "serde_derive", "target-lexicon", "thiserror", - "wasm-encoder 0.32.0", - "wasmparser 0.112.0", + "wasm-encoder", + "wasmparser", "wasmprinter", "wasmtime-component-util", "wasmtime-types", @@ -7276,9 +7235,8 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef118b557df6193cd82cfb45ab57cd12388fedfe2bb76f090b2d77c96c1b56e" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cc", "cfg-if", @@ -7290,9 +7248,8 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8089d5909b8f923aad57702ebaacb7b662aa9e43a3f71e83e025c5379a1205f" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "addr2line 0.21.0", "anyhow", @@ -7317,9 +7274,8 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b13924aedf6799ad66edb25500a20e3226629978b30a958c55285352bad130a" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "object 0.32.1", "once_cell", @@ -7329,9 +7285,8 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ff5f3707a5e3797deeeeac6ac26b2e1dd32dbc06693c0ab52e8ac4d18ec706" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cfg-if", "libc", @@ -7340,9 +7295,8 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ab4ce04ac05342edfa7f42895f2a5d8b16ee914330869acb865cd1facf265f" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cc", @@ -7358,7 +7312,7 @@ dependencies = [ "rand 0.8.5", "rustix 0.38.13", "sptr", - "wasm-encoder 0.32.0", + "wasm-encoder", "wasmtime-asm-macros", "wasmtime-environ", "wasmtime-fiber", @@ -7370,22 +7324,20 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecf61e21d5bd95e1ad7fa42b7bdabe21220682d6a6046d376edca29760849222" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-entity", "serde", "serde_derive", "thiserror", - "wasmparser 0.112.0", + "wasmparser", ] [[package]] name = "wasmtime-versioned-export-macros" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe877472cbdd6d96b4ecdc112af764e3b9d58c2e4175a87828f892ab94c60643" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "proc-macro2", "quote", @@ -7394,9 +7346,8 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6db393deb775e8bece53a6869be6425e46b28426aa7709df8c529a19759f4be" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -7411,14 +7362,15 @@ dependencies = [ "futures", "io-extras", "io-lifetimes 2.0.2", - "is-terminal", "libc", + "log", "once_cell", "rustix 0.38.13", "system-interface", "thiserror", "tokio", "tracing", + "url", "wasi-cap-std-sync", "wasi-common", "wasi-tokio", @@ -7429,16 +7381,15 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bc5a770003807c55f2187a0092dea01722b0e24151e35816bd5091538bb8e88" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-codegen", "gimli 0.28.0", "object 0.32.1", "target-lexicon", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-cranelift-shared", "wasmtime-environ", "winch-codegen", @@ -7446,9 +7397,8 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62003d48822f89cc393e93643366ddbee1766779c0874353b8ba2ede4679fbf9" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "heck 0.4.1", @@ -7458,9 +7408,8 @@ dependencies = [ [[package]] name = "wasmtime-wmemcheck" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5412bb464066d64c3398c96e6974348f90fa2a55110ad7da3f9295438cd4de84" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "wast" @@ -7480,7 +7429,7 @@ dependencies = [ "leb128", "memchr", "unicode-width", - "wasm-encoder 0.33.2", + "wasm-encoder", ] [[package]] @@ -7600,9 +7549,8 @@ dependencies = [ [[package]] name = "wiggle" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da341f21516453768bd115bdc17b186c0a1ab6773c2b2eeab44a062db49bd616" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -7615,9 +7563,8 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22c6bd943a4bae37052b79d249fb32d7afa22b3f6a147a5f2e7bc2b9f901879" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "heck 0.4.1", @@ -7630,9 +7577,8 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d72d838b7c9302b2ca7c44f36d6af5ce1988239a16deba951d99c4630d17caf" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "proc-macro2", "quote", @@ -7673,9 +7619,8 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50647204d600a2a112eefac0645ba6653809a15bd362c7e4e6a049a5bdff0de9" +version = "0.13.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-codegen", @@ -7683,7 +7628,7 @@ dependencies = [ "regalloc2", "smallvec", "target-lexicon", - "wasmparser 0.112.0", + "wasmparser", "wasmtime-environ", ] @@ -8010,9 +7955,9 @@ dependencies = [ "log", "serde", "serde_json", - "wasm-encoder 0.33.2", + "wasm-encoder", "wasm-metadata", - "wasmparser 0.113.3", + "wasmparser", "wit-parser", ] @@ -8037,8 +7982,7 @@ dependencies = [ [[package]] name = "witx" version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "log", diff --git a/Cargo.toml b/Cargo.toml index 943dce501..a615ef045 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -107,10 +107,14 @@ members = ["crates/*", "sdk/rust", "sdk/rust/macro"] [workspace.dependencies] tracing = { version = "0.1", features = ["log"] } -wasmtime-wasi = { version = "13.0.0", features = ["tokio"] } -wasi-common-preview1 = { version = "13.0.0", package = "wasi-common" } -wasmtime = { version = "13.0.0", features = ["component-model"] } -spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "5c91eb4fb5c5ae6d51b2d6a7f8a40f8f8b0af7ac" } +wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", features = [ + "tokio", +] } +wasi-common-preview1 = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", package = "wasi-common" } +wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", features = [ + "component-model", +] } +spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "d687583d1cf36104044a1f32d72cb3de587e55aa" } [[bin]] name = "spin" diff --git a/crates/core/src/store.rs b/crates/core/src/store.rs index 50fe5a164..ad32934e0 100644 --- a/crates/core/src/store.rs +++ b/crates/core/src/store.rs @@ -2,13 +2,15 @@ use anyhow::{anyhow, Result}; use std::{ io::{Read, Write}, path::{Path, PathBuf}, + sync::Mutex, time::{Duration, Instant}, }; use system_interface::io::ReadReady; use tokio::io::{AsyncRead, AsyncWrite}; use wasi_common_preview1 as wasi_preview1; use wasmtime_wasi as wasmtime_wasi_preview1; -use wasmtime_wasi::preview2 as wasi_preview2; +use wasmtime_wasi::preview2::{self as wasi_preview2, StdinStream, StdoutStream}; +use wasmtime_wasi_preview1::preview2::{HostInputStream, HostOutputStream}; use crate::{ host_component::{HostComponents, HostComponentsData}, @@ -172,10 +174,9 @@ impl StoreBuilder { ctx.set_stdin(Box::new(wasi_preview1::pipe::ReadPipe::new(r))) } WasiCtxBuilder::Preview2(ctx) => { - ctx.stdin( + ctx.stdin(MyStdinStream(Mutex::new(Some(Box::new( wasi_preview2::pipe::AsyncReadStream::new(r), - wasi_preview2::IsATTY::No, - ); + ))))); } }) } @@ -212,10 +213,9 @@ impl StoreBuilder { ctx.set_stdout(Box::new(wasi_preview1::pipe::WritePipe::new(w))) } WasiCtxBuilder::Preview2(ctx) => { - ctx.stdout( + ctx.stdout(MyStdoutStream(Mutex::new(Some(Box::new( wasi_preview2::pipe::AsyncWriteStream::new(1024 * 1024, w), - wasi_preview2::IsATTY::No, - ); + ))))); } }) } @@ -230,7 +230,7 @@ impl StoreBuilder { "`Store::stdout_buffered` only supported with WASI Preview 2" )), WasiCtxBuilder::Preview2(ctx) => { - ctx.stdout(buffer.writer(), wasi_preview2::IsATTY::No); + ctx.stdout(MyStdoutStream(Mutex::new(Some(Box::new(buffer.writer()))))); Ok(()) } })?; @@ -256,10 +256,9 @@ impl StoreBuilder { ctx.set_stderr(Box::new(wasi_preview1::pipe::WritePipe::new(w))) } WasiCtxBuilder::Preview2(ctx) => { - ctx.stderr( + ctx.stderr(MyStdoutStream(Mutex::new(Some(Box::new( wasi_preview2::pipe::AsyncWriteStream::new(1024 * 1024, w), - wasi_preview2::IsATTY::No, - ); + ))))); } }) } @@ -420,6 +419,38 @@ impl StoreBuilder { } } +struct MyStdinStream(Mutex>>); + +impl StdinStream for MyStdinStream { + fn stream(&self) -> Box { + self.0 + .lock() + .unwrap() + .take() + .expect("MyStdinStream::stream should only be called once") + } + + fn isatty(&self) -> bool { + false + } +} + +struct MyStdoutStream(Mutex>>); + +impl StdoutStream for MyStdoutStream { + fn stream(&self) -> Box { + self.0 + .lock() + .unwrap() + .take() + .expect("MyStdoutStream::stream should only be called once") + } + + fn isatty(&self) -> bool { + false + } +} + /// A builder of a `WasiCtx` for all versions of Wasi #[allow(clippy::large_enum_variant)] enum WasiCtxBuilder { @@ -439,10 +470,11 @@ impl From for WasiCtxBuilder { } impl WasiCtxBuilder { - fn build(self, table: &mut wasi_preview2::Table) -> anyhow::Result { + // TODO: remove `Result` and `table` + fn build(self, _table: &mut wasi_preview2::Table) -> anyhow::Result { match self { WasiCtxBuilder::Preview1(ctx) => Ok(Wasi::Preview1(ctx)), - WasiCtxBuilder::Preview2(mut b) => b.build(table).map(Wasi::Preview2), + WasiCtxBuilder::Preview2(mut b) => Ok(Wasi::Preview2(b.build())), } } } diff --git a/crates/key-value/src/host_component.rs b/crates/key-value/src/host_component.rs index 379ba78d0..99c6d9f32 100644 --- a/crates/key-value/src/host_component.rs +++ b/crates/key-value/src/host_component.rs @@ -1,4 +1,4 @@ -use crate::{KeyValueDispatch, StoreManager, KEY_VALUE_STORES_KEY}; +use crate::{KeyValueDispatch, LegacyDispatch, StoreManager, KEY_VALUE_STORES_KEY}; use anyhow::anyhow; use spin_app::{AppComponent, DynamicHostComponent}; use spin_core::HostComponent; @@ -102,3 +102,36 @@ impl DynamicHostComponent for KeyValueComponent { } } } + +pub struct LegacyKeyValueComponent(KeyValueComponent); + +impl LegacyKeyValueComponent { + pub fn new(new: KeyValueComponent) -> Self { + Self(new) + } +} + +impl HostComponent for LegacyKeyValueComponent { + type Data = LegacyDispatch; + + fn add_to_linker( + linker: &mut spin_core::Linker, + get: impl Fn(&mut spin_core::Data) -> &mut Self::Data + Send + Sync + Copy + 'static, + ) -> anyhow::Result<()> { + spin_world::spin_1::key_value::add_to_linker(linker, get) + } + + fn build_data(&self) -> Self::Data { + LegacyDispatch(KeyValueDispatch::new_with_capacity(self.0.capacity)) + } +} + +impl DynamicHostComponent for LegacyKeyValueComponent { + fn update_data(&self, data: &mut Self::Data, component: &AppComponent) -> anyhow::Result<()> { + self.0.update_data(&mut data.0, component) + } + + fn validate_app(&self, app: &spin_app::App) -> anyhow::Result<()> { + self.0.validate_app(app) + } +} diff --git a/crates/key-value/src/lib.rs b/crates/key-value/src/lib.rs index 9c47aa270..66fd75cf8 100644 --- a/crates/key-value/src/lib.rs +++ b/crates/key-value/src/lib.rs @@ -1,7 +1,7 @@ use anyhow::Result; use spin_app::MetadataKey; use spin_core::{async_trait, wasmtime::component::Resource}; -use spin_world::key_value; +use spin_world::key_value::{self, HostStore}; use std::{collections::HashSet, sync::Arc}; use table::Table; @@ -9,7 +9,7 @@ mod host_component; pub mod table; mod util; -pub use host_component::{manager, KeyValueComponent}; +pub use host_component::{manager, KeyValueComponent, LegacyKeyValueComponent}; pub use util::{CachingStoreManager, DelegatingStoreManager, EmptyStoreManager}; pub const KEY_VALUE_STORES_KEY: MetadataKey> = MetadataKey::new("key_value_stores"); @@ -173,3 +173,66 @@ pub fn log_error(err: impl std::fmt::Debug) -> Error { tracing::warn!("key-value error: {err:?}"); Error::Io(format!("{err:?}")) } + +use spin_world::spin_1::key_value::Error as LegacyError; + +pub struct LegacyDispatch(KeyValueDispatch); + +fn to_legacy_error(value: key_value::Error) -> LegacyError { + match value { + Error::StoreTableFull => LegacyError::StoreTableFull, + Error::NoSuchStore => LegacyError::NoSuchStore, + Error::AccessDenied => LegacyError::AccessDenied, + Error::InvalidStore => LegacyError::InvalidStore, + Error::NoSuchKey => LegacyError::NoSuchKey, + Error::Io(s) => LegacyError::Io(s), + } +} + +#[async_trait] +impl spin_world::spin_1::key_value::Host for LegacyDispatch { + async fn open(&mut self, name: String) -> Result> { + let result = self.0.open(name).await?; + Ok(result.map_err(to_legacy_error).map(|s| s.rep())) + } + + async fn get(&mut self, store: u32, key: String) -> Result, LegacyError>> { + let this = Resource::new_borrow(store); + let result = self.0.get(this, key).await?; + Ok(result.map_err(to_legacy_error)) + } + + async fn set( + &mut self, + store: u32, + key: String, + value: Vec, + ) -> Result> { + let this = Resource::new_borrow(store); + let result = self.0.set(this, key, value).await?; + Ok(result.map_err(to_legacy_error)) + } + + async fn delete(&mut self, store: u32, key: String) -> Result> { + let this = Resource::new_borrow(store); + let result = self.0.delete(this, key).await?; + Ok(result.map_err(to_legacy_error)) + } + + async fn exists(&mut self, store: u32, key: String) -> Result> { + let this = Resource::new_borrow(store); + let result = self.0.exists(this, key).await?; + Ok(result.map_err(to_legacy_error)) + } + + async fn get_keys(&mut self, store: u32) -> Result, LegacyError>> { + let this = Resource::new_borrow(store); + let result = self.0.get_keys(this).await?; + Ok(result.map_err(to_legacy_error)) + } + + async fn close(&mut self, store: u32) -> Result<()> { + let _: Resource = Resource::new_own(store); + Ok(()) + } +} diff --git a/crates/trigger/src/lib.rs b/crates/trigger/src/lib.rs index 125f31ecd..5fdc87cc7 100644 --- a/crates/trigger/src/lib.rs +++ b/crates/trigger/src/lib.rs @@ -128,6 +128,14 @@ impl TriggerExecutorBuilder { ) .await?, )?; + self.loader.add_dynamic_host_component( + &mut builder, + runtime_config::key_value::build_legacy_key_value_component( + &runtime_config, + &init_data.kv, + ) + .await?, + )?; self.loader.add_dynamic_host_component( &mut builder, runtime_config::sqlite::build_component(&runtime_config, &init_data.sqlite) diff --git a/crates/trigger/src/loader.rs b/crates/trigger/src/loader.rs index 50070e1a0..9148a6b63 100644 --- a/crates/trigger/src/loader.rs +++ b/crates/trigger/src/loader.rs @@ -139,7 +139,9 @@ fn adapt_old_worlds_to_new(component: &[u8]) -> anyhow::Result anyhow::Result Result { + let new = build_key_value_component(runtime_config, init_data).await?; + Ok(LegacyKeyValueComponent::new(new)) +} + // Holds deserialized options from a `[key_value_store.]` runtime config section. #[derive(Clone, Debug, Deserialize)] #[serde(rename_all = "snake_case", tag = "type")] diff --git a/crates/world/Cargo.toml b/crates/world/Cargo.toml index 02fa84745..3c51d5b24 100644 --- a/crates/world/Cargo.toml +++ b/crates/world/Cargo.toml @@ -5,4 +5,4 @@ authors = { workspace = true } edition = { workspace = true } [dependencies] -wasmtime = { workspace = true } \ No newline at end of file +wasmtime = { workspace = true } diff --git a/crates/world/src/lib.rs b/crates/world/src/lib.rs index 2181cbbc1..b44eb73ed 100644 --- a/crates/world/src/lib.rs +++ b/crates/world/src/lib.rs @@ -6,4 +6,5 @@ wasmtime::component::bindgen!({ async: true }); -pub use fermyon::spin::*; +pub use fermyon::spin as spin_1; +pub use fermyon::spin2_0_0::*; diff --git a/examples/spin-timer/Cargo.toml b/examples/spin-timer/Cargo.toml index 2a43e77b4..875b1a620 100644 --- a/examples/spin-timer/Cargo.toml +++ b/examples/spin-timer/Cargo.toml @@ -14,6 +14,8 @@ spin-core = { path = "../../crates/core" } spin-trigger = { path = "../../crates/trigger" } tokio = { version = "1.11", features = ["full"] } tokio-scoped = "0.2.0" -wasmtime = { version = "13.0.0", features = ["component-model"] } +wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "7777d1f49f609b334a9ad98a16832b4af4683836", features = [ + "component-model", +] } [workspace] From 5a91a46afad9e5fad8b7cf5747367eef6e47bbc8 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Mon, 9 Oct 2023 17:52:43 +0200 Subject: [PATCH 15/31] v1 and v2 Signed-off-by: Ryan Levick --- crates/config/src/host_component.rs | 2 +- crates/key-value/src/host_component.rs | 2 +- crates/key-value/src/lib.rs | 6 +-- crates/llm-local/src/lib.rs | 2 +- crates/llm-remote-http/src/lib.rs | 2 +- crates/llm/src/host_component.rs | 2 +- crates/llm/src/lib.rs | 2 +- crates/outbound-http/src/host_component.rs | 2 +- crates/outbound-http/src/lib.rs | 2 +- crates/outbound-mysql/src/lib.rs | 2 +- crates/outbound-pg/src/lib.rs | 2 +- crates/outbound-redis/src/lib.rs | 2 +- crates/redis/src/spin.rs | 2 +- crates/sqlite-inproc/src/lib.rs | 57 ++++++++++----------- crates/sqlite-libsql/src/lib.rs | 2 +- crates/sqlite/src/host_component.rs | 5 +- crates/sqlite/src/lib.rs | 34 ++++++------ crates/trigger-http/src/spin.rs | 2 +- crates/trigger/src/runtime_config/llm.rs | 2 +- crates/trigger/src/runtime_config/sqlite.rs | 2 +- crates/world/src/lib.rs | 4 +- wit/preview2/deps/spin@1.0.0/key-value.wit | 2 +- wit/preview2/reactor.wit | 2 +- 23 files changed, 70 insertions(+), 72 deletions(-) diff --git a/crates/config/src/host_component.rs b/crates/config/src/host_component.rs index 4a72d91b2..156a36aaa 100644 --- a/crates/config/src/host_component.rs +++ b/crates/config/src/host_component.rs @@ -4,7 +4,7 @@ use anyhow::Result; use once_cell::sync::OnceCell; use spin_app::{AppComponent, DynamicHostComponent}; use spin_core::{async_trait, HostComponent}; -use spin_world::config; +use spin_world::v2::config; use crate::{Error, Key, Provider, Resolver}; diff --git a/crates/key-value/src/host_component.rs b/crates/key-value/src/host_component.rs index 99c6d9f32..b06e95be1 100644 --- a/crates/key-value/src/host_component.rs +++ b/crates/key-value/src/host_component.rs @@ -118,7 +118,7 @@ impl HostComponent for LegacyKeyValueComponent { linker: &mut spin_core::Linker, get: impl Fn(&mut spin_core::Data) -> &mut Self::Data + Send + Sync + Copy + 'static, ) -> anyhow::Result<()> { - spin_world::spin_1::key_value::add_to_linker(linker, get) + spin_world::v1::key_value::add_to_linker(linker, get) } fn build_data(&self) -> Self::Data { diff --git a/crates/key-value/src/lib.rs b/crates/key-value/src/lib.rs index 66fd75cf8..a1b523d8a 100644 --- a/crates/key-value/src/lib.rs +++ b/crates/key-value/src/lib.rs @@ -1,7 +1,7 @@ use anyhow::Result; use spin_app::MetadataKey; use spin_core::{async_trait, wasmtime::component::Resource}; -use spin_world::key_value::{self, HostStore}; +use spin_world::v2::key_value::{self, HostStore}; use std::{collections::HashSet, sync::Arc}; use table::Table; @@ -174,7 +174,7 @@ pub fn log_error(err: impl std::fmt::Debug) -> Error { Error::Io(format!("{err:?}")) } -use spin_world::spin_1::key_value::Error as LegacyError; +use spin_world::v1::key_value::Error as LegacyError; pub struct LegacyDispatch(KeyValueDispatch); @@ -190,7 +190,7 @@ fn to_legacy_error(value: key_value::Error) -> LegacyError { } #[async_trait] -impl spin_world::spin_1::key_value::Host for LegacyDispatch { +impl spin_world::v1::key_value::Host for LegacyDispatch { async fn open(&mut self, name: String) -> Result> { let result = self.0.open(name).await?; Ok(result.map_err(to_legacy_error).map(|s| s.rep())) diff --git a/crates/llm-local/src/lib.rs b/crates/llm-local/src/lib.rs index aa30102e2..60e1b7c02 100644 --- a/crates/llm-local/src/lib.rs +++ b/crates/llm-local/src/lib.rs @@ -11,7 +11,7 @@ use llm::{ use rand::SeedableRng; use spin_core::async_trait; use spin_llm::{LlmEngine, MODEL_ALL_MINILM_L6_V2}; -use spin_world::llm::{self as wasi_llm}; +use spin_world::v2::llm::{self as wasi_llm}; use std::{ collections::hash_map::Entry, collections::HashMap, diff --git a/crates/llm-remote-http/src/lib.rs b/crates/llm-remote-http/src/lib.rs index 0cc12a3ca..15c29baf6 100644 --- a/crates/llm-remote-http/src/lib.rs +++ b/crates/llm-remote-http/src/lib.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use serde_json::json; use spin_core::async_trait; use spin_llm::LlmEngine; -use spin_world::llm::{self as wasi_llm}; +use spin_world::v2::llm::{self as wasi_llm}; #[derive(Clone)] pub struct RemoteHttpLlmEngine { diff --git a/crates/llm/src/host_component.rs b/crates/llm/src/host_component.rs index 6696f79ea..2ccdc12c7 100644 --- a/crates/llm/src/host_component.rs +++ b/crates/llm/src/host_component.rs @@ -25,7 +25,7 @@ impl HostComponent for LlmComponent { linker: &mut spin_core::Linker, get: impl Fn(&mut spin_core::Data) -> &mut Self::Data + Send + Sync + Copy + 'static, ) -> anyhow::Result<()> { - spin_world::llm::add_to_linker(linker, get) + spin_world::v2::llm::add_to_linker(linker, get) } fn build_data(&self) -> Self::Data { diff --git a/crates/llm/src/lib.rs b/crates/llm/src/lib.rs index c948f3a95..45ff76e6f 100644 --- a/crates/llm/src/lib.rs +++ b/crates/llm/src/lib.rs @@ -2,7 +2,7 @@ pub mod host_component; use spin_app::MetadataKey; use spin_core::async_trait; -use spin_world::llm::{self as wasi_llm}; +use spin_world::v2::llm::{self as wasi_llm}; use std::collections::HashSet; pub use crate::host_component::LlmComponent; diff --git a/crates/outbound-http/src/host_component.rs b/crates/outbound-http/src/host_component.rs index 61c262f3b..c39149775 100644 --- a/crates/outbound-http/src/host_component.rs +++ b/crates/outbound-http/src/host_component.rs @@ -2,7 +2,7 @@ use anyhow::Result; use spin_app::DynamicHostComponent; use spin_core::{Data, HostComponent, Linker}; -use spin_world::http; +use spin_world::v2::http; use crate::{allowed_http_hosts::parse_allowed_http_hosts, OutboundHttp}; diff --git a/crates/outbound-http/src/lib.rs b/crates/outbound-http/src/lib.rs index a7e4ead42..4ffb4ac63 100644 --- a/crates/outbound-http/src/lib.rs +++ b/crates/outbound-http/src/lib.rs @@ -6,7 +6,7 @@ use http::HeaderMap; use reqwest::{Client, Url}; use spin_app::MetadataKey; use spin_core::async_trait; -use spin_world::{ +use spin_world::v2::{ http as outbound_http, http_types::{Headers, HttpError, Method, Request, Response}, }; diff --git a/crates/outbound-mysql/src/lib.rs b/crates/outbound-mysql/src/lib.rs index 80f800edc..899749350 100644 --- a/crates/outbound-mysql/src/lib.rs +++ b/crates/outbound-mysql/src/lib.rs @@ -2,7 +2,7 @@ use anyhow::Result; pub use mysql::add_to_linker; use mysql_async::{consts::ColumnType, from_value_opt, prelude::*, Opts, OptsBuilder, SslOpts}; use spin_core::{async_trait, HostComponent}; -use spin_world::{ +use spin_world::v2::{ mysql::{self, MysqlError}, rdbms_types::{Column, DbDataType, DbValue, ParameterValue, RowSet}, }; diff --git a/crates/outbound-pg/src/lib.rs b/crates/outbound-pg/src/lib.rs index 45d805e4a..175647bf5 100644 --- a/crates/outbound-pg/src/lib.rs +++ b/crates/outbound-pg/src/lib.rs @@ -2,7 +2,7 @@ use anyhow::{anyhow, Result}; use native_tls::TlsConnector; use postgres_native_tls::MakeTlsConnector; use spin_core::{async_trait, HostComponent}; -use spin_world::{ +use spin_world::v2::{ postgres::{self, PgError}, rdbms_types::{Column, DbDataType, DbValue, ParameterValue, RowSet}, }; diff --git a/crates/outbound-redis/src/lib.rs b/crates/outbound-redis/src/lib.rs index 27e7b9304..e986bf13a 100644 --- a/crates/outbound-redis/src/lib.rs +++ b/crates/outbound-redis/src/lib.rs @@ -5,7 +5,7 @@ use std::collections::{hash_map::Entry, HashMap}; use anyhow::Result; use redis::{aio::Connection, AsyncCommands, FromRedisValue, Value}; use spin_core::async_trait; -use spin_world::{ +use spin_world::v2::{ redis as outbound_redis, redis_types::{Error, RedisParameter, RedisResult}, }; diff --git a/crates/redis/src/spin.rs b/crates/redis/src/spin.rs index fbeeb456c..acccb1e86 100644 --- a/crates/redis/src/spin.rs +++ b/crates/redis/src/spin.rs @@ -2,7 +2,7 @@ use anyhow::{anyhow, Result}; use async_trait::async_trait; use spin_core::Instance; use spin_trigger::{EitherInstance, TriggerAppEngine}; -use spin_world::redis_types::{Error, Payload}; +use spin_world::v2::redis_types::{Error, Payload}; use crate::{RedisExecutor, RedisTrigger, Store}; diff --git a/crates/sqlite-inproc/src/lib.rs b/crates/sqlite-inproc/src/lib.rs index aca57c1b0..cd79f580e 100644 --- a/crates/sqlite-inproc/src/lib.rs +++ b/crates/sqlite-inproc/src/lib.rs @@ -7,6 +7,7 @@ use anyhow::Context; use async_trait::async_trait; use once_cell::sync::OnceCell; use spin_sqlite::Connection; +use spin_world::v2::sqlite; #[derive(Debug, Clone)] pub enum InProcDatabaseLocation { @@ -21,7 +22,7 @@ pub struct InProcConnection { } impl InProcConnection { - pub fn new(location: InProcDatabaseLocation) -> Result { + pub fn new(location: InProcDatabaseLocation) -> Result { let connection = OnceCell::new(); Ok(Self { location, @@ -29,16 +30,14 @@ impl InProcConnection { }) } - pub fn db_connection( - &self, - ) -> Result>, spin_world::sqlite::Error> { + pub fn db_connection(&self) -> Result>, sqlite::Error> { self.connection .get_or_try_init(|| { match &self.location { InProcDatabaseLocation::InMemory => rusqlite::Connection::open_in_memory(), InProcDatabaseLocation::Path(path) => rusqlite::Connection::open(path), } - .map_err(|e| spin_world::sqlite::Error::Io(e.to_string())) + .map_err(|e| sqlite::Error::Io(e.to_string())) .map(|c| Arc::new(Mutex::new(c))) }) .cloned() @@ -50,15 +49,15 @@ impl Connection for InProcConnection { async fn query( &self, query: &str, - parameters: Vec, - ) -> Result { + parameters: Vec, + ) -> Result { let connection = self.db_connection()?; let query = query.to_owned(); // Tell the tokio runtime that we're going to block while making the query tokio::task::spawn_blocking(move || execute_query(&connection, &query, parameters)) .await .context("internal runtime error") - .map_err(|e| spin_world::sqlite::Error::Io(e.to_string()))? + .map_err(|e| sqlite::Error::Io(e.to_string()))? } async fn execute_batch(&self, statements: &str) -> anyhow::Result<()> { @@ -78,12 +77,12 @@ impl Connection for InProcConnection { fn execute_query( connection: &Mutex, query: &str, - parameters: Vec, -) -> Result { + parameters: Vec, +) -> Result { let conn = connection.lock().unwrap(); let mut statement = conn .prepare_cached(query) - .map_err(|e| spin_world::sqlite::Error::Io(e.to_string()))?; + .map_err(|e| sqlite::Error::Io(e.to_string()))?; let columns = statement .column_names() .into_iter() @@ -102,42 +101,42 @@ fn execute_query( let value = value?.0; values.push(value); } - Ok(spin_world::sqlite::RowResult { values }) + Ok(sqlite::RowResult { values }) }, ) - .map_err(|e| spin_world::sqlite::Error::Io(e.to_string()))?; + .map_err(|e| sqlite::Error::Io(e.to_string()))?; let rows = rows .into_iter() - .map(|r| r.map_err(|e| spin_world::sqlite::Error::Io(e.to_string()))) - .collect::>()?; - Ok(spin_world::sqlite::QueryResult { columns, rows }) + .map(|r| r.map_err(|e| sqlite::Error::Io(e.to_string()))) + .collect::>()?; + Ok(sqlite::QueryResult { columns, rows }) } fn convert_data( - arguments: impl Iterator, + arguments: impl Iterator, ) -> impl Iterator { arguments.map(|a| match a { - spin_world::sqlite::Value::Null => rusqlite::types::Value::Null, - spin_world::sqlite::Value::Integer(i) => rusqlite::types::Value::Integer(i), - spin_world::sqlite::Value::Real(r) => rusqlite::types::Value::Real(r), - spin_world::sqlite::Value::Text(t) => rusqlite::types::Value::Text(t), - spin_world::sqlite::Value::Blob(b) => rusqlite::types::Value::Blob(b), + sqlite::Value::Null => rusqlite::types::Value::Null, + sqlite::Value::Integer(i) => rusqlite::types::Value::Integer(i), + sqlite::Value::Real(r) => rusqlite::types::Value::Real(r), + sqlite::Value::Text(t) => rusqlite::types::Value::Text(t), + sqlite::Value::Blob(b) => rusqlite::types::Value::Blob(b), }) } -// A wrapper around spin_world::sqlite::Value so that we can convert from rusqlite ValueRef -struct ValueWrapper(spin_world::sqlite::Value); +// A wrapper around sqlite::Value so that we can convert from rusqlite ValueRef +struct ValueWrapper(sqlite::Value); impl rusqlite::types::FromSql for ValueWrapper { fn column_result(value: rusqlite::types::ValueRef<'_>) -> rusqlite::types::FromSqlResult { let value = match value { - rusqlite::types::ValueRef::Null => spin_world::sqlite::Value::Null, - rusqlite::types::ValueRef::Integer(i) => spin_world::sqlite::Value::Integer(i), - rusqlite::types::ValueRef::Real(f) => spin_world::sqlite::Value::Real(f), + rusqlite::types::ValueRef::Null => sqlite::Value::Null, + rusqlite::types::ValueRef::Integer(i) => sqlite::Value::Integer(i), + rusqlite::types::ValueRef::Real(f) => sqlite::Value::Real(f), rusqlite::types::ValueRef::Text(t) => { - spin_world::sqlite::Value::Text(String::from_utf8(t.to_vec()).unwrap()) + sqlite::Value::Text(String::from_utf8(t.to_vec()).unwrap()) } - rusqlite::types::ValueRef::Blob(b) => spin_world::sqlite::Value::Blob(b.to_vec()), + rusqlite::types::ValueRef::Blob(b) => sqlite::Value::Blob(b.to_vec()), }; Ok(ValueWrapper(value)) } diff --git a/crates/sqlite-libsql/src/lib.rs b/crates/sqlite-libsql/src/lib.rs index 76539a6a2..cc056bc3e 100644 --- a/crates/sqlite-libsql/src/lib.rs +++ b/crates/sqlite-libsql/src/lib.rs @@ -1,6 +1,6 @@ mod split; -use spin_world::sqlite::{self, RowResult}; +use spin_world::v2::sqlite::{self, RowResult}; #[derive(Clone)] pub struct LibsqlClient { diff --git a/crates/sqlite/src/host_component.rs b/crates/sqlite/src/host_component.rs index 2bb3cd5dd..e05f1e047 100644 --- a/crates/sqlite/src/host_component.rs +++ b/crates/sqlite/src/host_component.rs @@ -4,7 +4,7 @@ use crate::{ConnectionsStore, SqliteDispatch, DATABASES_KEY}; use anyhow::anyhow; use spin_app::{AppComponent, DynamicHostComponent}; use spin_core::HostComponent; -use spin_world::sqlite; +use spin_world::v2::sqlite; type InitConnectionsStore = dyn (Fn(&AppComponent) -> Arc) + Sync + Send; @@ -44,8 +44,7 @@ impl HostComponent for SqliteComponent { async fn get_connection( &self, _database: &str, - ) -> Result>, spin_world::sqlite::Error> - { + ) -> Result>, sqlite::Error> { debug_assert!(false, "`Noop` `ConnectionsStore` was called"); Ok(None) } diff --git a/crates/sqlite/src/lib.rs b/crates/sqlite/src/lib.rs index 536018284..c98065eac 100644 --- a/crates/sqlite/src/lib.rs +++ b/crates/sqlite/src/lib.rs @@ -3,6 +3,7 @@ mod host_component; use spin_app::{async_trait, MetadataKey}; use spin_core::wasmtime::component::Resource; use spin_key_value::table; +use spin_world::v2::sqlite; use std::{collections::HashSet, sync::Arc}; pub use host_component::SqliteComponent; @@ -16,7 +17,7 @@ pub trait ConnectionsStore: Send + Sync { async fn get_connection( &self, database: &str, - ) -> Result>, spin_world::sqlite::Error>; + ) -> Result>, sqlite::Error>; fn has_connection_for(&self, database: &str) -> bool; } @@ -27,8 +28,8 @@ pub trait Connection: Send + Sync { async fn query( &self, query: &str, - parameters: Vec, - ) -> Result; + parameters: Vec, + ) -> Result; async fn execute_batch(&self, statements: &str) -> anyhow::Result<()>; } @@ -61,35 +62,34 @@ impl SqliteDispatch { fn get_connection( &self, - connection: Resource, - ) -> Result<&Arc, spin_world::sqlite::Error> { + connection: Resource, + ) -> Result<&Arc, sqlite::Error> { self.connections .get(connection.rep()) - .ok_or(spin_world::sqlite::Error::InvalidConnection) + .ok_or(sqlite::Error::InvalidConnection) } } #[async_trait] -impl spin_world::sqlite::Host for SqliteDispatch {} +impl sqlite::Host for SqliteDispatch {} #[async_trait] -impl spin_world::sqlite::HostConnection for SqliteDispatch { +impl sqlite::HostConnection for SqliteDispatch { async fn open( &mut self, database: String, - ) -> anyhow::Result, spin_world::sqlite::Error>> - { + ) -> anyhow::Result, sqlite::Error>> { if !self.allowed_databases.contains(&database) { - return Ok(Err(spin_world::sqlite::Error::AccessDenied)); + return Ok(Err(sqlite::Error::AccessDenied)); } Ok(self .connections_store .get_connection(&database) .await - .and_then(|conn| conn.ok_or(spin_world::sqlite::Error::NoSuchDatabase)) + .and_then(|conn| conn.ok_or(sqlite::Error::NoSuchDatabase)) .and_then(|conn| { self.connections.push(conn).map_err(|()| { - spin_world::sqlite::Error::Io("too many connections opened".to_string()) + sqlite::Error::Io("too many connections opened".to_string()) }) }) .map(Resource::new_own)) @@ -97,10 +97,10 @@ impl spin_world::sqlite::HostConnection for SqliteDispatch { async fn execute( &mut self, - connection: Resource, + connection: Resource, query: String, - parameters: Vec, - ) -> anyhow::Result> { + parameters: Vec, + ) -> anyhow::Result> { let conn = match self.get_connection(connection) { Ok(c) => c, Err(err) => return Ok(Err(err)), @@ -108,7 +108,7 @@ impl spin_world::sqlite::HostConnection for SqliteDispatch { Ok(conn.query(&query, parameters).await) } - fn drop(&mut self, connection: Resource) -> anyhow::Result<()> { + fn drop(&mut self, connection: Resource) -> anyhow::Result<()> { let _ = self.connections.remove(connection.rep()); Ok(()) } diff --git a/crates/trigger-http/src/spin.rs b/crates/trigger-http/src/spin.rs index abb383ecc..c6b73b3cd 100644 --- a/crates/trigger-http/src/spin.rs +++ b/crates/trigger-http/src/spin.rs @@ -7,7 +7,7 @@ use hyper::{Body, Request, Response}; use outbound_http::OutboundHttpComponent; use spin_core::Instance; use spin_trigger::{EitherInstance, TriggerAppEngine}; -use spin_world::http_types; +use spin_world::v2::http_types; use std::sync::Arc; #[derive(Clone)] diff --git a/crates/trigger/src/runtime_config/llm.rs b/crates/trigger/src/runtime_config/llm.rs index cef351a81..af5f2a362 100644 --- a/crates/trigger/src/runtime_config/llm.rs +++ b/crates/trigger/src/runtime_config/llm.rs @@ -1,7 +1,7 @@ use async_trait::async_trait; use spin_llm::LlmEngine; use spin_llm_remote_http::RemoteHttpLlmEngine; -use spin_world::llm as wasi_llm; +use spin_world::v2::llm as wasi_llm; use url::Url; #[derive(Default)] diff --git a/crates/trigger/src/runtime_config/sqlite.rs b/crates/trigger/src/runtime_config/sqlite.rs index 676ce676d..2250ab769 100644 --- a/crates/trigger/src/runtime_config/sqlite.rs +++ b/crates/trigger/src/runtime_config/sqlite.rs @@ -31,7 +31,7 @@ impl ConnectionsStore for SimpleConnectionsStore { async fn get_connection( &self, database: &str, - ) -> Result>, spin_world::sqlite::Error> { + ) -> Result>, spin_world::v2::sqlite::Error> { Ok(self.0.get(database).cloned()) } diff --git a/crates/world/src/lib.rs b/crates/world/src/lib.rs index b44eb73ed..e696350e1 100644 --- a/crates/world/src/lib.rs +++ b/crates/world/src/lib.rs @@ -6,5 +6,5 @@ wasmtime::component::bindgen!({ async: true }); -pub use fermyon::spin as spin_1; -pub use fermyon::spin2_0_0::*; +pub use fermyon::spin1_0_0 as v1; +pub use fermyon::spin2_0_0 as v2; diff --git a/wit/preview2/deps/spin@1.0.0/key-value.wit b/wit/preview2/deps/spin@1.0.0/key-value.wit index 24e0f1efb..5bc75d965 100644 --- a/wit/preview2/deps/spin@1.0.0/key-value.wit +++ b/wit/preview2/deps/spin@1.0.0/key-value.wit @@ -1,4 +1,4 @@ -package fermyon:spin +package fermyon:spin@1.0.0 interface key-value { // A handle to an open key-value store diff --git a/wit/preview2/reactor.wit b/wit/preview2/reactor.wit index 345cbb895..6731fe002 100644 --- a/wit/preview2/reactor.wit +++ b/wit/preview2/reactor.wit @@ -7,7 +7,7 @@ world reactor { import sqlite import redis import key-value - import fermyon:spin/key-value + import fermyon:spin/key-value@1.0.0 import http import llm export inbound-http From 3dcb78bada8037d3215d6f173b99c12a183da8b6 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 11:10:32 +0200 Subject: [PATCH 16/31] Fix up SDK Signed-off-by: Ryan Levick --- Cargo.lock | 31 ++++--------- crates/config/src/host_component.rs | 2 +- crates/core/tests/core-wasi-test/Cargo.toml | 2 +- crates/redis/tests/rust/Cargo.lock | 45 +++++++------------ crates/redis/tests/rust/Cargo.toml | 2 +- crates/redis/tests/rust/src/lib.rs | 4 +- .../benches/spin-http-benchmark/Cargo.toml | 2 +- .../benches/spin-http-benchmark/src/lib.rs | 4 +- .../tests/rust-http-test/Cargo.toml | 2 +- .../tests/rust-http-test/src/lib.rs | 4 +- examples/spin-timer/app-example/Cargo.lock | 25 +++-------- examples/spin-timer/app-example/Cargo.toml | 2 +- sdk/rust/Cargo.toml | 2 +- sdk/rust/src/key_value.rs | 2 +- sdk/rust/src/lib.rs | 14 +++--- sdk/rust/src/llm.rs | 4 +- sdk/rust/src/mysql.rs | 4 +- sdk/rust/src/outbound_http.rs | 6 +-- sdk/rust/src/pg.rs | 4 +- sdk/rust/src/sqlite.rs | 2 +- tests/http/headers-env-routes-test/Cargo.lock | 25 +++-------- tests/http/simple-spin-rust/Cargo.lock | 25 +++-------- wit/preview2/{ => deps/spin@1.0.0}/config.wit | 0 wit/preview2/reactor.wit | 8 ++-- 24 files changed, 73 insertions(+), 148 deletions(-) rename wit/preview2/{ => deps/spin@1.0.0}/config.wit (100%) diff --git a/Cargo.lock b/Cargo.lock index fcb04c730..ca4d048a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -791,7 +791,7 @@ dependencies = [ "syn 2.0.29", "wit-bindgen-core 0.11.0", "wit-bindgen-rust 0.11.0", - "wit-bindgen-rust-lib 0.11.0", + "wit-bindgen-rust-lib", "wit-component", ] @@ -7836,8 +7836,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro 0.12.0", @@ -7857,8 +7856,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -7875,21 +7873,19 @@ dependencies = [ "heck 0.4.1", "wasm-metadata", "wit-bindgen-core 0.11.0", - "wit-bindgen-rust-lib 0.11.0", + "wit-bindgen-rust-lib", "wit-component", ] [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "heck 0.4.1", "wasm-metadata", "wit-bindgen-core 0.12.0", - "wit-bindgen-rust-lib 0.12.0", "wit-component", ] @@ -7903,16 +7899,6 @@ dependencies = [ "wit-bindgen-core 0.11.0", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" -dependencies = [ - "heck 0.4.1", - "wit-bindgen-core 0.12.0", -] - [[package]] name = "wit-bindgen-rust-macro" version = "0.11.0" @@ -7924,22 +7910,21 @@ dependencies = [ "syn 2.0.29", "wit-bindgen-core 0.11.0", "wit-bindgen-rust 0.11.0", - "wit-bindgen-rust-lib 0.11.0", + "wit-bindgen-rust-lib", "wit-component", ] [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", + "quote", "syn 2.0.29", "wit-bindgen-core 0.12.0", "wit-bindgen-rust 0.12.0", - "wit-bindgen-rust-lib 0.12.0", "wit-component", ] diff --git a/crates/config/src/host_component.rs b/crates/config/src/host_component.rs index 156a36aaa..3c2936454 100644 --- a/crates/config/src/host_component.rs +++ b/crates/config/src/host_component.rs @@ -4,7 +4,7 @@ use anyhow::Result; use once_cell::sync::OnceCell; use spin_app::{AppComponent, DynamicHostComponent}; use spin_core::{async_trait, HostComponent}; -use spin_world::v2::config; +use spin_world::v1::config; use crate::{Error, Key, Provider, Resolver}; diff --git a/crates/core/tests/core-wasi-test/Cargo.toml b/crates/core/tests/core-wasi-test/Cargo.toml index 5be599ae5..0d7515af4 100644 --- a/crates/core/tests/core-wasi-test/Cargo.toml +++ b/crates/core/tests/core-wasi-test/Cargo.toml @@ -7,6 +7,6 @@ edition = "2021" debug = true [dependencies] -wit-bindgen = "0.12" +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } [workspace] diff --git a/crates/redis/tests/rust/Cargo.lock b/crates/redis/tests/rust/Cargo.lock index ee6b49a93..be4135c9c 100644 --- a/crates/redis/tests/rust/Cargo.lock +++ b/crates/redis/tests/rust/Cargo.lock @@ -288,18 +288,18 @@ checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "wasm-encoder" -version = "0.33.1" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39de0723a53d3c8f54bed106cfbc0d06b3e4d945c5c5022115a61e3b29183ae" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.10.5" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fab01638cbecc57afec7b53ce0e28620b44d7ae1dea53120c96dd08486c07ce" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.113.1" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a128cea7b8516703ab41b10a0b1aa9ba18d0454cd3792341489947ddeee268db" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -323,8 +323,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -333,8 +332,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -344,47 +342,34 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", + "quote", "syn", "wit-bindgen-core", "wit-bindgen-rust", - "wit-bindgen-rust-lib", "wit-component", ] [[package]] name = "wit-component" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af872ef43ecb73cc49c7bd2dd19ef9117168e183c78cf70000dca0e14b6a5473" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -400,9 +385,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.11.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dcd022610436a1873e60bfdd9b407763f2404adf7d1cb57912c7ae4059e57a5" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", diff --git a/crates/redis/tests/rust/Cargo.toml b/crates/redis/tests/rust/Cargo.toml index bd96bb0e0..4bb0f6845 100644 --- a/crates/redis/tests/rust/Cargo.toml +++ b/crates/redis/tests/rust/Cargo.toml @@ -8,6 +8,6 @@ authors = ["Radu Matei "] crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.12" +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } [workspace] diff --git a/crates/redis/tests/rust/src/lib.rs b/crates/redis/tests/rust/src/lib.rs index 15ced0c09..cdb473ecb 100644 --- a/crates/redis/tests/rust/src/lib.rs +++ b/crates/redis/tests/rust/src/lib.rs @@ -4,10 +4,10 @@ wit_bindgen::generate!({ world: "redis-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-redis": SpinRedis, + "fermyon:spin/inbound-redis@2.0.0": SpinRedis, } }); -use exports::fermyon::spin::inbound_redis::{self, Error, Payload}; +use exports::fermyon::spin2_0_0::inbound_redis::{self, Error, Payload}; struct SpinRedis; diff --git a/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml b/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml index dc1fa3c0f..878455bca 100644 --- a/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml +++ b/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.12" +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } url = "2.4.1" [workspace] diff --git a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs index 4c37e3d27..bbba8b0d9 100644 --- a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs +++ b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs @@ -2,11 +2,11 @@ wit_bindgen::generate!({ world: "http-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-http": SpinHttp, + "fermyon:spin/inbound-http@2.0.0": SpinHttp, } }); -use exports::fermyon::spin::inbound_http; +use exports::fermyon::spin2_0_0::inbound_http; struct SpinHttp; diff --git a/crates/trigger-http/tests/rust-http-test/Cargo.toml b/crates/trigger-http/tests/rust-http-test/Cargo.toml index eed23092c..e731155fd 100644 --- a/crates/trigger-http/tests/rust-http-test/Cargo.toml +++ b/crates/trigger-http/tests/rust-http-test/Cargo.toml @@ -8,6 +8,6 @@ authors = ["Radu Matei "] crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.12" +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } [workspace] diff --git a/crates/trigger-http/tests/rust-http-test/src/lib.rs b/crates/trigger-http/tests/rust-http-test/src/lib.rs index 5d0e21b7e..be872ad6b 100644 --- a/crates/trigger-http/tests/rust-http-test/src/lib.rs +++ b/crates/trigger-http/tests/rust-http-test/src/lib.rs @@ -2,11 +2,11 @@ wit_bindgen::generate!({ world: "http-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-http": SpinHttp, + "fermyon:spin/inbound-http@2.0.0": SpinHttp, } }); -use exports::fermyon::spin::inbound_http::{self, Request, Response}; +use exports::fermyon::spin2_0_0::inbound_http::{self, Request, Response}; struct SpinHttp; diff --git a/examples/spin-timer/app-example/Cargo.lock b/examples/spin-timer/app-example/Cargo.lock index f33f14edb..f02be2cf6 100644 --- a/examples/spin-timer/app-example/Cargo.lock +++ b/examples/spin-timer/app-example/Cargo.lock @@ -332,8 +332,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -342,8 +341,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -353,39 +351,26 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", + "quote", "syn", "wit-bindgen-core", "wit-bindgen-rust", - "wit-bindgen-rust-lib", "wit-component", ] diff --git a/examples/spin-timer/app-example/Cargo.toml b/examples/spin-timer/app-example/Cargo.toml index 42968671a..9277a4659 100644 --- a/examples/spin-timer/app-example/Cargo.toml +++ b/examples/spin-timer/app-example/Cargo.toml @@ -9,6 +9,6 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -wit-bindgen = "0.12" +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } [workspace] diff --git a/sdk/rust/Cargo.toml b/sdk/rust/Cargo.toml index 32a95b847..102fe467d 100644 --- a/sdk/rust/Cargo.toml +++ b/sdk/rust/Cargo.toml @@ -15,7 +15,7 @@ form_urlencoded = "1.0" http_types = { package = "http", version = "0.2" } spin-macro = { path = "macro" } thiserror = "1.0.37" -wit-bindgen = "0.12" +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } routefinder = "0.5.3" serde_json = { version = "1.0.96", optional = true } serde = { version = "1.0.163", optional = true } diff --git a/sdk/rust/src/key_value.rs b/sdk/rust/src/key_value.rs index 19a2a3e62..5236d3fab 100644 --- a/sdk/rust/src/key_value.rs +++ b/sdk/rust/src/key_value.rs @@ -4,7 +4,7 @@ //! ways (e.g. via an in-memory table, a local file, or a remote database). Details such as consistency model and //! durability will depend on the implementation and may vary from one to store to the next. -use super::wit::fermyon::spin::key_value; +use super::wit::v2::key_value; #[cfg(feature = "json")] use serde::{de::DeserializeOwned, Serialize}; diff --git a/sdk/rust/src/lib.rs b/sdk/rust/src/lib.rs index f867a56f0..bb20ae942 100644 --- a/sdk/rust/src/lib.rs +++ b/sdk/rust/src/lib.rs @@ -27,6 +27,8 @@ pub mod wit { world: "platform", path: "../../wit/preview2", }); + pub use fermyon::spin1_0_0 as v1; + pub use fermyon::spin2_0_0 as v2; } /// Needed by the export macro @@ -84,14 +86,12 @@ pub mod http { pub mod redis { use std::hash::{Hash, Hasher}; - pub use super::wit::fermyon::spin::redis::{ - del, execute, get, incr, publish, sadd, set, smembers, srem, - }; - pub use super::wit::fermyon::spin::redis_types::*; + pub use super::wit::v2::redis::{del, execute, get, incr, publish, sadd, set, smembers, srem}; + pub use super::wit::v2::redis_types::*; impl PartialEq for RedisResult { fn eq(&self, other: &Self) -> bool { - use super::wit::fermyon::spin::redis_types::RedisResult::*; + use super::wit::v2::redis_types::RedisResult::*; match (self, other) { (Nil, Nil) => true, (Status(a), Status(b)) => a == b, @@ -106,7 +106,7 @@ pub mod redis { impl Hash for RedisResult { fn hash(&self, state: &mut H) { - use super::wit::fermyon::spin::redis_types::RedisResult::*; + use super::wit::v2::redis_types::RedisResult::*; match self { Nil => (), @@ -128,7 +128,7 @@ pub mod mysql; #[allow(missing_docs)] pub mod config { /// Exports the generated Spin config items. - pub use super::wit::fermyon::spin::config::{get_config as get, Error}; + pub use super::wit::v1::config::{get_config as get, Error}; } #[doc(hidden)] diff --git a/sdk/rust/src/llm.rs b/sdk/rust/src/llm.rs index 9bd35d3bf..2016e4de0 100644 --- a/sdk/rust/src/llm.rs +++ b/sdk/rust/src/llm.rs @@ -1,6 +1,6 @@ -use crate::wit::fermyon::spin::llm; +use crate::wit::v2::llm; -pub use crate::wit::fermyon::spin::llm::{ +pub use crate::wit::v2::llm::{ EmbeddingsResult, EmbeddingsUsage, Error, InferencingParams, InferencingResult, InferencingUsage, }; diff --git a/sdk/rust/src/mysql.rs b/sdk/rust/src/mysql.rs index f77ee35c8..81d2baaa0 100644 --- a/sdk/rust/src/mysql.rs +++ b/sdk/rust/src/mysql.rs @@ -18,8 +18,8 @@ //! | `String` | str(string) | VARCHAR, CHAR, TEXT | //! | `Vec` | binary(list\) | VARBINARY, BINARY, BLOB | -pub use super::wit::fermyon::spin::mysql::{execute, query, MysqlError}; -pub use super::wit::fermyon::spin::rdbms_types::*; +pub use super::wit::v2::mysql::{execute, query, MysqlError}; +pub use super::wit::v2::rdbms_types::*; /// A MySQL error #[derive(Debug, thiserror::Error)] diff --git a/sdk/rust/src/outbound_http.rs b/sdk/rust/src/outbound_http.rs index 4c5ffac1a..347c28b58 100644 --- a/sdk/rust/src/outbound_http.rs +++ b/sdk/rust/src/outbound_http.rs @@ -2,11 +2,11 @@ use http_types::{header::HeaderName, HeaderValue}; use super::http::{Request, Response}; -use super::wit::fermyon::spin::http::{self as spin_http}; -use super::wit::fermyon::spin::http_types as spin_http_types; +use super::wit::v2::http::{self as spin_http}; +use super::wit::v2::http_types as spin_http_types; /// Error type returned by [`send_request`][crate::outbound_http::send_request] -pub use super::wit::fermyon::spin::http_types::HttpError as OutboundHttpError; +pub use super::wit::v2::http_types::HttpError as OutboundHttpError; type Result = std::result::Result; diff --git a/sdk/rust/src/pg.rs b/sdk/rust/src/pg.rs index 26406833b..841761b62 100644 --- a/sdk/rust/src/pg.rs +++ b/sdk/rust/src/pg.rs @@ -13,8 +13,8 @@ //! | `String` | str(string) | VARCHAR, CHAR(N), TEXT | //! | `Vec` | binary(list\) | BYTEA | -pub use super::wit::fermyon::spin::postgres::{execute, query, PgError}; -pub use super::wit::fermyon::spin::rdbms_types::*; +pub use super::wit::v2::postgres::{execute, query, PgError}; +pub use super::wit::v2::rdbms_types::*; /// A pg error #[derive(Debug, thiserror::Error)] diff --git a/sdk/rust/src/sqlite.rs b/sdk/rust/src/sqlite.rs index f466e3101..f8acf28f0 100644 --- a/sdk/rust/src/sqlite.rs +++ b/sdk/rust/src/sqlite.rs @@ -1,4 +1,4 @@ -use super::wit::fermyon::spin::sqlite; +use super::wit::v2::sqlite; /// Represents a store in which key value tuples may be placed // TODO: use `#[doc(inline)]` as soon as wit-bindgen#688 is merged diff --git a/tests/http/headers-env-routes-test/Cargo.lock b/tests/http/headers-env-routes-test/Cargo.lock index 3ff927856..6bb1a70af 100644 --- a/tests/http/headers-env-routes-test/Cargo.lock +++ b/tests/http/headers-env-routes-test/Cargo.lock @@ -448,8 +448,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -458,8 +457,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -469,39 +467,26 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", + "quote", "syn 2.0.37", "wit-bindgen-core", "wit-bindgen-rust", - "wit-bindgen-rust-lib", "wit-component", ] diff --git a/tests/http/simple-spin-rust/Cargo.lock b/tests/http/simple-spin-rust/Cargo.lock index c10b75288..5c69cb409 100644 --- a/tests/http/simple-spin-rust/Cargo.lock +++ b/tests/http/simple-spin-rust/Cargo.lock @@ -456,8 +456,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f7c5d6f59ae013fc4c013c76eab667844a46e86b51987acb71b1e32953211a" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -466,8 +465,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0371c47784e7559efb422f74473e395b49f7101725584e2673657e0b4fc104" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -477,39 +475,26 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeab5a09a85b1641690922ce05d79d868a2f2e78e9415a5302f58b9846fab8f1" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13c89c9c1a93e164318745841026f63f889376f38664f86a7f678930280e728" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70c97e09751a9a95a592bd8ef84e953e5cdce6ebbfdb35ceefa5cc511da3b71" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", + "quote", "syn 2.0.37", "wit-bindgen-core", "wit-bindgen-rust", - "wit-bindgen-rust-lib", "wit-component", ] diff --git a/wit/preview2/config.wit b/wit/preview2/deps/spin@1.0.0/config.wit similarity index 100% rename from wit/preview2/config.wit rename to wit/preview2/deps/spin@1.0.0/config.wit diff --git a/wit/preview2/reactor.wit b/wit/preview2/reactor.wit index 6731fe002..0331c1561 100644 --- a/wit/preview2/reactor.wit +++ b/wit/preview2/reactor.wit @@ -1,7 +1,7 @@ package fermyon:spin@2.0.0 world reactor { - import config + import fermyon:spin/config@1.0.0 import postgres import mysql import sqlite @@ -15,7 +15,7 @@ world reactor { } world redis-trigger { - import config + import fermyon:spin/config@1.0.0 import postgres import mysql import sqlite @@ -27,7 +27,7 @@ world redis-trigger { } world http-trigger { - import config + import fermyon:spin/config@1.0.0 import postgres import mysql import sqlite @@ -39,8 +39,8 @@ world http-trigger { } world platform { + import fermyon:spin/config@1.0.0 import http-types - import config import postgres import mysql import sqlite From de02229dabdf867a1c036695a56cd73b822170bf Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 12:05:20 +0200 Subject: [PATCH 17/31] Full separation of 1.0.0 and 2.0.0 Signed-off-by: Ryan Levick --- crates/llm-local/src/lib.rs | 2 +- crates/llm-remote-http/src/lib.rs | 2 +- crates/llm/src/host_component.rs | 2 +- crates/llm/src/lib.rs | 2 +- crates/outbound-http/src/host_component.rs | 2 +- crates/outbound-http/src/lib.rs | 2 +- crates/outbound-mysql/src/lib.rs | 2 +- crates/outbound-pg/src/lib.rs | 2 +- crates/outbound-redis/src/lib.rs | 2 +- crates/redis/src/spin.rs | 2 +- crates/redis/tests/rust/src/lib.rs | 4 +- .../benches/spin-http-benchmark/src/lib.rs | 4 +- crates/trigger-http/src/spin.rs | 2 +- .../tests/rust-http-test/src/lib.rs | 4 +- crates/trigger/src/runtime_config/llm.rs | 2 +- crates/world/src/lib.rs | 2 +- sdk/rust/src/lib.rs | 8 +-- sdk/rust/src/llm.rs | 6 +-- sdk/rust/src/mysql.rs | 4 +- sdk/rust/src/outbound_http.rs | 6 +-- sdk/rust/src/pg.rs | 4 +- .../{ => deps/spin@1.0.0}/http-types.wit | 0 wit/preview2/{ => deps/spin@1.0.0}/http.wit | 0 .../{ => deps/spin@1.0.0}/inbound-http.wit | 0 .../{ => deps/spin@1.0.0}/inbound-redis.wit | 0 wit/preview2/deps/spin@1.0.0/key-value.wit | 2 - wit/preview2/{ => deps/spin@1.0.0}/llm.wit | 0 wit/preview2/{ => deps/spin@1.0.0}/mysql.wit | 0 .../{ => deps/spin@1.0.0}/postgres.wit | 0 .../{ => deps/spin@1.0.0}/rdbms-types.wit | 0 .../{ => deps/spin@1.0.0}/redis-types.wit | 0 wit/preview2/{ => deps/spin@1.0.0}/redis.wit | 0 wit/preview2/deps/spin@1.0.0/sqlite.wit | 52 +++++++++++++++++++ wit/preview2/deps/spin@1.0.0/world.wit | 29 +++++++++++ wit/preview2/reactor.wit | 51 ------------------ wit/preview2/world.wit | 30 +++++++++++ 36 files changed, 143 insertions(+), 87 deletions(-) rename wit/preview2/{ => deps/spin@1.0.0}/http-types.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/http.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/inbound-http.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/inbound-redis.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/llm.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/mysql.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/postgres.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/rdbms-types.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/redis-types.wit (100%) rename wit/preview2/{ => deps/spin@1.0.0}/redis.wit (100%) create mode 100644 wit/preview2/deps/spin@1.0.0/sqlite.wit create mode 100644 wit/preview2/deps/spin@1.0.0/world.wit delete mode 100644 wit/preview2/reactor.wit create mode 100644 wit/preview2/world.wit diff --git a/crates/llm-local/src/lib.rs b/crates/llm-local/src/lib.rs index 60e1b7c02..aa9d1355b 100644 --- a/crates/llm-local/src/lib.rs +++ b/crates/llm-local/src/lib.rs @@ -11,7 +11,7 @@ use llm::{ use rand::SeedableRng; use spin_core::async_trait; use spin_llm::{LlmEngine, MODEL_ALL_MINILM_L6_V2}; -use spin_world::v2::llm::{self as wasi_llm}; +use spin_world::v1::llm::{self as wasi_llm}; use std::{ collections::hash_map::Entry, collections::HashMap, diff --git a/crates/llm-remote-http/src/lib.rs b/crates/llm-remote-http/src/lib.rs index 15c29baf6..6110dc897 100644 --- a/crates/llm-remote-http/src/lib.rs +++ b/crates/llm-remote-http/src/lib.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use serde_json::json; use spin_core::async_trait; use spin_llm::LlmEngine; -use spin_world::v2::llm::{self as wasi_llm}; +use spin_world::v1::llm::{self as wasi_llm}; #[derive(Clone)] pub struct RemoteHttpLlmEngine { diff --git a/crates/llm/src/host_component.rs b/crates/llm/src/host_component.rs index 2ccdc12c7..62d9476b0 100644 --- a/crates/llm/src/host_component.rs +++ b/crates/llm/src/host_component.rs @@ -25,7 +25,7 @@ impl HostComponent for LlmComponent { linker: &mut spin_core::Linker, get: impl Fn(&mut spin_core::Data) -> &mut Self::Data + Send + Sync + Copy + 'static, ) -> anyhow::Result<()> { - spin_world::v2::llm::add_to_linker(linker, get) + spin_world::v1::llm::add_to_linker(linker, get) } fn build_data(&self) -> Self::Data { diff --git a/crates/llm/src/lib.rs b/crates/llm/src/lib.rs index 45ff76e6f..2d1276949 100644 --- a/crates/llm/src/lib.rs +++ b/crates/llm/src/lib.rs @@ -2,7 +2,7 @@ pub mod host_component; use spin_app::MetadataKey; use spin_core::async_trait; -use spin_world::v2::llm::{self as wasi_llm}; +use spin_world::v1::llm::{self as wasi_llm}; use std::collections::HashSet; pub use crate::host_component::LlmComponent; diff --git a/crates/outbound-http/src/host_component.rs b/crates/outbound-http/src/host_component.rs index c39149775..9a8553244 100644 --- a/crates/outbound-http/src/host_component.rs +++ b/crates/outbound-http/src/host_component.rs @@ -2,7 +2,7 @@ use anyhow::Result; use spin_app::DynamicHostComponent; use spin_core::{Data, HostComponent, Linker}; -use spin_world::v2::http; +use spin_world::v1::http; use crate::{allowed_http_hosts::parse_allowed_http_hosts, OutboundHttp}; diff --git a/crates/outbound-http/src/lib.rs b/crates/outbound-http/src/lib.rs index 4ffb4ac63..1d63b3d2a 100644 --- a/crates/outbound-http/src/lib.rs +++ b/crates/outbound-http/src/lib.rs @@ -6,7 +6,7 @@ use http::HeaderMap; use reqwest::{Client, Url}; use spin_app::MetadataKey; use spin_core::async_trait; -use spin_world::v2::{ +use spin_world::v1::{ http as outbound_http, http_types::{Headers, HttpError, Method, Request, Response}, }; diff --git a/crates/outbound-mysql/src/lib.rs b/crates/outbound-mysql/src/lib.rs index 899749350..9cd8322cd 100644 --- a/crates/outbound-mysql/src/lib.rs +++ b/crates/outbound-mysql/src/lib.rs @@ -2,7 +2,7 @@ use anyhow::Result; pub use mysql::add_to_linker; use mysql_async::{consts::ColumnType, from_value_opt, prelude::*, Opts, OptsBuilder, SslOpts}; use spin_core::{async_trait, HostComponent}; -use spin_world::v2::{ +use spin_world::v1::{ mysql::{self, MysqlError}, rdbms_types::{Column, DbDataType, DbValue, ParameterValue, RowSet}, }; diff --git a/crates/outbound-pg/src/lib.rs b/crates/outbound-pg/src/lib.rs index 175647bf5..f2a7013a3 100644 --- a/crates/outbound-pg/src/lib.rs +++ b/crates/outbound-pg/src/lib.rs @@ -2,7 +2,7 @@ use anyhow::{anyhow, Result}; use native_tls::TlsConnector; use postgres_native_tls::MakeTlsConnector; use spin_core::{async_trait, HostComponent}; -use spin_world::v2::{ +use spin_world::v1::{ postgres::{self, PgError}, rdbms_types::{Column, DbDataType, DbValue, ParameterValue, RowSet}, }; diff --git a/crates/outbound-redis/src/lib.rs b/crates/outbound-redis/src/lib.rs index e986bf13a..8ccbe1b38 100644 --- a/crates/outbound-redis/src/lib.rs +++ b/crates/outbound-redis/src/lib.rs @@ -5,7 +5,7 @@ use std::collections::{hash_map::Entry, HashMap}; use anyhow::Result; use redis::{aio::Connection, AsyncCommands, FromRedisValue, Value}; use spin_core::async_trait; -use spin_world::v2::{ +use spin_world::v1::{ redis as outbound_redis, redis_types::{Error, RedisParameter, RedisResult}, }; diff --git a/crates/redis/src/spin.rs b/crates/redis/src/spin.rs index acccb1e86..b9ad4eb38 100644 --- a/crates/redis/src/spin.rs +++ b/crates/redis/src/spin.rs @@ -2,7 +2,7 @@ use anyhow::{anyhow, Result}; use async_trait::async_trait; use spin_core::Instance; use spin_trigger::{EitherInstance, TriggerAppEngine}; -use spin_world::v2::redis_types::{Error, Payload}; +use spin_world::v1::redis_types::{Error, Payload}; use crate::{RedisExecutor, RedisTrigger, Store}; diff --git a/crates/redis/tests/rust/src/lib.rs b/crates/redis/tests/rust/src/lib.rs index cdb473ecb..678775e06 100644 --- a/crates/redis/tests/rust/src/lib.rs +++ b/crates/redis/tests/rust/src/lib.rs @@ -4,10 +4,10 @@ wit_bindgen::generate!({ world: "redis-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-redis@2.0.0": SpinRedis, + "fermyon:spin/inbound-redis@1.0.0": SpinRedis, } }); -use exports::fermyon::spin2_0_0::inbound_redis::{self, Error, Payload}; +use exports::fermyon::spin1_0_0::inbound_redis::{self, Error, Payload}; struct SpinRedis; diff --git a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs index bbba8b0d9..8ff575767 100644 --- a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs +++ b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs @@ -2,11 +2,11 @@ wit_bindgen::generate!({ world: "http-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-http@2.0.0": SpinHttp, + "fermyon:spin/inbound-http@1.0.0": SpinHttp, } }); -use exports::fermyon::spin2_0_0::inbound_http; +use exports::fermyon::spin1_0_0::inbound_http; struct SpinHttp; diff --git a/crates/trigger-http/src/spin.rs b/crates/trigger-http/src/spin.rs index c6b73b3cd..f4f1bfaa5 100644 --- a/crates/trigger-http/src/spin.rs +++ b/crates/trigger-http/src/spin.rs @@ -7,7 +7,7 @@ use hyper::{Body, Request, Response}; use outbound_http::OutboundHttpComponent; use spin_core::Instance; use spin_trigger::{EitherInstance, TriggerAppEngine}; -use spin_world::v2::http_types; +use spin_world::v1::http_types; use std::sync::Arc; #[derive(Clone)] diff --git a/crates/trigger-http/tests/rust-http-test/src/lib.rs b/crates/trigger-http/tests/rust-http-test/src/lib.rs index be872ad6b..dedd0200a 100644 --- a/crates/trigger-http/tests/rust-http-test/src/lib.rs +++ b/crates/trigger-http/tests/rust-http-test/src/lib.rs @@ -2,11 +2,11 @@ wit_bindgen::generate!({ world: "http-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-http@2.0.0": SpinHttp, + "fermyon:spin/inbound-http@1.0.0": SpinHttp, } }); -use exports::fermyon::spin2_0_0::inbound_http::{self, Request, Response}; +use exports::fermyon::spin1_0_0::inbound_http::{self, Request, Response}; struct SpinHttp; diff --git a/crates/trigger/src/runtime_config/llm.rs b/crates/trigger/src/runtime_config/llm.rs index af5f2a362..bead39107 100644 --- a/crates/trigger/src/runtime_config/llm.rs +++ b/crates/trigger/src/runtime_config/llm.rs @@ -1,7 +1,7 @@ use async_trait::async_trait; use spin_llm::LlmEngine; use spin_llm_remote_http::RemoteHttpLlmEngine; -use spin_world::v2::llm as wasi_llm; +use spin_world::v1::llm as wasi_llm; use url::Url; #[derive(Default)] diff --git a/crates/world/src/lib.rs b/crates/world/src/lib.rs index e696350e1..c59544174 100644 --- a/crates/world/src/lib.rs +++ b/crates/world/src/lib.rs @@ -2,7 +2,7 @@ wasmtime::component::bindgen!({ path: "../../wit/preview2", - world: "reactor", + world: "host", async: true }); diff --git a/sdk/rust/src/lib.rs b/sdk/rust/src/lib.rs index bb20ae942..9b64fe01c 100644 --- a/sdk/rust/src/lib.rs +++ b/sdk/rust/src/lib.rs @@ -86,12 +86,12 @@ pub mod http { pub mod redis { use std::hash::{Hash, Hasher}; - pub use super::wit::v2::redis::{del, execute, get, incr, publish, sadd, set, smembers, srem}; - pub use super::wit::v2::redis_types::*; + pub use super::wit::v1::redis::{del, execute, get, incr, publish, sadd, set, smembers, srem}; + pub use super::wit::v1::redis_types::*; impl PartialEq for RedisResult { fn eq(&self, other: &Self) -> bool { - use super::wit::v2::redis_types::RedisResult::*; + use RedisResult::*; match (self, other) { (Nil, Nil) => true, (Status(a), Status(b)) => a == b, @@ -106,7 +106,7 @@ pub mod redis { impl Hash for RedisResult { fn hash(&self, state: &mut H) { - use super::wit::v2::redis_types::RedisResult::*; + use RedisResult::*; match self { Nil => (), diff --git a/sdk/rust/src/llm.rs b/sdk/rust/src/llm.rs index 2016e4de0..f53132ec0 100644 --- a/sdk/rust/src/llm.rs +++ b/sdk/rust/src/llm.rs @@ -1,7 +1,5 @@ -use crate::wit::v2::llm; - -pub use crate::wit::v2::llm::{ - EmbeddingsResult, EmbeddingsUsage, Error, InferencingParams, InferencingResult, +pub use crate::wit::v1::llm::{ + self, EmbeddingsResult, EmbeddingsUsage, Error, InferencingParams, InferencingResult, InferencingUsage, }; diff --git a/sdk/rust/src/mysql.rs b/sdk/rust/src/mysql.rs index 81d2baaa0..c91a13c56 100644 --- a/sdk/rust/src/mysql.rs +++ b/sdk/rust/src/mysql.rs @@ -18,8 +18,8 @@ //! | `String` | str(string) | VARCHAR, CHAR, TEXT | //! | `Vec` | binary(list\) | VARBINARY, BINARY, BLOB | -pub use super::wit::v2::mysql::{execute, query, MysqlError}; -pub use super::wit::v2::rdbms_types::*; +pub use super::wit::v1::mysql::{execute, query, MysqlError}; +pub use super::wit::v1::rdbms_types::*; /// A MySQL error #[derive(Debug, thiserror::Error)] diff --git a/sdk/rust/src/outbound_http.rs b/sdk/rust/src/outbound_http.rs index 347c28b58..0e5c5cf83 100644 --- a/sdk/rust/src/outbound_http.rs +++ b/sdk/rust/src/outbound_http.rs @@ -2,11 +2,11 @@ use http_types::{header::HeaderName, HeaderValue}; use super::http::{Request, Response}; -use super::wit::v2::http::{self as spin_http}; -use super::wit::v2::http_types as spin_http_types; +use super::wit::v1::http::{self as spin_http}; +use super::wit::v1::http_types as spin_http_types; /// Error type returned by [`send_request`][crate::outbound_http::send_request] -pub use super::wit::v2::http_types::HttpError as OutboundHttpError; +pub use spin_http_types::HttpError as OutboundHttpError; type Result = std::result::Result; diff --git a/sdk/rust/src/pg.rs b/sdk/rust/src/pg.rs index 841761b62..09a8b0fa9 100644 --- a/sdk/rust/src/pg.rs +++ b/sdk/rust/src/pg.rs @@ -13,8 +13,8 @@ //! | `String` | str(string) | VARCHAR, CHAR(N), TEXT | //! | `Vec` | binary(list\) | BYTEA | -pub use super::wit::v2::postgres::{execute, query, PgError}; -pub use super::wit::v2::rdbms_types::*; +pub use super::wit::v1::postgres::{execute, query, PgError}; +pub use super::wit::v1::rdbms_types::*; /// A pg error #[derive(Debug, thiserror::Error)] diff --git a/wit/preview2/http-types.wit b/wit/preview2/deps/spin@1.0.0/http-types.wit similarity index 100% rename from wit/preview2/http-types.wit rename to wit/preview2/deps/spin@1.0.0/http-types.wit diff --git a/wit/preview2/http.wit b/wit/preview2/deps/spin@1.0.0/http.wit similarity index 100% rename from wit/preview2/http.wit rename to wit/preview2/deps/spin@1.0.0/http.wit diff --git a/wit/preview2/inbound-http.wit b/wit/preview2/deps/spin@1.0.0/inbound-http.wit similarity index 100% rename from wit/preview2/inbound-http.wit rename to wit/preview2/deps/spin@1.0.0/inbound-http.wit diff --git a/wit/preview2/inbound-redis.wit b/wit/preview2/deps/spin@1.0.0/inbound-redis.wit similarity index 100% rename from wit/preview2/inbound-redis.wit rename to wit/preview2/deps/spin@1.0.0/inbound-redis.wit diff --git a/wit/preview2/deps/spin@1.0.0/key-value.wit b/wit/preview2/deps/spin@1.0.0/key-value.wit index 5bc75d965..09b0709e7 100644 --- a/wit/preview2/deps/spin@1.0.0/key-value.wit +++ b/wit/preview2/deps/spin@1.0.0/key-value.wit @@ -1,5 +1,3 @@ -package fermyon:spin@1.0.0 - interface key-value { // A handle to an open key-value store type store = u32 diff --git a/wit/preview2/llm.wit b/wit/preview2/deps/spin@1.0.0/llm.wit similarity index 100% rename from wit/preview2/llm.wit rename to wit/preview2/deps/spin@1.0.0/llm.wit diff --git a/wit/preview2/mysql.wit b/wit/preview2/deps/spin@1.0.0/mysql.wit similarity index 100% rename from wit/preview2/mysql.wit rename to wit/preview2/deps/spin@1.0.0/mysql.wit diff --git a/wit/preview2/postgres.wit b/wit/preview2/deps/spin@1.0.0/postgres.wit similarity index 100% rename from wit/preview2/postgres.wit rename to wit/preview2/deps/spin@1.0.0/postgres.wit diff --git a/wit/preview2/rdbms-types.wit b/wit/preview2/deps/spin@1.0.0/rdbms-types.wit similarity index 100% rename from wit/preview2/rdbms-types.wit rename to wit/preview2/deps/spin@1.0.0/rdbms-types.wit diff --git a/wit/preview2/redis-types.wit b/wit/preview2/deps/spin@1.0.0/redis-types.wit similarity index 100% rename from wit/preview2/redis-types.wit rename to wit/preview2/deps/spin@1.0.0/redis-types.wit diff --git a/wit/preview2/redis.wit b/wit/preview2/deps/spin@1.0.0/redis.wit similarity index 100% rename from wit/preview2/redis.wit rename to wit/preview2/deps/spin@1.0.0/redis.wit diff --git a/wit/preview2/deps/spin@1.0.0/sqlite.wit b/wit/preview2/deps/spin@1.0.0/sqlite.wit new file mode 100644 index 000000000..83a5eadab --- /dev/null +++ b/wit/preview2/deps/spin@1.0.0/sqlite.wit @@ -0,0 +1,52 @@ +interface sqlite { + // A handle to an open sqlite instance + type connection = u32 + + // The set of errors which may be raised by functions in this interface + variant error { + // The host does not recognize the database name requested. + no-such-database, + // The requesting component does not have access to the specified database (which may or may not exist). + access-denied, + // The provided connection is not valid + invalid-connection, + // The database has reached its capacity + database-full, + // Some implementation-specific error has occurred (e.g. I/O) + io(string) + } + + // Open a connection to a named database instance. + // + // If `database` is "default", the default instance is opened. + // + // `error::no-such-database` will be raised if the `name` is not recognized. + open: func(database: string) -> result + + // Execute a statement returning back data if there is any + execute: func(conn: connection, statement: string, parameters: list) -> result + + // Close the specified `connection`. + close: func(conn: connection) + + // A result of a query + record query-result { + // The names of the columns retrieved in the query + columns: list, + // the row results each containing the values for all the columns for a given row + rows: list, + } + + // A set of values for each of the columns in a query-result + record row-result { + values: list + } + + variant value { + integer(s64), + real(float64), + text(string), + blob(list), + null + } +} \ No newline at end of file diff --git a/wit/preview2/deps/spin@1.0.0/world.wit b/wit/preview2/deps/spin@1.0.0/world.wit new file mode 100644 index 000000000..05ddcc7dd --- /dev/null +++ b/wit/preview2/deps/spin@1.0.0/world.wit @@ -0,0 +1,29 @@ +package fermyon:spin@1.0.0 + +world host { + include platform + + export inbound-http + export inbound-redis +} + +world redis-trigger { + include platform + export inbound-redis +} + +world http-trigger { + include platform + export inbound-http +} + +world platform { + import config + import http + import postgres + import mysql + import sqlite + import redis + import key-value + import llm +} diff --git a/wit/preview2/reactor.wit b/wit/preview2/reactor.wit deleted file mode 100644 index 0331c1561..000000000 --- a/wit/preview2/reactor.wit +++ /dev/null @@ -1,51 +0,0 @@ -package fermyon:spin@2.0.0 - -world reactor { - import fermyon:spin/config@1.0.0 - import postgres - import mysql - import sqlite - import redis - import key-value - import fermyon:spin/key-value@1.0.0 - import http - import llm - export inbound-http - export inbound-redis -} - -world redis-trigger { - import fermyon:spin/config@1.0.0 - import postgres - import mysql - import sqlite - import redis - import key-value - import http - import llm - export inbound-redis -} - -world http-trigger { - import fermyon:spin/config@1.0.0 - import postgres - import mysql - import sqlite - import redis - import key-value - import http - import llm - export inbound-http -} - -world platform { - import fermyon:spin/config@1.0.0 - import http-types - import postgres - import mysql - import sqlite - import redis - import key-value - import http - import llm -} diff --git a/wit/preview2/world.wit b/wit/preview2/world.wit new file mode 100644 index 000000000..21de5de92 --- /dev/null +++ b/wit/preview2/world.wit @@ -0,0 +1,30 @@ +package fermyon:spin@2.0.0 + +world host { + include fermyon:spin/host@1.0.0 + + import sqlite + import key-value +} + +world redis-trigger { + include platform + export fermyon:spin/inbound-redis@1.0.0 +} + +world http-trigger { + include platform + export fermyon:spin/inbound-http@1.0.0 +} + +world platform { + import fermyon:spin/config@1.0.0 + import fermyon:spin/http@1.0.0 + import fermyon:spin/postgres@1.0.0 + import fermyon:spin/mysql@1.0.0 + import fermyon:spin/redis@1.0.0 + import fermyon:spin/llm@1.0.0 + + import sqlite + import key-value +} From 6a13f92c347902fb728878eadd721d3d4e523eb1 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 12:20:40 +0200 Subject: [PATCH 18/31] Remove @1.0.0 since that wasn't present before Signed-off-by: Ryan Levick --- crates/redis/tests/rust/src/lib.rs | 4 ++-- .../benches/spin-http-benchmark/src/lib.rs | 4 ++-- .../tests/rust-http-test/src/lib.rs | 4 ++-- crates/world/src/lib.rs | 2 +- sdk/rust/src/lib.rs | 2 +- wit/preview2/deps/spin@1.0.0/world.wit | 2 +- wit/preview2/world.wit | 18 +++++++++--------- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/crates/redis/tests/rust/src/lib.rs b/crates/redis/tests/rust/src/lib.rs index 678775e06..15ced0c09 100644 --- a/crates/redis/tests/rust/src/lib.rs +++ b/crates/redis/tests/rust/src/lib.rs @@ -4,10 +4,10 @@ wit_bindgen::generate!({ world: "redis-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-redis@1.0.0": SpinRedis, + "fermyon:spin/inbound-redis": SpinRedis, } }); -use exports::fermyon::spin1_0_0::inbound_redis::{self, Error, Payload}; +use exports::fermyon::spin::inbound_redis::{self, Error, Payload}; struct SpinRedis; diff --git a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs index 8ff575767..4c37e3d27 100644 --- a/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs +++ b/crates/trigger-http/benches/spin-http-benchmark/src/lib.rs @@ -2,11 +2,11 @@ wit_bindgen::generate!({ world: "http-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-http@1.0.0": SpinHttp, + "fermyon:spin/inbound-http": SpinHttp, } }); -use exports::fermyon::spin1_0_0::inbound_http; +use exports::fermyon::spin::inbound_http; struct SpinHttp; diff --git a/crates/trigger-http/tests/rust-http-test/src/lib.rs b/crates/trigger-http/tests/rust-http-test/src/lib.rs index dedd0200a..5d0e21b7e 100644 --- a/crates/trigger-http/tests/rust-http-test/src/lib.rs +++ b/crates/trigger-http/tests/rust-http-test/src/lib.rs @@ -2,11 +2,11 @@ wit_bindgen::generate!({ world: "http-trigger", path: "../../../../wit/preview2", exports: { - "fermyon:spin/inbound-http@1.0.0": SpinHttp, + "fermyon:spin/inbound-http": SpinHttp, } }); -use exports::fermyon::spin1_0_0::inbound_http::{self, Request, Response}; +use exports::fermyon::spin::inbound_http::{self, Request, Response}; struct SpinHttp; diff --git a/crates/world/src/lib.rs b/crates/world/src/lib.rs index c59544174..0ed064d9d 100644 --- a/crates/world/src/lib.rs +++ b/crates/world/src/lib.rs @@ -6,5 +6,5 @@ wasmtime::component::bindgen!({ async: true }); -pub use fermyon::spin1_0_0 as v1; +pub use fermyon::spin as v1; pub use fermyon::spin2_0_0 as v2; diff --git a/sdk/rust/src/lib.rs b/sdk/rust/src/lib.rs index 9b64fe01c..6af517fb5 100644 --- a/sdk/rust/src/lib.rs +++ b/sdk/rust/src/lib.rs @@ -27,7 +27,7 @@ pub mod wit { world: "platform", path: "../../wit/preview2", }); - pub use fermyon::spin1_0_0 as v1; + pub use fermyon::spin as v1; pub use fermyon::spin2_0_0 as v2; } diff --git a/wit/preview2/deps/spin@1.0.0/world.wit b/wit/preview2/deps/spin@1.0.0/world.wit index 05ddcc7dd..e881baf8a 100644 --- a/wit/preview2/deps/spin@1.0.0/world.wit +++ b/wit/preview2/deps/spin@1.0.0/world.wit @@ -1,4 +1,4 @@ -package fermyon:spin@1.0.0 +package fermyon:spin world host { include platform diff --git a/wit/preview2/world.wit b/wit/preview2/world.wit index 21de5de92..4fd991ab9 100644 --- a/wit/preview2/world.wit +++ b/wit/preview2/world.wit @@ -1,7 +1,7 @@ package fermyon:spin@2.0.0 world host { - include fermyon:spin/host@1.0.0 + include fermyon:spin/host import sqlite import key-value @@ -9,21 +9,21 @@ world host { world redis-trigger { include platform - export fermyon:spin/inbound-redis@1.0.0 + export fermyon:spin/inbound-redis } world http-trigger { include platform - export fermyon:spin/inbound-http@1.0.0 + export fermyon:spin/inbound-http } world platform { - import fermyon:spin/config@1.0.0 - import fermyon:spin/http@1.0.0 - import fermyon:spin/postgres@1.0.0 - import fermyon:spin/mysql@1.0.0 - import fermyon:spin/redis@1.0.0 - import fermyon:spin/llm@1.0.0 + import fermyon:spin/config + import fermyon:spin/http + import fermyon:spin/postgres + import fermyon:spin/mysql + import fermyon:spin/redis + import fermyon:spin/llm import sqlite import key-value From 257a6a2d58865585970b51606b41dfafe0292a13 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 13:06:08 +0200 Subject: [PATCH 19/31] Add host commponent for legacy sqlite Signed-off-by: Ryan Levick --- crates/key-value-sqlite/src/lib.rs | 2 +- crates/key-value/src/lib.rs | 4 +- crates/sqlite/src/host_component.rs | 33 ++++++++ crates/sqlite/src/lib.rs | 89 ++++++++++++++++++++- crates/trigger/src/lib.rs | 8 ++ crates/trigger/src/runtime_config/sqlite.rs | 12 ++- 6 files changed, 140 insertions(+), 8 deletions(-) diff --git a/crates/key-value-sqlite/src/lib.rs b/crates/key-value-sqlite/src/lib.rs index 110b7ba45..652d55ac7 100644 --- a/crates/key-value-sqlite/src/lib.rs +++ b/crates/key-value-sqlite/src/lib.rs @@ -146,7 +146,7 @@ mod test { use super::*; use spin_core::wasmtime::component::Resource; use spin_key_value::{DelegatingStoreManager, KeyValueDispatch}; - use spin_world::key_value::HostStore; + use spin_world::v2::key_value::HostStore; #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn all() -> Result<()> { diff --git a/crates/key-value/src/lib.rs b/crates/key-value/src/lib.rs index a1b523d8a..b121cba75 100644 --- a/crates/key-value/src/lib.rs +++ b/crates/key-value/src/lib.rs @@ -232,7 +232,7 @@ impl spin_world::v1::key_value::Host for LegacyDispatch { } async fn close(&mut self, store: u32) -> Result<()> { - let _: Resource = Resource::new_own(store); - Ok(()) + let this = Resource::new_borrow(store); + self.0.drop(this) } } diff --git a/crates/sqlite/src/host_component.rs b/crates/sqlite/src/host_component.rs index e05f1e047..1750a2449 100644 --- a/crates/sqlite/src/host_component.rs +++ b/crates/sqlite/src/host_component.rs @@ -98,3 +98,36 @@ impl DynamicHostComponent for SqliteComponent { } } } + +pub struct LegacySqliteComponent(SqliteComponent); + +impl LegacySqliteComponent { + pub fn new(new: SqliteComponent) -> Self { + Self(new) + } +} + +impl HostComponent for LegacySqliteComponent { + type Data = super::SqliteDispatch; + + fn add_to_linker( + linker: &mut spin_core::Linker, + get: impl Fn(&mut spin_core::Data) -> &mut Self::Data + Send + Sync + Copy + 'static, + ) -> anyhow::Result<()> { + spin_world::v1::sqlite::add_to_linker(linker, get) + } + + fn build_data(&self) -> Self::Data { + self.0.build_data() + } +} + +impl DynamicHostComponent for LegacySqliteComponent { + fn update_data(&self, data: &mut Self::Data, component: &AppComponent) -> anyhow::Result<()> { + self.0.update_data(data, component) + } + + fn validate_app(&self, app: &spin_app::App) -> anyhow::Result<()> { + self.0.validate_app(app) + } +} diff --git a/crates/sqlite/src/lib.rs b/crates/sqlite/src/lib.rs index c98065eac..6c15d1813 100644 --- a/crates/sqlite/src/lib.rs +++ b/crates/sqlite/src/lib.rs @@ -6,7 +6,7 @@ use spin_key_value::table; use spin_world::v2::sqlite; use std::{collections::HashSet, sync::Arc}; -pub use host_component::SqliteComponent; +pub use host_component::{LegacySqliteComponent, SqliteComponent}; pub const DATABASES_KEY: MetadataKey> = MetadataKey::new("databases"); @@ -88,9 +88,9 @@ impl sqlite::HostConnection for SqliteDispatch { .await .and_then(|conn| conn.ok_or(sqlite::Error::NoSuchDatabase)) .and_then(|conn| { - self.connections.push(conn).map_err(|()| { - sqlite::Error::Io("too many connections opened".to_string()) - }) + self.connections + .push(conn) + .map_err(|()| sqlite::Error::Io("too many connections opened".to_string())) }) .map(Resource::new_own)) } @@ -113,3 +113,84 @@ impl sqlite::HostConnection for SqliteDispatch { Ok(()) } } + +#[async_trait] +impl spin_world::v1::sqlite::Host for SqliteDispatch { + async fn open( + &mut self, + database: String, + ) -> anyhow::Result> { + let result = ::open(self, database).await?; + Ok(result.map_err(to_legacy_error).map(|s| { + let rep = s.rep(); + std::mem::forget(s); + rep + })) + } + + async fn execute( + &mut self, + connection: u32, + query: String, + parameters: Vec, + ) -> anyhow::Result> + { + let this = Resource::new_borrow(connection); + let result = ::execute( + self, + this, + query, + parameters.into_iter().map(from_legacy_value).collect(), + ) + .await?; + Ok(result.map_err(to_legacy_error).map(to_legacy_query_result)) + } + + async fn close(&mut self, connection: u32) -> anyhow::Result<()> { + ::drop(self, Resource::new_own(connection)) + } +} +use spin_world::v1::sqlite as v1; + +fn to_legacy_error(error: sqlite::Error) -> v1::Error { + match error { + sqlite::Error::NoSuchDatabase => v1::Error::NoSuchDatabase, + sqlite::Error::AccessDenied => v1::Error::AccessDenied, + sqlite::Error::InvalidConnection => v1::Error::InvalidConnection, + sqlite::Error::DatabaseFull => v1::Error::DatabaseFull, + sqlite::Error::Io(s) => v1::Error::Io(s), + } +} + +fn to_legacy_query_result(result: sqlite::QueryResult) -> v1::QueryResult { + v1::QueryResult { + columns: result.columns, + rows: result.rows.into_iter().map(to_legacy_row_result).collect(), + } +} + +fn to_legacy_row_result(result: sqlite::RowResult) -> v1::RowResult { + v1::RowResult { + values: result.values.into_iter().map(to_legacy_value).collect(), + } +} + +fn to_legacy_value(value: sqlite::Value) -> v1::Value { + match value { + sqlite::Value::Integer(i) => v1::Value::Integer(i), + sqlite::Value::Real(r) => v1::Value::Real(r), + sqlite::Value::Text(t) => v1::Value::Text(t), + sqlite::Value::Blob(b) => v1::Value::Blob(b), + sqlite::Value::Null => v1::Value::Null, + } +} + +fn from_legacy_value(value: v1::Value) -> sqlite::Value { + match value { + v1::Value::Integer(i) => sqlite::Value::Integer(i), + v1::Value::Real(r) => sqlite::Value::Real(r), + v1::Value::Text(t) => sqlite::Value::Text(t), + v1::Value::Blob(b) => sqlite::Value::Blob(b), + v1::Value::Null => sqlite::Value::Null, + } +} diff --git a/crates/trigger/src/lib.rs b/crates/trigger/src/lib.rs index 5fdc87cc7..b639e8b56 100644 --- a/crates/trigger/src/lib.rs +++ b/crates/trigger/src/lib.rs @@ -141,6 +141,14 @@ impl TriggerExecutorBuilder { runtime_config::sqlite::build_component(&runtime_config, &init_data.sqlite) .await?, )?; + self.loader.add_dynamic_host_component( + &mut builder, + runtime_config::sqlite::build_legacy_component( + &runtime_config, + &init_data.sqlite, + ) + .await?, + )?; self.loader.add_dynamic_host_component( &mut builder, outbound_http::OutboundHttpComponent, diff --git a/crates/trigger/src/runtime_config/sqlite.rs b/crates/trigger/src/runtime_config/sqlite.rs index 2250ab769..aa01cc473 100644 --- a/crates/trigger/src/runtime_config/sqlite.rs +++ b/crates/trigger/src/runtime_config/sqlite.rs @@ -2,7 +2,9 @@ use std::{collections::HashMap, path::PathBuf, sync::Arc}; use crate::{runtime_config::RuntimeConfig, TriggerHooks}; use anyhow::Context; -use spin_sqlite::{Connection, ConnectionsStore, SqliteComponent, DATABASES_KEY}; +use spin_sqlite::{ + Connection, ConnectionsStore, LegacySqliteComponent, SqliteComponent, DATABASES_KEY, +}; use super::RuntimeConfigOpts; @@ -23,6 +25,14 @@ pub(crate) async fn build_component( Ok(SqliteComponent::new(move |_| connections_store.clone())) } +pub(crate) async fn build_legacy_component( + runtime_config: &RuntimeConfig, + sqlite_statements: &[String], +) -> anyhow::Result { + let component = build_component(runtime_config, sqlite_statements).await?; + Ok(LegacySqliteComponent::new(component)) +} + /// A `ConnectionStore` based on a `HashMap` struct SimpleConnectionsStore(HashMap>); From 1574de2d86cb4592d397265439e15af41b145415 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 14:43:35 +0200 Subject: [PATCH 20/31] Fix examples Signed-off-by: Ryan Levick --- examples/config-rust/Cargo.lock | 235 +++++++++------- examples/http-rust/Cargo.lock | 189 +++++++------ examples/redis-rust/Cargo.lock | 241 ++++++++-------- examples/rust-outbound-mysql/src/lib.rs | 4 +- examples/rust-outbound-pg/Cargo.lock | 241 ++++++++-------- examples/rust-outbound-redis/Cargo.lock | 241 ++++++++-------- examples/rust-outbound-redis/src/lib.rs | 4 +- examples/spin-timer/Cargo.lock | 358 ++++++++++++++---------- examples/spin-timer/Cargo.toml | 2 +- sdk/rust/macro/src/lib.rs | 61 ++-- 10 files changed, 880 insertions(+), 696 deletions(-) diff --git a/examples/config-rust/Cargo.lock b/examples/config-rust/Cargo.lock index 3645bb8eb..d9f0752e8 100644 --- a/examples/config-rust/Cargo.lock +++ b/examples/config-rust/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -22,15 +22,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bytes" -version = "1.1.0" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "fnv" @@ -40,19 +46,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -65,9 +70,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -82,31 +87,30 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "leb128" @@ -116,42 +120,36 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "log" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "matches" -version = "0.1.9" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -160,9 +158,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -177,32 +175,55 @@ dependencies = [ "smartstring", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", +] + +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", ] +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + [[package]] name = "smartcow" version = "0.2.1" @@ -223,6 +244,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "spin-config-example" version = "0.1.0" @@ -242,7 +272,7 @@ dependencies = [ "http", "proc-macro2", "quote", - "syn 1.0.98", + "syn 1.0.109", ] [[package]] @@ -267,9 +297,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.98" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -278,9 +308,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -289,22 +319,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.38", ] [[package]] @@ -318,15 +348,15 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -339,36 +369,36 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.2" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-xid" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "url" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -383,31 +413,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -415,19 +447,17 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -436,36 +466,25 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.18", + "quote", + "syn 2.0.38", "wit-bindgen-core", "wit-bindgen-rust", "wit-component", @@ -473,14 +492,16 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -489,9 +510,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -499,6 +520,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/examples/http-rust/Cargo.lock b/examples/http-rust/Cargo.lock index 54219c5ac..0fb6cd29e 100644 --- a/examples/http-rust/Cargo.lock +++ b/examples/http-rust/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -22,15 +22,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "fnv" @@ -49,9 +55,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -101,20 +107,20 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] [[package]] name = "itoa" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "leb128" @@ -124,15 +130,15 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "percent-encoding" @@ -142,18 +148,18 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "proc-macro2" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -162,9 +168,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.29" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -179,32 +185,55 @@ dependencies = [ "smartstring", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.171" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.171" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.38", ] +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + [[package]] name = "smartcow" version = "0.2.1" @@ -225,6 +254,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "spin-macro" version = "0.1.0" @@ -270,9 +308,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.25" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -281,22 +319,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.43" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.43" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn 2.0.38", ] [[package]] @@ -316,9 +354,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -331,9 +369,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.10" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -358,9 +396,9 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -375,31 +413,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -407,19 +447,17 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -428,36 +466,25 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.25", + "quote", + "syn 2.0.38", "wit-bindgen-core", "wit-bindgen-rust", "wit-component", @@ -465,14 +492,16 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -481,9 +510,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -491,6 +520,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/examples/redis-rust/Cargo.lock b/examples/redis-rust/Cargo.lock index e412d518e..e983b1362 100644 --- a/examples/redis-rust/Cargo.lock +++ b/examples/redis-rust/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -22,15 +22,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bytes" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "fnv" @@ -40,19 +46,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -65,9 +70,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -82,31 +87,30 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "leb128" @@ -116,42 +120,36 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -160,9 +158,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -177,32 +175,55 @@ dependencies = [ "smartstring", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + [[package]] name = "smartcow" version = "0.2.1" @@ -223,6 +244,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "spin-macro" version = "0.1.0" @@ -232,7 +262,7 @@ dependencies = [ "http", "proc-macro2", "quote", - "syn 1.0.86", + "syn 1.0.109", ] [[package]] @@ -266,20 +296,20 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.86" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "syn" -version = "2.0.18" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -288,44 +318,44 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 1.0.86", + "syn 2.0.38", ] [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -338,36 +368,36 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "url" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -382,31 +412,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -414,19 +446,17 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -435,36 +465,25 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.18", + "quote", + "syn 2.0.38", "wit-bindgen-core", "wit-bindgen-rust", "wit-component", @@ -472,14 +491,16 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -488,9 +509,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -498,6 +519,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/examples/rust-outbound-mysql/src/lib.rs b/examples/rust-outbound-mysql/src/lib.rs index 079c8208a..924b9ba55 100644 --- a/examples/rust-outbound-mysql/src/lib.rs +++ b/examples/rust-outbound-mysql/src/lib.rs @@ -27,7 +27,7 @@ fn rust_outbound_mysql(req: Request) -> Result { match parse_request(req) { RequestAction::List => list(), RequestAction::Get(id) => get(id), - RequestAction::Create(name, prey, is_finicky) => create(&name, &prey, is_finicky), + RequestAction::Create(name, prey, is_finicky) => create(name, prey, is_finicky), RequestAction::Error(status) => error(status), } } @@ -141,7 +141,7 @@ fn get(id: i32) -> Result { } } -fn create(name: &str, prey: &Option, is_finicky: bool) -> Result { +fn create(name: String, prey: Option, is_finicky: bool) -> Result { let address = std::env::var(DB_URL_ENV)?; let id = max_pet_id(&address)? + 1; diff --git a/examples/rust-outbound-pg/Cargo.lock b/examples/rust-outbound-pg/Cargo.lock index eb57eec1d..07e1e7475 100644 --- a/examples/rust-outbound-pg/Cargo.lock +++ b/examples/rust-outbound-pg/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -22,15 +22,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bytes" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "fnv" @@ -40,19 +46,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -65,9 +70,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -82,31 +87,30 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "leb128" @@ -116,42 +120,36 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -160,9 +158,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -187,32 +185,55 @@ dependencies = [ "spin-sdk", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + [[package]] name = "smartcow" version = "0.2.1" @@ -233,6 +254,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "spin-macro" version = "0.1.0" @@ -242,7 +272,7 @@ dependencies = [ "http", "proc-macro2", "quote", - "syn 1.0.90", + "syn 1.0.109", ] [[package]] @@ -267,20 +297,20 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.90" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "syn" -version = "2.0.18" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -289,44 +319,44 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 1.0.90", + "syn 2.0.38", ] [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -339,36 +369,36 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "url" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -383,31 +413,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -415,19 +447,17 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -436,36 +466,25 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.18", + "quote", + "syn 2.0.38", "wit-bindgen-core", "wit-bindgen-rust", "wit-component", @@ -473,14 +492,16 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -489,9 +510,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -499,6 +520,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/examples/rust-outbound-redis/Cargo.lock b/examples/rust-outbound-redis/Cargo.lock index 7ff925548..cb9c19487 100644 --- a/examples/rust-outbound-redis/Cargo.lock +++ b/examples/rust-outbound-redis/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -22,15 +22,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bytes" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "fnv" @@ -40,19 +46,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -65,9 +70,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -82,31 +87,30 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] [[package]] name = "indexmap" -version = "1.9.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ - "autocfg", + "equivalent", "hashbrown", "serde", ] [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "leb128" @@ -116,42 +120,36 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "pulldown-cmark" -version = "0.8.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" dependencies = [ "bitflags 1.3.2", "memchr", @@ -160,9 +158,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -187,32 +185,55 @@ dependencies = [ "spin-sdk", ] +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + [[package]] name = "smartcow" version = "0.2.1" @@ -233,6 +254,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "spdx" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" +dependencies = [ + "smallvec", +] + [[package]] name = "spin-macro" version = "0.1.0" @@ -242,7 +272,7 @@ dependencies = [ "http", "proc-macro2", "quote", - "syn 1.0.90", + "syn 1.0.109", ] [[package]] @@ -267,20 +297,20 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.90" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "syn" -version = "2.0.18" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -289,44 +319,44 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 1.0.90", + "syn 2.0.38", ] [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -339,36 +369,36 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "url" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -383,31 +413,33 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.8.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5156581ff4a302405c44ca7c85347563ca431d15f1a773f12c9c7b9a6cdc9" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap", "serde", + "serde_json", + "spdx", "wasm-encoder", "wasmparser", ] [[package]] name = "wasmparser" -version = "0.107.0" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e3ac9b780c7dda0cac7a52a5d6d2d6707cc6e3451c9db209b6c758f40d7acb" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap", "semver", @@ -415,19 +447,17 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392d16e9e46cc7ca98125bc288dd5e4db469efe8323d3e0dac815ca7f2398522" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d422d36cbd78caa0e18c3371628447807c66ee72466b69865ea7e33682598158" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "wit-component", @@ -436,36 +466,25 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b76db68264f5d2089dc4652581236d8e75c5b89338de6187716215fd0e68ba3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ + "anyhow", "heck", "wasm-metadata", "wit-bindgen-core", - "wit-bindgen-rust-lib", "wit-component", ] -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c50f334bc08b0903a43387f6eea6ef6aa9eb2a085729f1677b29992ecef20ba" -dependencies = [ - "heck", - "wit-bindgen-core", -] - [[package]] name = "wit-bindgen-rust-macro" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced38a5e174940c6a41ae587babeadfd2e2c2dc32f3b6488bcdca0e8922cf3f3" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" dependencies = [ "anyhow", "proc-macro2", - "syn 2.0.18", + "quote", + "syn 2.0.38", "wit-bindgen-core", "wit-bindgen-rust", "wit-component", @@ -473,14 +492,16 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.11.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbd4c7f8f400327c482c88571f373844b7889e61460650d650fc5881bb3575c" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags 2.4.0", "indexmap", "log", + "serde", + "serde_json", "wasm-encoder", "wasm-metadata", "wasmparser", @@ -489,9 +510,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.8.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6daec9f093dbaea0e94043eeb92ece327bbbe70c86b1f41aca9bbfefd7f050f0" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -499,6 +520,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] diff --git a/examples/rust-outbound-redis/src/lib.rs b/examples/rust-outbound-redis/src/lib.rs index a36ce33ef..7eb3f230c 100644 --- a/examples/rust-outbound-redis/src/lib.rs +++ b/examples/rust-outbound-redis/src/lib.rs @@ -26,11 +26,11 @@ fn publish(_req: Request) -> Result { let payload = redis::get(&address, "mykey").map_err(|_| anyhow!("Error querying Redis"))?; // Set the Redis key "spin-example" to value "Eureka!" - redis::set(&address, "spin-example", &b"Eureka!"[..]) + redis::set(&address, "spin-example", &"Eureka!".to_owned().into_bytes()) .map_err(|_| anyhow!("Error executing Redis set command"))?; // Set the Redis key "int-key" to value 0 - redis::set(&address, "int-key", format!("{:x}", 0).as_bytes()) + redis::set(&address, "int-key", &format!("{:x}", 0).into_bytes()) .map_err(|_| anyhow!("Error executing Redis set command"))?; let int_value = redis::incr(&address, "int-key") .map_err(|_| anyhow!("Error executing Redis incr command",))?; diff --git a/examples/spin-timer/Cargo.lock b/examples/spin-timer/Cargo.lock index 3566d9661..831c4ad1e 100644 --- a/examples/spin-timer/Cargo.lock +++ b/examples/spin-timer/Cargo.lock @@ -603,18 +603,16 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b9d1a9e776c27ad55d7792a380785d1fe8c2d7b099eed8dbd8f4af2b598192" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5528483314c2dd5da438576cd8a9d0b3cedad66fb8a4727f90cd319a81950038" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "bumpalo", "cranelift-bforest", @@ -633,33 +631,29 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f46a8318163f7682e35b8730ba93c1b586a2da8ce12a0ed545efc1218550f70" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d1239cfd50eecfaed468d46943f8650e32969591868ad50111613704da6c70" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "cranelift-control" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc530560c8f16cc1d4dd7ea000c56f519c60d1a914977abe849ce555c35a61d" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f333fa641a9ad2bff0b107767dcb972c18c2bfab7969805a1d7e42449ccb0408" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "serde", "serde_derive", @@ -667,9 +661,8 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abf6563015a80f03f8bc4df307d0a81363f4eb73108df3a34f6e66fb6d5307" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen", "log", @@ -679,15 +672,13 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eb29d0edc8a5c029ed0f7ca77501f272738e3c410020b4a00f42ffe8ad2a8aa" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "cranelift-native" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006056a7fa920870bad06bf8e1b3033d70cbb7ee625b035efa9d90882a931868" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen", "libc", @@ -696,9 +687,8 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.100.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b3d08c05f82903a1f6a04d89c4b9ecb47a4035710f89a39a21a147a80214672" +version = "0.102.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1109,6 +1099,12 @@ dependencies = [ "windows-sys 0.42.0", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.25" @@ -1703,18 +1699,6 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" -[[package]] -name = "is-terminal" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" -dependencies = [ - "hermit-abi 0.2.6", - "io-lifetimes 1.0.11", - "rustix 0.36.7", - "windows-sys 0.42.0", -] - [[package]] name = "itertools" version = "0.8.2" @@ -1759,9 +1743,9 @@ checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "ittapi" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e648c437172ce7d3ac35ca11a068755072054826fa455a916b43524fa4a62a7" +checksum = "25a5c0b993601cad796222ea076565c5d9f337d35592f8622c753724f06d7271" dependencies = [ "anyhow", "ittapi-sys", @@ -1770,9 +1754,9 @@ dependencies = [ [[package]] name = "ittapi-sys" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b32a4d23f72548178dde54f3c12c6b6a08598e25575c0d0fa5bd861e0dc1a5" +checksum = "cb7b5e473765060536a660eed127f758cf1a810c73e49063264959c60d1727d9" dependencies = [ "cc", ] @@ -1957,7 +1941,12 @@ version = "0.2.0-dev" source = "git+https://github.com/rustformers/llm?rev=2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663#2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663" dependencies = [ "llm-base", + "llm-bloom", + "llm-gpt2", + "llm-gptj", + "llm-gptneox", "llm-llama", + "llm-mpt", "serde", "tracing", ] @@ -1982,6 +1971,39 @@ dependencies = [ "tracing", ] +[[package]] +name = "llm-bloom" +version = "0.2.0-dev" +source = "git+https://github.com/rustformers/llm?rev=2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663#2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663" +dependencies = [ + "llm-base", +] + +[[package]] +name = "llm-gpt2" +version = "0.2.0-dev" +source = "git+https://github.com/rustformers/llm?rev=2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663#2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663" +dependencies = [ + "bytemuck", + "llm-base", +] + +[[package]] +name = "llm-gptj" +version = "0.2.0-dev" +source = "git+https://github.com/rustformers/llm?rev=2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663#2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663" +dependencies = [ + "llm-base", +] + +[[package]] +name = "llm-gptneox" +version = "0.2.0-dev" +source = "git+https://github.com/rustformers/llm?rev=2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663#2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663" +dependencies = [ + "llm-base", +] + [[package]] name = "llm-llama" version = "0.2.0-dev" @@ -1991,6 +2013,14 @@ dependencies = [ "tracing", ] +[[package]] +name = "llm-mpt" +version = "0.2.0-dev" +source = "git+https://github.com/rustformers/llm?rev=2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663#2f6ffd4435799ceaa1d1bcb5a8790e5b3e0c5663" +dependencies = [ + "llm-base", +] + [[package]] name = "llm-samplers" version = "0.0.6" @@ -2482,6 +2512,7 @@ dependencies = [ "spin-app", "spin-core", "spin-world", + "terminal", "tracing", "url", ] @@ -2631,6 +2662,16 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.0.0", +] + [[package]] name = "phf" version = "0.11.1" @@ -2982,9 +3023,9 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b4dcbd3a2ae7fb94b5813fa0e957c6ab51bf5d0a8ee1b69e0c2d0f1e6eb8485" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" dependencies = [ "hashbrown 0.13.2", "log", @@ -3340,9 +3381,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -3372,6 +3413,19 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_yaml" +version = "0.9.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "sha1" version = "0.6.1" @@ -3531,7 +3585,7 @@ dependencies = [ [[package]] name = "spin-componentize" version = "0.1.0" -source = "git+https://github.com/fermyon/spin-componentize?rev=0fa79bfc60f20c172213e2a2c34bd0b3168960b0#0fa79bfc60f20c172213e2a2c34bd0b3168960b0" +source = "git+https://github.com/fermyon/spin-componentize?rev=d687583d1cf36104044a1f32d72cb3de587e55aa#d687583d1cf36104044a1f32d72cb3de587e55aa" dependencies = [ "anyhow", "wasm-encoder", @@ -3654,6 +3708,7 @@ dependencies = [ "spin-core", "spin-llm", "spin-world", + "tracing", ] [[package]] @@ -3781,7 +3836,10 @@ dependencies = [ "toml", "tracing", "url", + "wasm-compose", "wasmtime", + "wit-component", + "wit-parser", ] [[package]] @@ -4373,6 +4431,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +[[package]] +name = "unsafe-libyaml" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" + [[package]] name = "untrusted" version = "0.7.1" @@ -4473,9 +4537,8 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-cap-std-sync" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec076cd75f207327f5bfaebb915ef03d82c3a01a6d9b5d0deb6eafffceab3095" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -4486,7 +4549,6 @@ dependencies = [ "fs-set-times", "io-extras", "io-lifetimes 2.0.2", - "is-terminal", "once_cell", "rustix 0.38.13", "system-interface", @@ -4497,9 +4559,8 @@ dependencies = [ [[package]] name = "wasi-common" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f391b334c783c1154369be62c31dc8598ffa1a6c34ea05d7f8cf0b18ce7c272" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -4517,9 +4578,8 @@ dependencies = [ [[package]] name = "wasi-tokio" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6de05e4d9f81b8e82672cff04bab4128a170274ed2c44ff4c9e36905aefcaf35" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cap-std", @@ -4598,20 +4658,39 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +[[package]] +name = "wasm-compose" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "464a6a72d5bff3bec4fc27d3512deb7271f5323e96c5c80e3c0d6f3b7353c4fc" +dependencies = [ + "anyhow", + "heck", + "indexmap 2.0.0", + "log", + "petgraph", + "serde", + "serde_yaml", + "smallvec", + "wasm-encoder", + "wasmparser", + "wat", +] + [[package]] name = "wasm-encoder" -version = "0.32.0" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba64e81215916eaeb48fee292f29401d69235d62d8b8fd92a7b2844ec5ae5f7" +checksum = "34180c89672b3e4825c3a8db4b61a674f1447afd5fe2445b2d22c3d8b6ea086c" dependencies = [ "leb128", ] [[package]] name = "wasm-metadata" -version = "0.10.3" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08dc59d1fa569150851542143ca79438ca56845ccb31696c70225c638e063471" +checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", "indexmap 2.0.0", @@ -4637,9 +4716,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.112.0" +version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e986b010f47fcce49cf8ea5d5f9e5d2737832f12b53ae8ae785bbe895d0877bf" +checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ "indexmap 2.0.0", "semver", @@ -4647,9 +4726,9 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.2.64" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ddf5892036cd4b780d505eff1194a0cbc10ed896097656fdcea3744b5e7c2f" +checksum = "537030718ce76e985896e91fe2cac77c1913c8dccd46eaf8ab1a4cd56d824cc3" dependencies = [ "anyhow", "wasmparser", @@ -4657,9 +4736,8 @@ dependencies = [ [[package]] name = "wasmtime" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ed7db409c1acf60d33128b2a38bee25aaf38c4bd955ab98a5b623c8294593c" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -4697,18 +4775,16 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53af0f8f6271bd687fe5632c8fe0a0f061d0aa1b99a0cd4e1df8e4cbeb809d2f" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41376a7c094335ee08abe6a4eff79a32510cc805a249eff1b5e7adf0a42e7cdf" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "base64 0.21.4", @@ -4726,9 +4802,8 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ab5b291f2dad56f1e6929cc61fb7cac68845766ca77c3838b5d05d82c33976" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "proc-macro2", @@ -4741,15 +4816,13 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21436177bf19f6b60dc0b83ad5872e849892a4a90c3572785e1a28c0e2e1132c" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "wasmtime-cranelift" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "920e42058862d1f7a3dd3fca73cb495a20d7506e3ada4bbc0a9780cd636da7ca" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cfg-if", @@ -4772,9 +4845,8 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516d63bbe18219e64a9705cf3a2c865afe1fb711454ea03091dc85a1d708194d" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-codegen", @@ -4788,9 +4860,8 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59cef239d663885f1427f8b8f4fde7be6075249c282580d94b480f11953ca194" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-entity", @@ -4811,9 +4882,8 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef118b557df6193cd82cfb45ab57cd12388fedfe2bb76f090b2d77c96c1b56e" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cc", "cfg-if", @@ -4825,9 +4895,8 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8089d5909b8f923aad57702ebaacb7b662aa9e43a3f71e83e025c5379a1205f" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "addr2line", "anyhow", @@ -4852,9 +4921,8 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b13924aedf6799ad66edb25500a20e3226629978b30a958c55285352bad130a" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "object", "once_cell", @@ -4864,9 +4932,8 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ff5f3707a5e3797deeeeac6ac26b2e1dd32dbc06693c0ab52e8ac4d18ec706" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cfg-if", "libc", @@ -4875,9 +4942,8 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ab4ce04ac05342edfa7f42895f2a5d8b16ee914330869acb865cd1facf265f" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cc", @@ -4905,9 +4971,8 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecf61e21d5bd95e1ad7fa42b7bdabe21220682d6a6046d376edca29760849222" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "cranelift-entity", "serde", @@ -4918,9 +4983,8 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe877472cbdd6d96b4ecdc112af764e3b9d58c2e4175a87828f892ab94c60643" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "proc-macro2", "quote", @@ -4929,9 +4993,8 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6db393deb775e8bece53a6869be6425e46b28426aa7709df8c529a19759f4be" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -4946,14 +5009,15 @@ dependencies = [ "futures", "io-extras", "io-lifetimes 2.0.2", - "is-terminal", "libc", + "log", "once_cell", "rustix 0.38.13", "system-interface", "thiserror", "tokio", "tracing", + "url", "wasi-cap-std-sync", "wasi-common", "wasi-tokio", @@ -4964,9 +5028,8 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bc5a770003807c55f2187a0092dea01722b0e24151e35816bd5091538bb8e88" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-codegen", @@ -4981,9 +5044,8 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62003d48822f89cc393e93643366ddbee1766779c0874353b8ba2ede4679fbf9" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "heck", @@ -4993,9 +5055,8 @@ dependencies = [ [[package]] name = "wasmtime-wmemcheck" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5412bb464066d64c3398c96e6974348f90fa2a55110ad7da3f9295438cd4de84" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" [[package]] name = "wast" @@ -5008,9 +5069,9 @@ dependencies = [ [[package]] name = "wast" -version = "64.0.0" +version = "66.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a259b226fd6910225aa7baeba82f9d9933b6d00f2ce1b49b80fa4214328237cc" +checksum = "0da7529bb848d58ab8bf32230fc065b363baee2bd338d5e58c589a1e7d83ad07" dependencies = [ "leb128", "memchr", @@ -5020,11 +5081,11 @@ dependencies = [ [[package]] name = "wat" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53253d920ab413fca1c7dc2161d601c79b4fdf631d0ba51dd4343bf9b556c3f6" +checksum = "4780374047c65b6b6e86019093fe80c18b66825eb684df778a4e068282a780e7" dependencies = [ - "wast 64.0.0", + "wast 66.0.0", ] [[package]] @@ -5058,9 +5119,8 @@ dependencies = [ [[package]] name = "wiggle" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da341f21516453768bd115bdc17b186c0a1ab6773c2b2eeab44a062db49bd616" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "async-trait", @@ -5073,9 +5133,8 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22c6bd943a4bae37052b79d249fb32d7afa22b3f6a147a5f2e7bc2b9f901879" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "heck", @@ -5088,9 +5147,8 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d72d838b7c9302b2ca7c44f36d6af5ce1988239a16deba951d99c4630d17caf" +version = "15.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "proc-macro2", "quote", @@ -5131,9 +5189,8 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50647204d600a2a112eefac0645ba6653809a15bd362c7e4e6a049a5bdff0de9" +version = "0.13.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "cranelift-codegen", @@ -5313,9 +5370,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.14.0" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d9f2d16dd55d1a372dcfd4b7a466ea876682a5a3cb97e71ec9eef04affa876" +checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -5331,9 +5388,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e8b849bea13cc2315426b16efe6eb6813466d78f5fde69b0bb150c9c40e0dc" +checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", @@ -5341,6 +5398,8 @@ dependencies = [ "log", "pulldown-cmark", "semver", + "serde", + "serde_json", "unicode-xid", "url", ] @@ -5348,8 +5407,7 @@ dependencies = [ [[package]] name = "witx" version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" dependencies = [ "anyhow", "log", diff --git a/examples/spin-timer/Cargo.toml b/examples/spin-timer/Cargo.toml index 875b1a620..62c9957ff 100644 --- a/examples/spin-timer/Cargo.toml +++ b/examples/spin-timer/Cargo.toml @@ -14,7 +14,7 @@ spin-core = { path = "../../crates/core" } spin-trigger = { path = "../../crates/trigger" } tokio = { version = "1.11", features = ["full"] } tokio-scoped = "0.2.0" -wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "7777d1f49f609b334a9ad98a16832b4af4683836", features = [ +wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", features = [ "component-model", ] } diff --git a/sdk/rust/macro/src/lib.rs b/sdk/rust/macro/src/lib.rs index 29634db44..7de49d739 100644 --- a/sdk/rust/macro/src/lib.rs +++ b/sdk/rust/macro/src/lib.rs @@ -1,33 +1,22 @@ use proc_macro::TokenStream; use quote::quote; +const WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wit"); + /// The entrypoint to a Spin HTTP component written in Rust. #[proc_macro_attribute] pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { let func = syn::parse_macro_input!(item as syn::ItemFn); let func_name = &func.sig.ident; - const HTTP_COMPONENT_WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wit"); + let preamble = preamble(); quote!( #func - mod __spin_http { - #![allow(missing_docs)] - ::spin_sdk::wit_bindgen::generate!({ - world: "exports", - path: #HTTP_COMPONENT_WIT_PATH, - runtime_path: "::spin_sdk::wit_bindgen::rt", - exports: { - "fermyon:spin/inbound-redis": Spin, - "fermyon:spin/inbound-http": Spin - } - }); - struct Spin; - use exports::fermyon::spin::{inbound_http, inbound_redis}; - - impl inbound_http::Guest for Spin { + #preamble + impl self::exports::fermyon::spin::inbound_http::Guest for Spin { // Implement the `handler` entrypoint for Spin HTTP components. - fn handle_request(req: inbound_http::Request) -> inbound_http::Response { + fn handle_request(req: self::exports::fermyon::spin::inbound_http::Request) -> self::exports::fermyon::spin::inbound_http::Response { match super::#func_name(req.try_into().expect("cannot convert from Spin HTTP request")) { Ok(resp) => resp.try_into().expect("cannot convert to Spin HTTP response"), Err(error) => { @@ -38,7 +27,7 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { eprintln!(" caused by: {}", s); source = s.source(); } - inbound_http::Response { + self::exports::fermyon::spin::inbound_http::Response { status: 500, headers: None, body: Some(body.as_bytes().to_vec()), @@ -48,8 +37,8 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { } } - impl inbound_redis::Guest for Spin { - fn handle_message(msg: inbound_redis::Payload) -> Result<(), inbound_redis::Error> { + impl self::exports::fermyon::spin::inbound_redis::Guest for Spin { + fn handle_message(msg: self::exports::fermyon::spin::inbound_redis::Payload) -> Result<(), self::exports::fermyon::spin::inbound_redis::Error> { unimplemented!("No implementation for inbound-redis#handle-message"); } } @@ -180,27 +169,25 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { pub fn redis_component(_attr: TokenStream, item: TokenStream) -> TokenStream { let func = syn::parse_macro_input!(item as syn::ItemFn); let func_name = &func.sig.ident; + let preamble = preamble(); quote!( #func - mod __spin_redis { - struct Spin; - ::spin_sdk::export_reactor!(Spin); - - impl ::spin_sdk::inbound_redis::InboundRedis for Spin { - fn handle_message(msg: ::spin_sdk::inbound_redis::Payload) -> Result<(), ::spin_sdk::redis::Error> { + #preamble + impl self::exports::fermyon::spin::inbound_redis::Guest for Spin { + fn handle_message(msg: self::exports::fermyon::spin::inbound_redis::Payload) -> Result<(), self::fermyon::spin::redis_types::Error> { match super::#func_name(msg.try_into().expect("cannot convert from Spin Redis payload")) { Ok(()) => Ok(()), Err(e) => { eprintln!("{}", e); - Err(::spin_sdk::redis::Error::Error) + Err(self::fermyon::spin::redis_types::Error::Error) }, } } } - impl ::spin_sdk::inbound_http::InboundHttp for Spin { - fn handle_request(req: ::spin_sdk::inbound_http::Request) -> ::spin_sdk::inbound_http::Response { + impl self::exports::fermyon::spin::inbound_http::Guest for Spin { + fn handle_request(req: self::exports::fermyon::spin::inbound_http::Request) -> self::exports::fermyon::spin::inbound_http::Response { unimplemented!("No implementation for inbound-http#handle-request"); } } @@ -208,3 +195,19 @@ pub fn redis_component(_attr: TokenStream, item: TokenStream) -> TokenStream { ) .into() } + +fn preamble() -> proc_macro2::TokenStream { + quote! { + #![allow(missing_docs)] + ::spin_sdk::wit_bindgen::generate!({ + world: "exports", + path: #WIT_PATH, + runtime_path: "::spin_sdk::wit_bindgen::rt", + exports: { + "fermyon:spin/inbound-redis": Spin, + "fermyon:spin/inbound-http": Spin + } + }); + struct Spin; + } +} From 23dee4b6db3be04d699cbaf8d9c15fde0524d840 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 14:52:33 +0200 Subject: [PATCH 21/31] Update wit-bindgen Signed-off-by: Ryan Levick --- Cargo.lock | 8 ++++---- crates/core/tests/core-wasi-test/Cargo.toml | 2 +- crates/redis/tests/rust/Cargo.lock | 8 ++++---- crates/redis/tests/rust/Cargo.toml | 2 +- .../trigger-http/benches/spin-http-benchmark/Cargo.toml | 2 +- crates/trigger-http/tests/rust-http-test/Cargo.toml | 2 +- examples/spin-timer/app-example/Cargo.lock | 8 ++++---- examples/spin-timer/app-example/Cargo.toml | 2 +- sdk/rust/Cargo.toml | 2 +- sdk/rust/macro/wit/{reactor.wit => world.wit} | 0 sdk/rust/src/key_value.rs | 8 ++------ sdk/rust/src/sqlite.rs | 5 +---- tests/http/headers-env-routes-test/Cargo.lock | 8 ++++---- tests/http/simple-spin-rust/Cargo.lock | 8 ++++---- 14 files changed, 29 insertions(+), 36 deletions(-) rename sdk/rust/macro/wit/{reactor.wit => world.wit} (100%) diff --git a/Cargo.lock b/Cargo.lock index ca4d048a6..cde6b847d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7836,7 +7836,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro 0.12.0", @@ -7856,7 +7856,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -7880,7 +7880,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck 0.4.1", @@ -7917,7 +7917,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/crates/core/tests/core-wasi-test/Cargo.toml b/crates/core/tests/core-wasi-test/Cargo.toml index 0d7515af4..b67bea22c 100644 --- a/crates/core/tests/core-wasi-test/Cargo.toml +++ b/crates/core/tests/core-wasi-test/Cargo.toml @@ -7,6 +7,6 @@ edition = "2021" debug = true [dependencies] -wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "46fba30bb667a3a4962f63b1cc28b84427b49114" } [workspace] diff --git a/crates/redis/tests/rust/Cargo.lock b/crates/redis/tests/rust/Cargo.lock index be4135c9c..47b9ba52e 100644 --- a/crates/redis/tests/rust/Cargo.lock +++ b/crates/redis/tests/rust/Cargo.lock @@ -323,7 +323,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -332,7 +332,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -342,7 +342,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -354,7 +354,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/crates/redis/tests/rust/Cargo.toml b/crates/redis/tests/rust/Cargo.toml index 4bb0f6845..e039c6627 100644 --- a/crates/redis/tests/rust/Cargo.toml +++ b/crates/redis/tests/rust/Cargo.toml @@ -8,6 +8,6 @@ authors = ["Radu Matei "] crate-type = ["cdylib"] [dependencies] -wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "46fba30bb667a3a4962f63b1cc28b84427b49114" } [workspace] diff --git a/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml b/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml index 878455bca..cd7133b77 100644 --- a/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml +++ b/crates/trigger-http/benches/spin-http-benchmark/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "46fba30bb667a3a4962f63b1cc28b84427b49114" } url = "2.4.1" [workspace] diff --git a/crates/trigger-http/tests/rust-http-test/Cargo.toml b/crates/trigger-http/tests/rust-http-test/Cargo.toml index e731155fd..d4b7960ff 100644 --- a/crates/trigger-http/tests/rust-http-test/Cargo.toml +++ b/crates/trigger-http/tests/rust-http-test/Cargo.toml @@ -8,6 +8,6 @@ authors = ["Radu Matei "] crate-type = ["cdylib"] [dependencies] -wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "46fba30bb667a3a4962f63b1cc28b84427b49114" } [workspace] diff --git a/examples/spin-timer/app-example/Cargo.lock b/examples/spin-timer/app-example/Cargo.lock index f02be2cf6..a05d34ef4 100644 --- a/examples/spin-timer/app-example/Cargo.lock +++ b/examples/spin-timer/app-example/Cargo.lock @@ -332,7 +332,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -341,7 +341,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -351,7 +351,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -363,7 +363,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/examples/spin-timer/app-example/Cargo.toml b/examples/spin-timer/app-example/Cargo.toml index 9277a4659..42d4484c2 100644 --- a/examples/spin-timer/app-example/Cargo.toml +++ b/examples/spin-timer/app-example/Cargo.toml @@ -9,6 +9,6 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "46fba30bb667a3a4962f63b1cc28b84427b49114" } [workspace] diff --git a/sdk/rust/Cargo.toml b/sdk/rust/Cargo.toml index 102fe467d..78514ad77 100644 --- a/sdk/rust/Cargo.toml +++ b/sdk/rust/Cargo.toml @@ -15,7 +15,7 @@ form_urlencoded = "1.0" http_types = { package = "http", version = "0.2" } spin-macro = { path = "macro" } thiserror = "1.0.37" -wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "bad91ec820adc9d4a6048a455c57f1d4138079ea" } +wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "46fba30bb667a3a4962f63b1cc28b84427b49114" } routefinder = "0.5.3" serde_json = { version = "1.0.96", optional = true } serde = { version = "1.0.163", optional = true } diff --git a/sdk/rust/macro/wit/reactor.wit b/sdk/rust/macro/wit/world.wit similarity index 100% rename from sdk/rust/macro/wit/reactor.wit rename to sdk/rust/macro/wit/world.wit diff --git a/sdk/rust/src/key_value.rs b/sdk/rust/src/key_value.rs index 5236d3fab..23c69e7b2 100644 --- a/sdk/rust/src/key_value.rs +++ b/sdk/rust/src/key_value.rs @@ -9,9 +9,8 @@ use super::wit::v2::key_value; #[cfg(feature = "json")] use serde::{de::DeserializeOwned, Serialize}; -/// An open key-value store -// TODO: use `#[doc(inline)]` as soon as wit-bindgen#688 is merged -pub use key_value::Store; +#[doc(inline)] +pub use key_value::{Error, Store}; impl Store { /// Open the default store. @@ -22,9 +21,6 @@ impl Store { } } -#[doc(inline)] -pub use key_value::Error; - impl Store { #[cfg(feature = "json")] /// Serialize the given data to JSON, then set it as the value for the specified `key`. diff --git a/sdk/rust/src/sqlite.rs b/sdk/rust/src/sqlite.rs index f8acf28f0..be7021a35 100644 --- a/sdk/rust/src/sqlite.rs +++ b/sdk/rust/src/sqlite.rs @@ -1,10 +1,7 @@ use super::wit::v2::sqlite; -/// Represents a store in which key value tuples may be placed -// TODO: use `#[doc(inline)]` as soon as wit-bindgen#688 is merged -pub use sqlite::Connection; #[doc(inline)] -pub use sqlite::{Error, QueryResult, RowResult, Value}; +pub use sqlite::{Connection, Error, QueryResult, RowResult, Value}; impl sqlite::Connection { /// Open a connection to the default database diff --git a/tests/http/headers-env-routes-test/Cargo.lock b/tests/http/headers-env-routes-test/Cargo.lock index 6bb1a70af..25eacd0ac 100644 --- a/tests/http/headers-env-routes-test/Cargo.lock +++ b/tests/http/headers-env-routes-test/Cargo.lock @@ -448,7 +448,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -457,7 +457,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -479,7 +479,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/tests/http/simple-spin-rust/Cargo.lock b/tests/http/simple-spin-rust/Cargo.lock index 5c69cb409..59843450b 100644 --- a/tests/http/simple-spin-rust/Cargo.lock +++ b/tests/http/simple-spin-rust/Cargo.lock @@ -456,7 +456,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -465,7 +465,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -475,7 +475,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -487,7 +487,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", From d5bc2de2992c5a0f19c40b685f6333811c32c084 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 15:03:59 +0200 Subject: [PATCH 22/31] Only export one export Signed-off-by: Ryan Levick --- examples/config-rust/Cargo.lock | 8 +++--- examples/http-rust/Cargo.lock | 8 +++--- examples/redis-rust/Cargo.lock | 8 +++--- examples/rust-outbound-pg/Cargo.lock | 8 +++--- examples/rust-outbound-redis/Cargo.lock | 8 +++--- sdk/rust/macro/src/lib.rs | 36 +++++++++++++------------ sdk/rust/macro/wit/world.wit | 5 +++- 7 files changed, 43 insertions(+), 38 deletions(-) diff --git a/examples/config-rust/Cargo.lock b/examples/config-rust/Cargo.lock index d9f0752e8..dcb9846e4 100644 --- a/examples/config-rust/Cargo.lock +++ b/examples/config-rust/Cargo.lock @@ -448,7 +448,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -457,7 +457,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -479,7 +479,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/examples/http-rust/Cargo.lock b/examples/http-rust/Cargo.lock index 0fb6cd29e..8100bdbcf 100644 --- a/examples/http-rust/Cargo.lock +++ b/examples/http-rust/Cargo.lock @@ -448,7 +448,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -457,7 +457,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -479,7 +479,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/examples/redis-rust/Cargo.lock b/examples/redis-rust/Cargo.lock index e983b1362..57d0ac89a 100644 --- a/examples/redis-rust/Cargo.lock +++ b/examples/redis-rust/Cargo.lock @@ -447,7 +447,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -456,7 +456,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -466,7 +466,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -478,7 +478,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/examples/rust-outbound-pg/Cargo.lock b/examples/rust-outbound-pg/Cargo.lock index 07e1e7475..b7c118f5e 100644 --- a/examples/rust-outbound-pg/Cargo.lock +++ b/examples/rust-outbound-pg/Cargo.lock @@ -448,7 +448,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -457,7 +457,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -479,7 +479,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/examples/rust-outbound-redis/Cargo.lock b/examples/rust-outbound-redis/Cargo.lock index cb9c19487..782ec93c4 100644 --- a/examples/rust-outbound-redis/Cargo.lock +++ b/examples/rust-outbound-redis/Cargo.lock @@ -448,7 +448,7 @@ dependencies = [ [[package]] name = "wit-bindgen" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", "wit-bindgen-rust-macro", @@ -457,7 +457,7 @@ dependencies = [ [[package]] name = "wit-bindgen-core" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "wit-component", @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "heck", @@ -479,7 +479,7 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" version = "0.12.0" -source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=bad91ec820adc9d4a6048a455c57f1d4138079ea#bad91ec820adc9d4a6048a455c57f1d4138079ea" +source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "anyhow", "proc-macro2", diff --git a/sdk/rust/macro/src/lib.rs b/sdk/rust/macro/src/lib.rs index 7de49d739..96a79d281 100644 --- a/sdk/rust/macro/src/lib.rs +++ b/sdk/rust/macro/src/lib.rs @@ -8,7 +8,7 @@ const WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wit"); pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { let func = syn::parse_macro_input!(item as syn::ItemFn); let func_name = &func.sig.ident; - let preamble = preamble(); + let preamble = preamble(Export::Http); quote!( #func @@ -37,12 +37,6 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { } } - impl self::exports::fermyon::spin::inbound_redis::Guest for Spin { - fn handle_message(msg: self::exports::fermyon::spin::inbound_redis::Payload) -> Result<(), self::exports::fermyon::spin::inbound_redis::Error> { - unimplemented!("No implementation for inbound-redis#handle-message"); - } - } - mod inbound_http_helpers { use super::fermyon::spin::http_types as spin_http_types; @@ -169,7 +163,7 @@ pub fn http_component(_attr: TokenStream, item: TokenStream) -> TokenStream { pub fn redis_component(_attr: TokenStream, item: TokenStream) -> TokenStream { let func = syn::parse_macro_input!(item as syn::ItemFn); let func_name = &func.sig.ident; - let preamble = preamble(); + let preamble = preamble(Export::Redis); quote!( #func @@ -186,26 +180,34 @@ pub fn redis_component(_attr: TokenStream, item: TokenStream) -> TokenStream { } } } - impl self::exports::fermyon::spin::inbound_http::Guest for Spin { - fn handle_request(req: self::exports::fermyon::spin::inbound_http::Request) -> self::exports::fermyon::spin::inbound_http::Response { - unimplemented!("No implementation for inbound-http#handle-request"); - } - } } ) .into() } -fn preamble() -> proc_macro2::TokenStream { +#[derive(Copy, Clone)] +enum Export { + Http, + Redis, +} + +fn preamble(export: Export) -> proc_macro2::TokenStream { + let export_decl = match export { + Export::Http => quote!("fermyon:spin/inbound-http": Spin), + Export::Redis => quote!("fermyon:spin/inbound-redis": Spin), + }; + let world = match export { + Export::Http => quote!("http-trigger"), + Export::Redis => quote!("redis-trigger"), + }; quote! { #![allow(missing_docs)] ::spin_sdk::wit_bindgen::generate!({ - world: "exports", + world: #world, path: #WIT_PATH, runtime_path: "::spin_sdk::wit_bindgen::rt", exports: { - "fermyon:spin/inbound-redis": Spin, - "fermyon:spin/inbound-http": Spin + #export_decl } }); struct Spin; diff --git a/sdk/rust/macro/wit/world.wit b/sdk/rust/macro/wit/world.wit index cc7503782..abd616d42 100644 --- a/sdk/rust/macro/wit/world.wit +++ b/sdk/rust/macro/wit/world.wit @@ -1,6 +1,9 @@ package fermyon:spin -world exports { +world http-trigger { export inbound-http +} + +world redis-trigger { export inbound-redis } From c5ff9ca978d3740f769f755558da33e051185992 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 15:06:30 +0200 Subject: [PATCH 23/31] Remove component composition for now Signed-off-by: Ryan Levick --- Cargo.lock | 158 +----------------- crates/spin-adapter/.vscode/settings.json | 3 - crates/spin-adapter/Cargo.toml | 20 --- crates/spin-adapter/src/lib.rs | 154 ----------------- .../wit/deps/spin-one/key-value.wit | 82 --------- .../spin-adapter/wit/deps/spin-one/sqlite.wit | 52 ------ .../wit/deps/spin-two/key-value.wit | 77 --------- .../spin-adapter/wit/deps/spin-two/sqlite.wit | 52 ------ crates/spin-adapter/wit/world.wit | 9 - crates/trigger/Cargo.toml | 6 +- crates/trigger/adapters/spin_adapter.wasm | Bin 3220493 -> 0 bytes crates/trigger/src/loader.rs | 74 -------- examples/spin-timer/Cargo.lock | 57 ------- 13 files changed, 6 insertions(+), 738 deletions(-) delete mode 100644 crates/spin-adapter/.vscode/settings.json delete mode 100644 crates/spin-adapter/Cargo.toml delete mode 100644 crates/spin-adapter/src/lib.rs delete mode 100644 crates/spin-adapter/wit/deps/spin-one/key-value.wit delete mode 100644 crates/spin-adapter/wit/deps/spin-one/sqlite.wit delete mode 100644 crates/spin-adapter/wit/deps/spin-two/key-value.wit delete mode 100644 crates/spin-adapter/wit/deps/spin-two/sqlite.wit delete mode 100644 crates/spin-adapter/wit/world.wit delete mode 100755 crates/trigger/adapters/spin_adapter.wasm diff --git a/Cargo.lock b/Cargo.lock index cde6b847d..924ea7d9a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -771,30 +771,6 @@ dependencies = [ "winx", ] -[[package]] -name = "cargo-component-bindings" -version = "0.1.0" -source = "git+https://github.com/bytecodealliance/cargo-component?rev=86ccf3e9e57885784d5a32dcbb162813d5c820ba#86ccf3e9e57885784d5a32dcbb162813d5c820ba" -dependencies = [ - "cargo-component-macro", - "wit-bindgen 0.11.0", -] - -[[package]] -name = "cargo-component-macro" -version = "0.1.0" -source = "git+https://github.com/bytecodealliance/cargo-component?rev=86ccf3e9e57885784d5a32dcbb162813d5c820ba#86ccf3e9e57885784d5a32dcbb162813d5c820ba" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.29", - "wit-bindgen-core 0.11.0", - "wit-bindgen-rust 0.11.0", - "wit-bindgen-rust-lib", - "wit-component", -] - [[package]] name = "cargo-target-dep" version = "0.1.0" @@ -1838,12 +1814,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.25" @@ -4159,16 +4129,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "petgraph" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" -dependencies = [ - "fixedbitset", - "indexmap 2.0.0", -] - [[package]] name = "phf" version = "0.11.1" @@ -5150,19 +5110,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yaml" -version = "0.9.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" -dependencies = [ - "indexmap 2.0.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "sha1" version = "0.6.1" @@ -5379,13 +5326,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -[[package]] -name = "spin-adapter" -version = "2.0.0-pre0" -dependencies = [ - "cargo-component-bindings", -] - [[package]] name = "spin-app" version = "2.0.0-pre0" @@ -5822,7 +5762,7 @@ dependencies = [ "serde_json", "spin-macro", "thiserror", - "wit-bindgen 0.12.0", + "wit-bindgen", ] [[package]] @@ -5962,10 +5902,7 @@ dependencies = [ "toml 0.5.11", "tracing", "url", - "wasm-compose", "wasmtime", - "wit-component", - "wit-parser", ] [[package]] @@ -6755,12 +6692,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" -[[package]] -name = "unsafe-libyaml" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" - [[package]] name = "untrusted" version = "0.7.1" @@ -7011,25 +6942,6 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" -[[package]] -name = "wasm-compose" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a6a72d5bff3bec4fc27d3512deb7271f5323e96c5c80e3c0d6f3b7353c4fc" -dependencies = [ - "anyhow", - "heck 0.4.1", - "indexmap 2.0.0", - "log", - "petgraph", - "serde", - "serde_yaml", - "smallvec", - "wasm-encoder", - "wasmparser", - "wat", -] - [[package]] name = "wasm-encoder" version = "0.33.2" @@ -7823,34 +7735,13 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "wit-bindgen" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" -dependencies = [ - "bitflags 2.4.0", - "wit-bindgen-rust-macro 0.11.0", -] - [[package]] name = "wit-bindgen" version = "0.12.0" source = "git+https://github.com/bytecodealliance/wit-bindgen?rev=46fba30bb667a3a4962f63b1cc28b84427b49114#46fba30bb667a3a4962f63b1cc28b84427b49114" dependencies = [ "bitflags 2.4.0", - "wit-bindgen-rust-macro 0.12.0", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" -dependencies = [ - "anyhow", - "wit-component", - "wit-parser", + "wit-bindgen-rust-macro", ] [[package]] @@ -7863,20 +7754,6 @@ dependencies = [ "wit-parser", ] -[[package]] -name = "wit-bindgen-rust" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" -dependencies = [ - "anyhow", - "heck 0.4.1", - "wasm-metadata", - "wit-bindgen-core 0.11.0", - "wit-bindgen-rust-lib", - "wit-component", -] - [[package]] name = "wit-bindgen-rust" version = "0.12.0" @@ -7885,32 +7762,7 @@ dependencies = [ "anyhow", "heck 0.4.1", "wasm-metadata", - "wit-bindgen-core 0.12.0", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" -dependencies = [ - "heck 0.4.1", - "wit-bindgen-core 0.11.0", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" -dependencies = [ - "anyhow", - "proc-macro2", - "syn 2.0.29", - "wit-bindgen-core 0.11.0", - "wit-bindgen-rust 0.11.0", - "wit-bindgen-rust-lib", + "wit-bindgen-core", "wit-component", ] @@ -7923,8 +7775,8 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.29", - "wit-bindgen-core 0.12.0", - "wit-bindgen-rust 0.12.0", + "wit-bindgen-core", + "wit-bindgen-rust", "wit-component", ] diff --git a/crates/spin-adapter/.vscode/settings.json b/crates/spin-adapter/.vscode/settings.json deleted file mode 100644 index 35e43fe7c..000000000 --- a/crates/spin-adapter/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "rust-analyzer.check.overrideCommand": ["cargo", "component", "check", "--message-format=json"] -} diff --git a/crates/spin-adapter/Cargo.toml b/crates/spin-adapter/Cargo.toml deleted file mode 100644 index 7a26d8601..000000000 --- a/crates/spin-adapter/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "spin-adapter" -version.workspace = true -authors.workspace = true -edition.workspace = true - -[dependencies] -cargo-component-bindings = { git = "https://github.com/bytecodealliance/cargo-component", rev = "86ccf3e9e57885784d5a32dcbb162813d5c820ba" } - -[lib] -crate-type = ["cdylib"] - -[package.metadata.component] -package = "component:spin-adapter" - -[package.metadata.component.dependencies] - -[package.metadata.component.target.dependencies] -"fermyon:spin-two" = { path = "wit/deps/spin-two" } -"fermyon:spin-one" = { path = "wit/deps/spin-one" } diff --git a/crates/spin-adapter/src/lib.rs b/crates/spin-adapter/src/lib.rs deleted file mode 100644 index ac470ecbd..000000000 --- a/crates/spin-adapter/src/lib.rs +++ /dev/null @@ -1,154 +0,0 @@ -cargo_component_bindings::generate!(); - -use std::mem::ManuallyDrop; - -use bindings::exports::fermyon::spin_one::{key_value, sqlite}; - -use bindings::fermyon::spin_two; - -struct Component; - -impl From for key_value::Error { - fn from(value: spin_two::key_value::Error) -> Self { - match value { - spin_two::key_value::Error::StoreTableFull => Self::StoreTableFull, - spin_two::key_value::Error::NoSuchStore => Self::NoSuchStore, - spin_two::key_value::Error::AccessDenied => Self::AccessDenied, - spin_two::key_value::Error::InvalidStore => Self::InvalidStore, - spin_two::key_value::Error::NoSuchKey => Self::NoSuchKey, - spin_two::key_value::Error::Io(s) => Self::Io(s), - } - } -} - -impl key_value::Guest for Component { - fn open(name: String) -> Result { - let store = - spin_two::key_value::Store::open(&name).map_err::(From::from)?; - let handle = store.handle(); - // Forget the store so that we don't run the destructor - std::mem::forget(store); - Ok(handle) - } - - fn get(store: key_value::Store, key: String) -> Result, key_value::Error> { - let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); - store.get(&key).map_err::(From::from) - } - - fn set(store: key_value::Store, key: String, value: Vec) -> Result<(), key_value::Error> { - let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); - store - .set(&key, &value) - .map_err::(From::from) - } - - fn delete(store: key_value::Store, key: String) -> Result<(), key_value::Error> { - let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); - store - .delete(&key) - .map_err::(From::from) - } - - fn exists(store: key_value::Store, key: String) -> Result { - let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); - store - .exists(&key) - .map_err::(From::from) - } - - fn get_keys(store: key_value::Store) -> Result, key_value::Error> { - let store = ManuallyDrop::new(unsafe { spin_two::key_value::Store::from_handle(store) }); - store.get_keys().map_err::(From::from) - } - - fn close(store: key_value::Store) { - // Run the destructor - let _ = unsafe { spin_two::key_value::Store::from_handle(store) }; - } -} - -impl From for sqlite::Error { - fn from(value: spin_two::sqlite::Error) -> Self { - match value { - spin_two::sqlite::Error::NoSuchDatabase => Self::NoSuchDatabase, - spin_two::sqlite::Error::AccessDenied => Self::AccessDenied, - spin_two::sqlite::Error::InvalidConnection => Self::InvalidConnection, - spin_two::sqlite::Error::DatabaseFull => Self::DatabaseFull, - spin_two::sqlite::Error::Io(s) => Self::Io(s), - } - } -} - -impl From for spin_two::sqlite::Value { - fn from(value: sqlite::Value) -> Self { - match value { - sqlite::Value::Integer(i) => Self::Integer(i), - sqlite::Value::Real(r) => Self::Real(r), - sqlite::Value::Text(t) => Self::Text(t), - sqlite::Value::Blob(b) => Self::Blob(b), - sqlite::Value::Null => Self::Null, - } - } -} - -impl From for sqlite::QueryResult { - fn from(query_result: spin_two::sqlite::QueryResult) -> Self { - Self { - columns: query_result.columns, - rows: query_result.rows.into_iter().map(From::from).collect(), - } - } -} - -impl From for sqlite::RowResult { - fn from(row_result: spin_two::sqlite::RowResult) -> Self { - Self { - values: row_result.values.into_iter().map(From::from).collect(), - } - } -} - -impl From for sqlite::Value { - fn from(value: spin_two::sqlite::Value) -> Self { - match value { - spin_two::sqlite::Value::Integer(i) => Self::Integer(i), - spin_two::sqlite::Value::Real(r) => Self::Real(r), - spin_two::sqlite::Value::Text(t) => Self::Text(t), - spin_two::sqlite::Value::Blob(b) => Self::Blob(b), - spin_two::sqlite::Value::Null => Self::Null, - } - } -} - -impl sqlite::Guest for Component { - fn open(database: String) -> Result { - let connection = spin_two::sqlite::Connection::open(&database) - .map_err::(From::from)?; - let handle = connection.handle(); - // Forget the connection so that we don't run the destructor - std::mem::forget(connection); - Ok(handle) - } - - fn execute( - conn: sqlite::Connection, - statement: String, - parameters: Vec, - ) -> Result { - let conn = - std::mem::ManuallyDrop::new(unsafe { spin_two::sqlite::Connection::from_handle(conn) }); - let result = conn - .execute( - &statement, - ¶meters.into_iter().map(From::from).collect::>(), - ) - .map_err::(From::from)?; - Ok(result.into()) - } - - fn close(conn: sqlite::Connection) { - // Run the destructor - let _ = unsafe { spin_two::sqlite::Connection::from_handle(conn) }; - } -} diff --git a/crates/spin-adapter/wit/deps/spin-one/key-value.wit b/crates/spin-adapter/wit/deps/spin-one/key-value.wit deleted file mode 100644 index 0738bf542..000000000 --- a/crates/spin-adapter/wit/deps/spin-one/key-value.wit +++ /dev/null @@ -1,82 +0,0 @@ -package fermyon:spin-one - -interface key-value { - // A handle to an open key-value store - type store = u32 - - // The set of errors which may be raised by functions in this interface - variant error { - // Too many stores have been opened simultaneously. Closing one or more - // stores prior to retrying may address this. - store-table-full, - - // The host does not recognize the store name requested. Defining and - // configuring a store with that name in a runtime configuration file - // may address this. - no-such-store, - - // The requesting component does not have access to the specified store - // (which may or may not exist). - access-denied, - - // The store handle provided is not recognized, i.e. it was either never - // opened or has been closed. - invalid-store, - - // No key-value tuple exists for the specified key in the specified - // store. - no-such-key, - - // Some implementation-specific error has occurred (e.g. I/O) - io(string) - } - - // Open the store with the specified name. - // - // If `name` is "default", the default store is opened. Otherwise, - // `name` must refer to a store defined and configured in a runtime - // configuration file supplied with the application. - // - // `error::no-such-store` will be raised if the `name` is not recognized. - open: func(name: string) -> result - - // Get the value associated with the specified `key` from the specified - // `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store, and `error::no-such-key` will be raised if there is no - // tuple for `key` in `store`. - get: func(store: store, key: string) -> result, error> - - // Set the `value` associated with the specified `key` in the specified - // `store`, overwriting any existing value. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. - set: func(store: store, key: string, value: list) -> result<_, error> - - // Delete the tuple with the specified `key` from the specified `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. No error is raised if a tuple did not previously - // exist for `key`. - delete: func(store: store, key: string) -> result<_, error> - - // Return whether a tuple exists for the specified `key` in the specified - // `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. - exists: func(store: store, key: string) -> result - - // Return a list of all the keys in the specified `store`. - // - // `error::invalid-store` will be raised if `store` is not a valid handle - // to an open store. - get-keys: func(store: store) -> result, error> - - // Close the specified `store`. - // - // This has no effect if `store` is not a valid handle to an open store. - close: func(store: store) -} diff --git a/crates/spin-adapter/wit/deps/spin-one/sqlite.wit b/crates/spin-adapter/wit/deps/spin-one/sqlite.wit deleted file mode 100644 index 8d802edf8..000000000 --- a/crates/spin-adapter/wit/deps/spin-one/sqlite.wit +++ /dev/null @@ -1,52 +0,0 @@ -interface sqlite { - // A handle to an open sqlite instance - type connection = u32 - - // The set of errors which may be raised by functions in this interface - variant error { - // The host does not recognize the database name requested. - no-such-database, - // The requesting component does not have access to the specified database (which may or may not exist). - access-denied, - // The provided connection is not valid - invalid-connection, - // The database has reached its capacity - database-full, - // Some implementation-specific error has occurred (e.g. I/O) - io(string) - } - - // Open a connection to a named database instance. - // - // If `database` is "default", the default instance is opened. - // - // `error::no-such-database` will be raised if the `name` is not recognized. - open: func(database: string) -> result - - // Execute a statement returning back data if there is any - execute: func(conn: connection, statement: string, parameters: list) -> result - - // Close the specified `connection`. - close: func(conn: connection) - - // A result of a query - record query-result { - // The names of the columns retrieved in the query - columns: list, - // the row results each containing the values for all the columns for a given row - rows: list, - } - - // A set of values for each of the columns in a query-result - record row-result { - values: list - } - - variant value { - integer(s64), - real(float64), - text(string), - blob(list), - null - } -} diff --git a/crates/spin-adapter/wit/deps/spin-two/key-value.wit b/crates/spin-adapter/wit/deps/spin-two/key-value.wit deleted file mode 100644 index 7ec22b01a..000000000 --- a/crates/spin-adapter/wit/deps/spin-two/key-value.wit +++ /dev/null @@ -1,77 +0,0 @@ -package fermyon:spin-two - -interface key-value { - /// An open key-value store - resource store { - /// Open the store with the specified name. - /// - /// If `name` is "default", the default store is opened. Otherwise, - /// `name` must refer to a store defined and configured in a runtime - /// configuration file supplied with the application. - /// - /// `error::no-such-store` will be raised if the `name` is not recognized. - open: static func(name: string) -> result - - /// Get the value associated with the specified `key` from the specified - /// `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store, and `error::no-such-key` will be raised if there is no - /// tuple for `key` in `store`. - get: func(key: string) -> result, error> - - /// Set the `value` associated with the specified `key` in the specified - /// `store`, overwriting any existing value. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. - set: func(key: string, value: list) -> result<_, error> - - /// Delete the tuple with the specified `key` from the specified `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. No error is raised if a tuple did not previously - /// exist for `key`. - delete: func(key: string) -> result<_, error> - - /// Return whether a tuple exists for the specified `key` in the specified - /// `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. - exists: func(key: string) -> result - - /// Return a list of all the keys in the specified `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. - get-keys: func() -> result, error> - } - - /// The set of errors which may be raised by functions in this interface - variant error { - /// Too many stores have been opened simultaneously. Closing one or more - /// stores prior to retrying may address this. - store-table-full, - - /// The host does not recognize the store name requested. Defining and - /// configuring a store with that name in a runtime configuration file - /// may address this. - no-such-store, - - /// The requesting component does not have access to the specified store - /// (which may or may not exist). - access-denied, - - /// The store handle provided is not recognized, i.e. it was either never - /// opened or has been closed. - invalid-store, - - /// No key-value tuple exists for the specified key in the specified - /// store. - no-such-key, - - /// Some implementation-specific error has occurred (e.g. I/O) - io(string) - } -} diff --git a/crates/spin-adapter/wit/deps/spin-two/sqlite.wit b/crates/spin-adapter/wit/deps/spin-two/sqlite.wit deleted file mode 100644 index bf8245c99..000000000 --- a/crates/spin-adapter/wit/deps/spin-two/sqlite.wit +++ /dev/null @@ -1,52 +0,0 @@ -package fermyon:spin-two - -interface sqlite { - /// A handle to an open sqlite instance - resource connection { - /// Open a connection to a named database instance. - /// - /// If `database` is "default", the default instance is opened. - /// - /// `error::no-such-database` will be raised if the `name` is not recognized. - open: static func(database: string) -> result - - /// Execute a statement returning back data if there is any - execute: func(statement: string, parameters: list) -> result - } - - /// The set of errors which may be raised by functions in this interface - variant error { - /// The host does not recognize the database name requested. - no-such-database, - /// The requesting component does not have access to the specified database (which may or may not exist). - access-denied, - /// The provided connection is not valid - invalid-connection, - /// The database has reached its capacity - database-full, - /// Some implementation-specific error has occurred (e.g. I/O) - io(string) - } - - /// A result of a query - record query-result { - /// The names of the columns retrieved in the query - columns: list, - /// the row results each containing the values for all the columns for a given row - rows: list, - } - - /// A set of values for each of the columns in a query-result - record row-result { - values: list - } - - /// A single column's result from a database query - variant value { - integer(s64), - real(float64), - text(string), - blob(list), - null - } -} diff --git a/crates/spin-adapter/wit/world.wit b/crates/spin-adapter/wit/world.wit deleted file mode 100644 index b7d208530..000000000 --- a/crates/spin-adapter/wit/world.wit +++ /dev/null @@ -1,9 +0,0 @@ -package example:spin-adapter - -world adapter { - import fermyon:spin-two/sqlite - import fermyon:spin-two/key-value - - export fermyon:spin-one/sqlite - export fermyon:spin-one/key-value -} diff --git a/crates/trigger/Cargo.toml b/crates/trigger/Cargo.toml index 957236249..d9acdfae2 100644 --- a/crates/trigger/Cargo.toml +++ b/crates/trigger/Cargo.toml @@ -49,10 +49,6 @@ url = "2" wasmtime = { workspace = true } spin-componentize = { workspace = true } -wit-component = "0.14.5" -wit-parser = "0.11.3" -wasm-compose = "0.4.7" - [dev-dependencies] libtest-mimic = "0.6.1" snapbox = "0.4.12" @@ -63,4 +59,4 @@ tokio = { version = "1.23", features = ["rt", "macros"] } [[test]] name = "ui" path = "tests/ui.rs" -harness = false \ No newline at end of file +harness = false diff --git a/crates/trigger/adapters/spin_adapter.wasm b/crates/trigger/adapters/spin_adapter.wasm deleted file mode 100755 index 353b1503ef969660f1ad8c7defaad6646aff6b18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3220493 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 z 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 O39h=r5;| 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

0#|625x{1r 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≤$C*85bD$;BLylL-q8BwfxBR5taZLj$wA&7R` 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

^^S+)1-95(!8 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�*t33mw0@ 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 z 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

nLX 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�=3LIpvR8(j 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 anyhow::Result> { - let mut resolve = wit_parser::Resolve::new(); - const SPIN_WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wit"); - resolve.push_dir(std::path::Path::new(SPIN_WIT_PATH))?; - let pkg = resolve - .package_names - .get(&PackageName { - namespace: "fermyon".into(), - name: "spin".into(), - version: None, - }) - .unwrap(); - let spin_world = resolve.select_world(*pkg, Some("platform"))?; - const WASI_WIT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/wasi"); - resolve.push_dir(std::path::Path::new(WASI_WIT_PATH))?; - let pkg = resolve - .package_names - .get(&PackageName { - namespace: "wasmtime".into(), - name: "wasi".into(), - version: None, - }) - .unwrap(); - let wasi_world = resolve.select_world(*pkg, Some("preview1-adapter-reactor"))?; - resolve.merge_worlds(wasi_world, spin_world)?; - // We assume `component` is a valid component and so the only failure possible from `targets` - // is if the component does not conform to the world - if std::env::var_os("SPIN_COMPOSE").is_none() - || wit_component::targets(&resolve, spin_world, component).is_ok() - { - return Ok(std::borrow::Cow::Borrowed(component)); - } - - // Now we compose the incoming component with an adapter component - // The adapter component exports the Spin 1.5 world and imports the Spin 2.0 world - // The exports of the adapter fill the incoming component's imports leaving a component - // that is 2.0 compatible - const VIRT_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/adapters/spin_adapter.wasm"); - let temp = std::env::temp_dir(); - let tmp_component = temp.join("component.wasm"); - - std::fs::write(&tmp_component, component)?; - let bytes = wasm_compose::composer::ComponentComposer::new( - &tmp_component, - &wasm_compose::config::Config { - definitions: vec![VIRT_PATH.into()], - instantiations: [ - ( - "fermyon:spin/key-value".to_owned(), - wasm_compose::config::Instantiation { - dependency: Some("spin_adapter".into()), - ..Default::default() - }, - ), - ( - "fermyon:spin/sqlite".to_owned(), - wasm_compose::config::Instantiation { - dependency: Some("spin_adapter".into()), - ..Default::default() - }, - ), - ] - .into_iter() - .collect(), - ..Default::default() - }, - ) - .compose() - .context("failed to compose with adapter")?; - Ok(std::borrow::Cow::Owned(bytes)) -} diff --git a/examples/spin-timer/Cargo.lock b/examples/spin-timer/Cargo.lock index 831c4ad1e..bb7494bf8 100644 --- a/examples/spin-timer/Cargo.lock +++ b/examples/spin-timer/Cargo.lock @@ -1099,12 +1099,6 @@ dependencies = [ "windows-sys 0.42.0", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.25" @@ -2662,16 +2656,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" -[[package]] -name = "petgraph" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" -dependencies = [ - "fixedbitset", - "indexmap 2.0.0", -] - [[package]] name = "phf" version = "0.11.1" @@ -3413,19 +3397,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yaml" -version = "0.9.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" -dependencies = [ - "indexmap 2.0.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "sha1" version = "0.6.1" @@ -3836,10 +3807,7 @@ dependencies = [ "toml", "tracing", "url", - "wasm-compose", "wasmtime", - "wit-component", - "wit-parser", ] [[package]] @@ -4431,12 +4399,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" -[[package]] -name = "unsafe-libyaml" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" - [[package]] name = "untrusted" version = "0.7.1" @@ -4658,25 +4620,6 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" -[[package]] -name = "wasm-compose" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a6a72d5bff3bec4fc27d3512deb7271f5323e96c5c80e3c0d6f3b7353c4fc" -dependencies = [ - "anyhow", - "heck", - "indexmap 2.0.0", - "log", - "petgraph", - "serde", - "serde_yaml", - "smallvec", - "wasm-encoder", - "wasmparser", - "wat", -] - [[package]] name = "wasm-encoder" version = "0.33.2" From 77be537d175395da46f0ff862e72c6584b10c15f Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 15:15:15 +0200 Subject: [PATCH 24/31] Some small clean up Signed-off-by: Ryan Levick --- crates/key-value/src/host_component.rs | 8 ++++---- crates/key-value/src/lib.rs | 26 ++++++++++---------------- crates/sqlite/src/lib.rs | 6 +----- sdk/rust/src/http/router.rs | 2 +- 4 files changed, 16 insertions(+), 26 deletions(-) diff --git a/crates/key-value/src/host_component.rs b/crates/key-value/src/host_component.rs index b06e95be1..2c16ea89d 100644 --- a/crates/key-value/src/host_component.rs +++ b/crates/key-value/src/host_component.rs @@ -1,4 +1,4 @@ -use crate::{KeyValueDispatch, LegacyDispatch, StoreManager, KEY_VALUE_STORES_KEY}; +use crate::{KeyValueDispatch, StoreManager, KEY_VALUE_STORES_KEY}; use anyhow::anyhow; use spin_app::{AppComponent, DynamicHostComponent}; use spin_core::HostComponent; @@ -112,7 +112,7 @@ impl LegacyKeyValueComponent { } impl HostComponent for LegacyKeyValueComponent { - type Data = LegacyDispatch; + type Data = KeyValueDispatch; fn add_to_linker( linker: &mut spin_core::Linker, @@ -122,13 +122,13 @@ impl HostComponent for LegacyKeyValueComponent { } fn build_data(&self) -> Self::Data { - LegacyDispatch(KeyValueDispatch::new_with_capacity(self.0.capacity)) + self.0.build_data() } } impl DynamicHostComponent for LegacyKeyValueComponent { fn update_data(&self, data: &mut Self::Data, component: &AppComponent) -> anyhow::Result<()> { - self.0.update_data(&mut data.0, component) + self.0.update_data(data, component) } fn validate_app(&self, app: &spin_app::App) -> anyhow::Result<()> { diff --git a/crates/key-value/src/lib.rs b/crates/key-value/src/lib.rs index b121cba75..b61bb88c2 100644 --- a/crates/key-value/src/lib.rs +++ b/crates/key-value/src/lib.rs @@ -1,7 +1,7 @@ use anyhow::Result; use spin_app::MetadataKey; use spin_core::{async_trait, wasmtime::component::Resource}; -use spin_world::v2::key_value::{self, HostStore}; +use spin_world::v2::key_value; use std::{collections::HashSet, sync::Arc}; use table::Table; @@ -16,7 +16,7 @@ pub const KEY_VALUE_STORES_KEY: MetadataKey> = MetadataKey::new("key const DEFAULT_STORE_TABLE_CAPACITY: u32 = 256; -pub use key_value::{Error, Store as StoreHandle}; +pub use key_value::Error; #[async_trait] pub trait StoreManager: Sync + Send { @@ -27,13 +27,9 @@ pub trait StoreManager: Sync + Send { #[async_trait] pub trait Store: Sync + Send { async fn get(&self, key: &str) -> Result, Error>; - async fn set(&self, key: &str, value: &[u8]) -> Result<(), Error>; - async fn delete(&self, key: &str) -> Result<(), Error>; - async fn exists(&self, key: &str) -> Result; - async fn get_keys(&self) -> Result, Error>; } @@ -176,8 +172,6 @@ pub fn log_error(err: impl std::fmt::Debug) -> Error { use spin_world::v1::key_value::Error as LegacyError; -pub struct LegacyDispatch(KeyValueDispatch); - fn to_legacy_error(value: key_value::Error) -> LegacyError { match value { Error::StoreTableFull => LegacyError::StoreTableFull, @@ -190,15 +184,15 @@ fn to_legacy_error(value: key_value::Error) -> LegacyError { } #[async_trait] -impl spin_world::v1::key_value::Host for LegacyDispatch { +impl spin_world::v1::key_value::Host for KeyValueDispatch { async fn open(&mut self, name: String) -> Result> { - let result = self.0.open(name).await?; + let result = ::open(self, name).await?; Ok(result.map_err(to_legacy_error).map(|s| s.rep())) } async fn get(&mut self, store: u32, key: String) -> Result, LegacyError>> { let this = Resource::new_borrow(store); - let result = self.0.get(this, key).await?; + let result = ::get(self, this, key).await?; Ok(result.map_err(to_legacy_error)) } @@ -209,30 +203,30 @@ impl spin_world::v1::key_value::Host for LegacyDispatch { value: Vec, ) -> Result> { let this = Resource::new_borrow(store); - let result = self.0.set(this, key, value).await?; + let result = ::set(self, this, key, value).await?; Ok(result.map_err(to_legacy_error)) } async fn delete(&mut self, store: u32, key: String) -> Result> { let this = Resource::new_borrow(store); - let result = self.0.delete(this, key).await?; + let result = ::delete(self, this, key).await?; Ok(result.map_err(to_legacy_error)) } async fn exists(&mut self, store: u32, key: String) -> Result> { let this = Resource::new_borrow(store); - let result = self.0.exists(this, key).await?; + let result = ::exists(self, this, key).await?; Ok(result.map_err(to_legacy_error)) } async fn get_keys(&mut self, store: u32) -> Result, LegacyError>> { let this = Resource::new_borrow(store); - let result = self.0.get_keys(this).await?; + let result = ::get_keys(self, this).await?; Ok(result.map_err(to_legacy_error)) } async fn close(&mut self, store: u32) -> Result<()> { let this = Resource::new_borrow(store); - self.0.drop(this) + ::drop(self, this) } } diff --git a/crates/sqlite/src/lib.rs b/crates/sqlite/src/lib.rs index 6c15d1813..6edf3ff43 100644 --- a/crates/sqlite/src/lib.rs +++ b/crates/sqlite/src/lib.rs @@ -121,11 +121,7 @@ impl spin_world::v1::sqlite::Host for SqliteDispatch { database: String, ) -> anyhow::Result> { let result = ::open(self, database).await?; - Ok(result.map_err(to_legacy_error).map(|s| { - let rep = s.rep(); - std::mem::forget(s); - rep - })) + Ok(result.map_err(to_legacy_error).map(|s| s.rep())) } async fn execute( diff --git a/sdk/rust/src/http/router.rs b/sdk/rust/src/http/router.rs index 2aa8c92c7..56b17b481 100644 --- a/sdk/rust/src/http/router.rs +++ b/sdk/rust/src/http/router.rs @@ -117,7 +117,7 @@ impl Router { { self.methods_map .entry(method) - .or_insert_with(MethodRouter::new) + .or_default() .add(path, Box::new(handler)) .unwrap(); } From c69d5dd98f04f8e900220d0be438d751125eeed8 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 15:21:34 +0200 Subject: [PATCH 25/31] Get rid of TODO Signed-off-by: Ryan Levick --- crates/core/src/store.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/crates/core/src/store.rs b/crates/core/src/store.rs index ad32934e0..9d2e2454b 100644 --- a/crates/core/src/store.rs +++ b/crates/core/src/store.rs @@ -363,8 +363,7 @@ impl StoreBuilder { /// /// If `T: Default`, it may be preferable to use [`Store::build`]. pub fn build_with_data(self, inner_data: T) -> Result> { - let mut table = wasi_preview2::Table::new(); - let wasi = self.wasi.map_err(anyhow::Error::msg)?.build(&mut table)?; + let wasi = self.wasi.map_err(anyhow::Error::msg)?.build(); let mut inner = wasmtime::Store::new( &self.engine, @@ -373,7 +372,7 @@ impl StoreBuilder { wasi, host_components_data: self.host_components_data, store_limits: self.store_limits, - table, + table: wasi_preview2::Table::new(), }, ); @@ -470,11 +469,10 @@ impl From for WasiCtxBuilder { } impl WasiCtxBuilder { - // TODO: remove `Result` and `table` - fn build(self, _table: &mut wasi_preview2::Table) -> anyhow::Result { + fn build(self) -> Wasi { match self { - WasiCtxBuilder::Preview1(ctx) => Ok(Wasi::Preview1(ctx)), - WasiCtxBuilder::Preview2(mut b) => Ok(Wasi::Preview2(b.build())), + WasiCtxBuilder::Preview1(ctx) => Wasi::Preview1(ctx), + WasiCtxBuilder::Preview2(mut b) => Wasi::Preview2(b.build()), } } } From d23cf227e9c7539539f4feacd5debc1a958d82a4 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 16:19:31 +0200 Subject: [PATCH 26/31] Update to latest shas Signed-off-by: Ryan Levick --- Cargo.lock | 76 +++++++++++++++++----------------- Cargo.toml | 8 ++-- examples/spin-timer/Cargo.toml | 2 +- 3 files changed, 43 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 924ea7d9a..e2fcfdcee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1078,7 +1078,7 @@ dependencies = [ [[package]] name = "cranelift-bforest" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-entity", ] @@ -1086,7 +1086,7 @@ dependencies = [ [[package]] name = "cranelift-codegen" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "bumpalo", "cranelift-bforest", @@ -1106,7 +1106,7 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen-shared", ] @@ -1114,12 +1114,12 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "cranelift-control" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "arbitrary", ] @@ -1127,7 +1127,7 @@ dependencies = [ [[package]] name = "cranelift-entity" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "serde", "serde_derive", @@ -1136,7 +1136,7 @@ dependencies = [ [[package]] name = "cranelift-frontend" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen", "log", @@ -1147,12 +1147,12 @@ dependencies = [ [[package]] name = "cranelift-isle" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "cranelift-native" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen", "libc", @@ -1162,7 +1162,7 @@ dependencies = [ [[package]] name = "cranelift-wasm" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -5440,7 +5440,7 @@ dependencies = [ [[package]] name = "spin-componentize" version = "0.1.0" -source = "git+https://github.com/fermyon/spin-componentize?rev=d687583d1cf36104044a1f32d72cb3de587e55aa#d687583d1cf36104044a1f32d72cb3de587e55aa" +source = "git+https://github.com/fermyon/spin-componentize?rev=f6061b9d8cf3ca8f8a0ad45113452dc64c50045a#f6061b9d8cf3ca8f8a0ad45113452dc64c50045a" dependencies = [ "anyhow", "wasm-encoder", @@ -6822,7 +6822,7 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-cap-std-sync" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -6844,7 +6844,7 @@ dependencies = [ [[package]] name = "wasi-common" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -6863,7 +6863,7 @@ dependencies = [ [[package]] name = "wasi-tokio" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cap-std", @@ -7002,7 +7002,7 @@ dependencies = [ [[package]] name = "wasmtime" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -7041,7 +7041,7 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cfg-if", ] @@ -7049,7 +7049,7 @@ dependencies = [ [[package]] name = "wasmtime-cache" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "base64 0.21.3", @@ -7068,7 +7068,7 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "proc-macro2", @@ -7082,12 +7082,12 @@ dependencies = [ [[package]] name = "wasmtime-component-util" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "wasmtime-cranelift" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cfg-if", @@ -7111,7 +7111,7 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-codegen", @@ -7126,7 +7126,7 @@ dependencies = [ [[package]] name = "wasmtime-environ" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-entity", @@ -7148,7 +7148,7 @@ dependencies = [ [[package]] name = "wasmtime-fiber" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cc", "cfg-if", @@ -7161,7 +7161,7 @@ dependencies = [ [[package]] name = "wasmtime-jit" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "addr2line 0.21.0", "anyhow", @@ -7187,7 +7187,7 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "object 0.32.1", "once_cell", @@ -7198,7 +7198,7 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cfg-if", "libc", @@ -7208,7 +7208,7 @@ dependencies = [ [[package]] name = "wasmtime-runtime" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cc", @@ -7237,7 +7237,7 @@ dependencies = [ [[package]] name = "wasmtime-types" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-entity", "serde", @@ -7249,7 +7249,7 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "proc-macro2", "quote", @@ -7259,7 +7259,7 @@ dependencies = [ [[package]] name = "wasmtime-wasi" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -7294,7 +7294,7 @@ dependencies = [ [[package]] name = "wasmtime-winch" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-codegen", @@ -7310,7 +7310,7 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "heck 0.4.1", @@ -7321,7 +7321,7 @@ dependencies = [ [[package]] name = "wasmtime-wmemcheck" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "wast" @@ -7462,7 +7462,7 @@ dependencies = [ [[package]] name = "wiggle" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -7476,7 +7476,7 @@ dependencies = [ [[package]] name = "wiggle-generate" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "heck 0.4.1", @@ -7490,7 +7490,7 @@ dependencies = [ [[package]] name = "wiggle-macro" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "proc-macro2", "quote", @@ -7532,7 +7532,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" version = "0.13.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-codegen", @@ -7819,7 +7819,7 @@ dependencies = [ [[package]] name = "witx" version = "0.9.1" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "log", diff --git a/Cargo.toml b/Cargo.toml index a615ef045..349b66349 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -107,14 +107,14 @@ members = ["crates/*", "sdk/rust", "sdk/rust/macro"] [workspace.dependencies] tracing = { version = "0.1", features = ["log"] } -wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", features = [ +wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", features = [ "tokio", ] } -wasi-common-preview1 = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", package = "wasi-common" } -wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", features = [ +wasi-common-preview1 = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", package = "wasi-common" } +wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", features = [ "component-model", ] } -spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "d687583d1cf36104044a1f32d72cb3de587e55aa" } +spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "f6061b9d8cf3ca8f8a0ad45113452dc64c50045a" } [[bin]] name = "spin" diff --git a/examples/spin-timer/Cargo.toml b/examples/spin-timer/Cargo.toml index 62c9957ff..4beb50981 100644 --- a/examples/spin-timer/Cargo.toml +++ b/examples/spin-timer/Cargo.toml @@ -14,7 +14,7 @@ spin-core = { path = "../../crates/core" } spin-trigger = { path = "../../crates/trigger" } tokio = { version = "1.11", features = ["full"] } tokio-scoped = "0.2.0" -wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5", features = [ +wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", features = [ "component-model", ] } From e5b022357b3cd15a879237d787d400ca9bcbdfb0 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 18:13:08 +0200 Subject: [PATCH 27/31] Update to latest spin-componentize Signed-off-by: Ryan Levick --- Cargo.lock | 2 +- Cargo.toml | 2 +- examples/spin-timer/Cargo.lock | 1234 ++++++++++++++++---------------- 3 files changed, 614 insertions(+), 624 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2fcfdcee..8febef1f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5440,7 +5440,7 @@ dependencies = [ [[package]] name = "spin-componentize" version = "0.1.0" -source = "git+https://github.com/fermyon/spin-componentize?rev=f6061b9d8cf3ca8f8a0ad45113452dc64c50045a#f6061b9d8cf3ca8f8a0ad45113452dc64c50045a" +source = "git+https://github.com/fermyon/spin-componentize?rev=84286054d632ccb8ae06c6419940b5d328229e59#84286054d632ccb8ae06c6419940b5d328229e59" dependencies = [ "anyhow", "wasm-encoder", diff --git a/Cargo.toml b/Cargo.toml index 349b66349..4a5107bd5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,7 +114,7 @@ wasi-common-preview1 = { git = "https://github.com/bytecodealliance/wasmtime", r wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", features = [ "component-model", ] } -spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "f6061b9d8cf3ca8f8a0ad45113452dc64c50045a" } +spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "84286054d632ccb8ae06c6419940b5d328229e59" } [[bin]] name = "spin" diff --git a/examples/spin-timer/Cargo.lock b/examples/spin-timer/Cargo.lock index bb7494bf8..b0fc4f111 100644 --- a/examples/spin-timer/Cargo.lock +++ b/examples/spin-timer/Cargo.lock @@ -28,17 +28,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom 0.2.8", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.3" @@ -61,9 +50,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.5" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -74,6 +63,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "ambient-authority" version = "0.0.2" @@ -82,9 +77,9 @@ checksum = "e9d4ee0d472d1cd2e28c97dfa124b3d8d992e10eb0a035f33f5d12e3a177ba3b" [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "arbitrary" @@ -94,9 +89,9 @@ checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" [[package]] name = "async-channel" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", "event-listener", @@ -105,9 +100,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.3.15" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +checksum = "bb42b2197bf15ccb092b62c74515dbd8b86d0effd934795f6687c93b6e679a2c" dependencies = [ "flate2", "futures-core", @@ -124,7 +119,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -155,7 +150,7 @@ dependencies = [ "bytes", "dyn-clone", "futures", - "getrandom 0.2.8", + "getrandom 0.2.10", "http-types", "log", "paste", @@ -201,7 +196,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide 0.7.1", + "miniz_oxide", "object", "rustc-demangle", ] @@ -235,11 +230,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.59.2" +version = "0.68.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cexpr", "clang-sys", "lazy_static", @@ -250,6 +245,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", + "syn 2.0.38", ] [[package]] @@ -278,36 +274,36 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bytesize" @@ -378,7 +374,7 @@ checksum = "6ffc30dee200c20b4dcb80572226f42658e1d9c4b668656d7cc59c33d50e396e" dependencies = [ "cap-primitives", "cap-std", - "rustix 0.38.13", + "rustix 0.38.18", "smallvec", ] @@ -394,7 +390,7 @@ dependencies = [ "io-lifetimes 2.0.2", "ipnet", "maybe-owned", - "rustix 0.38.13", + "rustix 0.38.18", "windows-sys 0.48.0", "winx", ] @@ -418,7 +414,7 @@ dependencies = [ "cap-primitives", "io-extras", "io-lifetimes 2.0.2", - "rustix 0.38.13", + "rustix 0.38.18", ] [[package]] @@ -429,17 +425,18 @@ checksum = "f8f52b3c8f4abfe3252fd0a071f3004aaa3b18936ec97bdbd8763ce03aff6247" dependencies = [ "cap-primitives", "once_cell", - "rustix 0.38.13", + "rustix 0.38.18", "winx", ] [[package]] name = "cc" -version = "1.0.78" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -469,9 +466,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.4.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", @@ -480,15 +477,15 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", "bitflags 1.3.2", "clap_derive", "clap_lex", - "indexmap 1.9.2", + "indexmap 1.9.3", "once_cell", "strsim", "termcolor", @@ -497,15 +494,15 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.2.18" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ "heck", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -519,9 +516,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -537,14 +534,14 @@ dependencies = [ "memchr", "pin-project-lite", "tokio", - "tokio-util 0.7.4", + "tokio-util 0.7.9", ] [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" dependencies = [ "crossbeam-utils", ] @@ -579,9 +576,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpp_demangle" @@ -594,9 +591,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -604,7 +601,7 @@ dependencies = [ [[package]] name = "cranelift-bforest" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-entity", ] @@ -612,7 +609,7 @@ dependencies = [ [[package]] name = "cranelift-codegen" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "bumpalo", "cranelift-bforest", @@ -622,7 +619,7 @@ dependencies = [ "cranelift-entity", "cranelift-isle", "gimli", - "hashbrown 0.14.0", + "hashbrown 0.14.1", "log", "regalloc2", "smallvec", @@ -632,7 +629,7 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen-shared", ] @@ -640,12 +637,12 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "cranelift-control" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "arbitrary", ] @@ -653,7 +650,7 @@ dependencies = [ [[package]] name = "cranelift-entity" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "serde", "serde_derive", @@ -662,7 +659,7 @@ dependencies = [ [[package]] name = "cranelift-frontend" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen", "log", @@ -673,12 +670,12 @@ dependencies = [ [[package]] name = "cranelift-isle" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "cranelift-native" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen", "libc", @@ -688,7 +685,7 @@ dependencies = [ [[package]] name = "cranelift-wasm" version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -725,9 +722,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -735,9 +732,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -746,14 +743,14 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.7.1", + "memoffset", "scopeguard", ] @@ -769,9 +766,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -794,19 +791,19 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.2.4" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1631ca6e3c59112501a9d87fd86f21591ff77acd31331e8a73f8d80a65bbdd71" +checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" dependencies = [ "nix", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "darling" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ "darling_core", "darling_macro", @@ -814,27 +811,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "darling_macro" -version = "0.14.2" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ "darling_core", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -846,6 +843,15 @@ dependencies = [ "uuid", ] +[[package]] +name = "deranged" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +dependencies = [ + "serde", +] + [[package]] name = "derive_builder" version = "0.11.2" @@ -873,7 +879,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -885,7 +891,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -895,7 +901,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" dependencies = [ "derive_builder_core 0.11.2", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -905,14 +911,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" dependencies = [ "derive_builder_core 0.12.0", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -935,7 +941,16 @@ version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", ] [[package]] @@ -949,6 +964,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -962,27 +989,27 @@ dependencies = [ [[package]] name = "dotenvy" -version = "0.15.6" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dunce" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "dyn-clone" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "either" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" @@ -992,9 +1019,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -1007,41 +1034,19 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - -[[package]] -name = "errno" -version = "0.3.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys 0.48.0", ] -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "esaxx-rs" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f748b253ceca9fed5f42f8b5ceb3851e93102199bc25b64b65369f76e5c0a35" +checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6" [[package]] name = "event-listener" @@ -1069,13 +1074,19 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "fd-lock" version = "4.0.0" @@ -1083,30 +1094,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b0377f1edc77dbd1118507bc7a66e4ab64d2b90c66f90726dc801e73a8c68f9" dependencies = [ "cfg-if", - "rustix 0.38.13", + "rustix 0.38.18", "windows-sys 0.48.0", ] [[package]] name = "filetime" -version = "0.2.19" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if", "libc", - "redox_syscall", - "windows-sys 0.42.0", + "redox_syscall 0.3.5", + "windows-sys 0.48.0", ] +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", - "miniz_oxide 0.6.2", + "miniz_oxide", ] [[package]] @@ -1132,9 +1149,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] @@ -1146,7 +1163,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd738b84894214045e8414eaded76359b4a5773f0a0a56b16575110739cdcf39" dependencies = [ "io-lifetimes 2.0.2", - "rustix 0.38.13", + "rustix 0.38.18", "windows-sys 0.48.0", ] @@ -1220,7 +1237,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", "memchr", @@ -1237,7 +1254,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -1294,9 +1311,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -1315,9 +1332,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -1351,7 +1368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" dependencies = [ "fallible-iterator 0.3.0", - "indexmap 2.0.0", + "indexmap 2.0.2", "stable_deref_trait", ] @@ -1363,9 +1380,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -1373,10 +1390,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.2", + "indexmap 1.9.3", "slab", "tokio", - "tokio-util 0.7.4", + "tokio-util 0.7.9", "tracing", ] @@ -1395,9 +1412,6 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.6", -] [[package]] name = "hashbrown" @@ -1405,25 +1419,26 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash", ] [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" dependencies = [ - "ahash 0.8.3", + "ahash", + "allocator-api2", ] [[package]] name = "hashlink" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.12.3", + "hashbrown 0.14.1", ] [[package]] @@ -1443,18 +1458,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hmac" @@ -1479,9 +1485,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -1527,15 +1533,15 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -1548,7 +1554,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.7", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -1557,10 +1563,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.23.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "rustls", @@ -1595,9 +1602,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1605,9 +1612,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", @@ -1615,12 +1622,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.1", "serde", ] @@ -1676,7 +1683,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] @@ -1689,9 +1696,9 @@ checksum = "bffb4def18c48926ccac55c1223e02865ce1a821751a95920448662696e7472c" [[package]] name = "ipnet" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itertools" @@ -1731,9 +1738,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "ittapi" @@ -1757,18 +1764,18 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.25" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -1866,9 +1873,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.148" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libloading" @@ -1882,9 +1889,9 @@ dependencies = [ [[package]] name = "libsql-client" -version = "0.31.8" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e119ff2e259fe776a1340d2cb40baf4d44c32e5a9fd2755e756fc46802c79c70" +checksum = "9ad36885b1e43534f5015a8c45a0be4e8a6e9a829bbb3c5704a1c5e0c0fad848" dependencies = [ "anyhow", "base64 0.21.4", @@ -1911,12 +1918,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" - [[package]] name = "linux-raw-sys" version = "0.3.8" @@ -1925,9 +1926,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "llm" @@ -2029,9 +2030,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -2039,12 +2040,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" @@ -2097,26 +2095,27 @@ checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memfd" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efb" +checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.36.7", + "rustix 0.38.18", ] [[package]] @@ -2128,15 +2127,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.0" @@ -2148,9 +2138,9 @@ dependencies = [ [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" @@ -2168,15 +2158,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -2216,7 +2197,7 @@ checksum = "371717c0a5543d6a800cac822eac735aa7d2d2fbb41002e9856a4089532dbdce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -2243,11 +2224,11 @@ dependencies = [ "priority-queue", "serde", "serde_json", - "socket2 0.5.3", + "socket2 0.5.4", "thiserror", "tokio", "tokio-native-tls", - "tokio-util 0.7.4", + "tokio-util 0.7.9", "twox-hash", "url", ] @@ -2277,7 +2258,7 @@ dependencies = [ "saturating", "serde", "serde_json", - "sha1 0.10.5", + "sha1 0.10.6", "sha2", "smallvec", "subprocess", @@ -2305,14 +2286,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if", "libc", - "static_assertions", ] [[package]] @@ -2327,9 +2307,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -2348,20 +2328,20 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] @@ -2387,16 +2367,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "crc32fast", - "hashbrown 0.14.0", - "indexmap 2.0.0", + "hashbrown 0.14.1", + "indexmap 2.0.2", "memchr", ] [[package]] name = "once_cell" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "onig" @@ -2422,11 +2402,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.45" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if", "foreign-types", "libc", @@ -2437,13 +2417,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.38", ] [[package]] @@ -2454,22 +2434,27 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.80" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ - "autocfg", "cc", "libc", "pkg-config", "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "ouroboros" @@ -2493,7 +2478,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -2554,9 +2539,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" [[package]] name = "parking_lot" @@ -2570,15 +2555,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.42.0", + "windows-targets 0.48.5", ] [[package]] @@ -2600,24 +2585,24 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "path-absolutize" -version = "3.0.14" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f1d4993b16f7325d90c18c3c6a3327db7808752db8d208cea0acee0abd52c52" +checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5" dependencies = [ "path-dedot", ] [[package]] name = "path-dedot" -version = "3.0.18" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a81540d94551664b72b72829b12bd167c73c9d25fbac0e04fafa8023f7e4901" +checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" dependencies = [ "once_cell", ] @@ -2652,15 +2637,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "phf" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ "phf_shared", ] @@ -2677,9 +2662,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared", "rand 0.8.5", @@ -2687,9 +2672,9 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ "siphasher", "uncased", @@ -2697,22 +2682,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.38", ] [[package]] @@ -2729,9 +2714,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "postgres-native-tls" @@ -2748,11 +2733,11 @@ dependencies = [ [[package]] name = "postgres-protocol" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878c6cbf956e03af9aa8204b407b9cbf47c072164800aa918c516cd4b056c50c" +checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" dependencies = [ - "base64 0.13.1", + "base64 0.21.4", "byteorder", "bytes", "fallible-iterator 0.2.0", @@ -2766,9 +2751,9 @@ dependencies = [ [[package]] name = "postgres-types" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73d946ec7d256b04dfadc4e6a3292324e6f417124750fc5c0950f981b703a0f1" +checksum = "8d2234cdee9408b523530a9b6d2d6b373d1db34f6a8e51dc03ded1828d7fb67c" dependencies = [ "bytes", "fallible-iterator 0.2.0", @@ -2788,7 +2773,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fff39edfcaec0d64e8d0da38564fad195d2d51b680940295fcc307366e101e61" dependencies = [ "autocfg", - "indexmap 1.9.2", + "indexmap 1.9.3", ] [[package]] @@ -2800,7 +2785,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", "version_check", ] @@ -2817,9 +2802,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -2918,7 +2903,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] @@ -2932,9 +2917,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -2953,14 +2938,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -2981,7 +2964,7 @@ dependencies = [ "sha1 0.6.1", "tokio", "tokio-native-tls", - "tokio-util 0.7.4", + "tokio-util 0.7.9", "url", ] @@ -2994,14 +2977,23 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_users" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.8", - "redox_syscall", + "getrandom 0.2.10", + "redox_syscall 0.2.16", "thiserror", ] @@ -3020,25 +3012,25 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.4" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +checksum = "d119d7c7ca818f8a53c300863d4f87566aac09943aef5b355bb83969dae75d87" dependencies = [ - "aho-corasick 1.0.5", + "aho-corasick 1.1.2", "memchr", "regex-automata", - "regex-syntax", + "regex-syntax 0.8.0", ] [[package]] name = "regex-automata" -version = "0.3.7" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +checksum = "465c6fc0621e4abc4187a2bda0937bfd4f722c2730b29562e19689ea796c9a4b" dependencies = [ - "aho-corasick 1.0.5", + "aho-corasick 1.1.2", "memchr", - "regex-syntax", + "regex-syntax 0.8.0", ] [[package]] @@ -3048,19 +3040,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "regex-syntax" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] +checksum = "c3cbb081b9784b07cceb8824c8583f86db4814d172ab043f3c23f7dc600bf83d" [[package]] name = "reqwest" -version = "0.11.14" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "async-compression", "base64 0.21.4", @@ -3087,10 +3076,11 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", - "tokio-util 0.7.4", + "tokio-util 0.7.9", "tower-service", "url", "wasm-bindgen", @@ -3132,9 +3122,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -3181,32 +3171,18 @@ dependencies = [ "quote", "regex", "serde_urlencoded", - "syn 1.0.107", + "syn 1.0.109", "synstructure", ] [[package]] name = "rustix" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03" -dependencies = [ - "bitflags 1.3.2", - "errno 0.2.8", - "io-lifetimes 1.0.11", - "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.42.0", -] - -[[package]] -name = "rustix" -version = "0.37.20" +version = "0.37.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" +checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" dependencies = [ "bitflags 1.3.2", - "errno 0.3.1", + "errno", "io-lifetimes 1.0.11", "libc", "linux-raw-sys 0.3.8", @@ -3215,45 +3191,55 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.13" +version = "0.38.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +checksum = "5a74ee2d7c2581cd139b42447d7d9389b889bdaad3a73f1ebb16f2a3237bb19c" dependencies = [ "bitflags 2.4.0", - "errno 0.3.1", + "errno", "itoa", "libc", - "linux-raw-sys 0.4.7", + "linux-raw-sys 0.4.10", "once_cell", "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ "base64 0.21.4", ] +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" @@ -3282,18 +3268,18 @@ checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" @@ -3307,9 +3293,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.8.0" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645926f31b250a2dca3c232496c2d898d91036e45ca0e97e0e2390c54e11be36" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -3320,9 +3306,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -3330,9 +3316,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.16" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" @@ -3360,7 +3346,7 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -3408,9 +3394,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -3425,9 +3411,9 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3440,7 +3426,7 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" dependencies = [ - "dirs", + "dirs 4.0.0", ] [[package]] @@ -3449,56 +3435,56 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b" dependencies = [ - "dirs", + "dirs 5.0.1", ] [[package]] name = "shlex" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "slice-group-by" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -3506,9 +3492,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", "windows-sys 0.48.0", @@ -3548,7 +3534,7 @@ name = "spin-common" version = "2.0.0-pre0" dependencies = [ "anyhow", - "dirs", + "dirs 4.0.0", "sha2", "tokio", ] @@ -3556,7 +3542,7 @@ dependencies = [ [[package]] name = "spin-componentize" version = "0.1.0" -source = "git+https://github.com/fermyon/spin-componentize?rev=d687583d1cf36104044a1f32d72cb3de587e55aa#d687583d1cf36104044a1f32d72cb3de587e55aa" +source = "git+https://github.com/fermyon/spin-componentize?rev=84286054d632ccb8ae06c6419940b5d328229e59#84286054d632ccb8ae06c6419940b5d328229e59" dependencies = [ "anyhow", "wasm-encoder", @@ -3592,7 +3578,7 @@ dependencies = [ "cap-std", "crossbeam-channel", "io-extras", - "rustix 0.37.20", + "rustix 0.37.24", "system-interface", "tokio", "tracing", @@ -3689,7 +3675,7 @@ dependencies = [ "anyhow", "async-trait", "bytes", - "dirs", + "dirs 4.0.0", "dunce", "futures", "glob", @@ -3720,7 +3706,7 @@ dependencies = [ name = "spin-manifest" version = "2.0.0-pre0" dependencies = [ - "indexmap 1.9.2", + "indexmap 1.9.3", "serde", "thiserror", "toml", @@ -3775,9 +3761,9 @@ dependencies = [ "async-trait", "clap", "ctrlc", - "dirs", + "dirs 4.0.0", "futures", - "indexmap 1.9.2", + "indexmap 1.9.3", "outbound-http", "outbound-mysql", "outbound-pg", @@ -3844,7 +3830,7 @@ dependencies = [ "bitflags 2.4.0", "cc", "fallible-iterator 0.2.0", - "indexmap 1.9.2", + "indexmap 1.9.3", "log", "memchr", "phf", @@ -3877,10 +3863,11 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stringprep" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -3903,15 +3890,15 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -3920,9 +3907,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.31" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -3937,10 +3924,31 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", "unicode-xid", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "system-interface" version = "0.26.0" @@ -3952,7 +3960,7 @@ dependencies = [ "cap-std", "fd-lock", "io-lifetimes 2.0.2", - "rustix 0.38.13", + "rustix 0.38.18", "windows-sys 0.48.0", "winx", ] @@ -3976,29 +3984,28 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.5" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9410d0f6853b1d94f0e519fb95df60f29d2c1eff2d921ffdf01a4c8a3b54f12d" +checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" [[package]] name = "tempfile" -version = "3.3.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", - "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi", + "fastrand 2.0.1", + "redox_syscall 0.3.5", + "rustix 0.38.18", + "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] @@ -4020,30 +4027,31 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "time" -version = "0.3.17" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ + "deranged", "itoa", "libc", "num_threads", @@ -4054,15 +4062,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -4078,9 +4086,9 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokenizers" @@ -4091,9 +4099,9 @@ dependencies = [ "aho-corasick 0.7.20", "cached-path", "derive_builder 0.12.0", - "dirs", + "dirs 4.0.0", "esaxx-rs", - "getrandom 0.2.8", + "getrandom 0.2.10", "itertools 0.9.0", "lazy_static", "log", @@ -4105,7 +4113,7 @@ dependencies = [ "rayon", "rayon-cond", "regex", - "regex-syntax", + "regex-syntax 0.7.5", "reqwest", "serde", "serde_json", @@ -4118,9 +4126,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.32.0" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ "backtrace", "bytes", @@ -4130,7 +4138,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.3", + "socket2 0.5.4", "tokio-macros", "windows-sys 0.48.0", ] @@ -4143,14 +4151,14 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "tokio-native-tls" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", "tokio", @@ -4158,9 +4166,9 @@ dependencies = [ [[package]] name = "tokio-postgres" -version = "0.7.7" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a12c1b3e0704ae7dfc25562629798b29c72e6b1d0a681b6f29ab4ae5e7f7bf" +checksum = "d340244b32d920260ae7448cb72b6e238bddc3d4f7603394e7dd46ed8e48f5b8" dependencies = [ "async-trait", "byteorder", @@ -4175,20 +4183,21 @@ dependencies = [ "pin-project-lite", "postgres-protocol", "postgres-types", - "socket2 0.4.7", + "rand 0.8.5", + "socket2 0.5.4", "tokio", - "tokio-util 0.7.4", + "tokio-util 0.7.9", + "whoami", ] [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] @@ -4203,9 +4212,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -4228,9 +4237,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -4270,20 +4279,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.38", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] @@ -4323,9 +4332,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uncased" @@ -4338,24 +4347,24 @@ dependencies = [ [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-bidi" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -4383,9 +4392,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -4407,9 +4416,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -4423,7 +4432,7 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] @@ -4460,28 +4469,26 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -4500,7 +4507,7 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-cap-std-sync" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -4512,7 +4519,7 @@ dependencies = [ "io-extras", "io-lifetimes 2.0.2", "once_cell", - "rustix 0.38.13", + "rustix 0.38.18", "system-interface", "tracing", "wasi-common", @@ -4522,7 +4529,7 @@ dependencies = [ [[package]] name = "wasi-common" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -4530,7 +4537,7 @@ dependencies = [ "cap-std", "io-extras", "log", - "rustix 0.38.13", + "rustix 0.38.18", "thiserror", "tracing", "wasmtime", @@ -4541,13 +4548,13 @@ dependencies = [ [[package]] name = "wasi-tokio" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cap-std", "io-extras", "io-lifetimes 2.0.2", - "rustix 0.38.13", + "rustix 0.38.18", "tokio", "wasi-cap-std-sync", "wasi-common", @@ -4556,9 +4563,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4566,24 +4573,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.38", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -4593,9 +4600,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4603,22 +4610,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-encoder" @@ -4636,7 +4643,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f2c051ef041d348324b01ff0419f6f6593f094b4897d93c9cf52d5d1ac879ba" dependencies = [ "anyhow", - "indexmap 2.0.0", + "indexmap 2.0.2", "serde", "serde_json", "spdx", @@ -4646,9 +4653,9 @@ dependencies = [ [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" dependencies = [ "futures-util", "js-sys", @@ -4663,7 +4670,7 @@ version = "0.113.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", "semver", ] @@ -4680,7 +4687,7 @@ dependencies = [ [[package]] name = "wasmtime" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -4689,7 +4696,7 @@ dependencies = [ "cfg-if", "encoding_rs", "fxprof-processed-profile", - "indexmap 2.0.0", + "indexmap 2.0.2", "libc", "log", "object", @@ -4719,7 +4726,7 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cfg-if", ] @@ -4727,14 +4734,14 @@ dependencies = [ [[package]] name = "wasmtime-cache" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "base64 0.21.4", "bincode", "directories-next", "log", - "rustix 0.38.13", + "rustix 0.38.18", "serde", "serde_derive", "sha2", @@ -4746,12 +4753,12 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", "wasmtime-component-util", "wasmtime-wit-bindgen", "wit-parser", @@ -4760,12 +4767,12 @@ dependencies = [ [[package]] name = "wasmtime-component-util" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "wasmtime-cranelift" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cfg-if", @@ -4789,7 +4796,7 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-codegen", @@ -4804,12 +4811,12 @@ dependencies = [ [[package]] name = "wasmtime-environ" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-entity", "gimli", - "indexmap 2.0.0", + "indexmap 2.0.2", "log", "object", "serde", @@ -4826,11 +4833,11 @@ dependencies = [ [[package]] name = "wasmtime-fiber" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cc", "cfg-if", - "rustix 0.38.13", + "rustix 0.38.18", "wasmtime-asm-macros", "wasmtime-versioned-export-macros", "windows-sys 0.48.0", @@ -4839,7 +4846,7 @@ dependencies = [ [[package]] name = "wasmtime-jit" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "addr2line", "anyhow", @@ -4851,7 +4858,7 @@ dependencies = [ "log", "object", "rustc-demangle", - "rustix 0.38.13", + "rustix 0.38.18", "serde", "serde_derive", "target-lexicon", @@ -4865,18 +4872,18 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "object", "once_cell", - "rustix 0.38.13", + "rustix 0.38.18", "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-jit-icache-coherence" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cfg-if", "libc", @@ -4886,21 +4893,21 @@ dependencies = [ [[package]] name = "wasmtime-runtime" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cc", "cfg-if", "encoding_rs", - "indexmap 2.0.0", + "indexmap 2.0.2", "libc", "log", "mach", "memfd", - "memoffset 0.9.0", + "memoffset", "paste", "rand 0.8.5", - "rustix 0.38.13", + "rustix 0.38.18", "sptr", "wasm-encoder", "wasmtime-asm-macros", @@ -4915,7 +4922,7 @@ dependencies = [ [[package]] name = "wasmtime-types" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "cranelift-entity", "serde", @@ -4927,17 +4934,17 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "wasmtime-wasi" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -4955,7 +4962,7 @@ dependencies = [ "libc", "log", "once_cell", - "rustix 0.38.13", + "rustix 0.38.18", "system-interface", "thiserror", "tokio", @@ -4972,7 +4979,7 @@ dependencies = [ [[package]] name = "wasmtime-winch" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-codegen", @@ -4988,18 +4995,18 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "heck", - "indexmap 2.0.0", + "indexmap 2.0.2", "wit-parser", ] [[package]] name = "wasmtime-wmemcheck" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" [[package]] name = "wast" @@ -5033,37 +5040,34 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webpki" -version = "0.22.0" +name = "webpki-roots" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] -name = "webpki-roots" -version = "0.22.6" +name = "whoami" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" dependencies = [ - "webpki", + "wasm-bindgen", + "web-sys", ] [[package]] name = "wiggle" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "async-trait", @@ -5077,25 +5081,25 @@ dependencies = [ [[package]] name = "wiggle-generate" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "heck", "proc-macro2", "quote", "shellexpand 2.1.2", - "syn 2.0.31", + "syn 2.0.38", "witx", ] [[package]] name = "wiggle-macro" version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", "wiggle-generate", ] @@ -5117,9 +5121,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -5133,7 +5137,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" version = "0.13.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "cranelift-codegen", @@ -5145,21 +5149,6 @@ dependencies = [ "wasmtime-environ", ] -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -5175,7 +5164,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -5195,17 +5184,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -5216,9 +5205,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -5228,9 +5217,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -5240,9 +5229,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -5252,9 +5241,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -5264,9 +5253,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -5276,9 +5265,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -5288,17 +5277,18 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -5319,7 +5309,7 @@ checksum = "2e2bf941487fc5afa9e3fc94761f6b80ecef5a2bed6239b959d23d9de69e3448" dependencies = [ "anyhow", "bitflags 2.4.0", - "indexmap 2.0.0", + "indexmap 2.0.2", "log", "serde", "serde_json", @@ -5337,7 +5327,7 @@ checksum = "a39edca9abb16309def3843af73b58d47d243fe33a9ceee572446bcc57556b9a" dependencies = [ "anyhow", "id-arena", - "indexmap 2.0.0", + "indexmap 2.0.2", "log", "pulldown-cmark", "semver", @@ -5350,7 +5340,7 @@ dependencies = [ [[package]] name = "witx" version = "0.9.1" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5#f8e7d8ffac2a9b5044b9fdbd74df2f2a77915cb5" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" dependencies = [ "anyhow", "log", @@ -5369,9 +5359,9 @@ dependencies = [ [[package]] name = "xattr" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea263437ca03c1522846a4ddafbca2542d0ad5ed9b784909d4b27b76f62bc34a" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" dependencies = [ "libc", ] @@ -5391,7 +5381,7 @@ dependencies = [ "flate2", "hmac", "pbkdf2", - "sha1 0.10.5", + "sha1 0.10.6", "time", "zstd", ] @@ -5417,9 +5407,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.5+zstd.1.5.2" +version = "2.0.8+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" dependencies = [ "cc", "libc", From 60f74ab8cade3024b357c13e55b9762fc7099705 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 18:18:41 +0200 Subject: [PATCH 28/31] Fix some tests Signed-off-by: Ryan Levick --- tests/testcases/key-value/src/lib.rs | 18 ++++++++++++----- tests/testcases/sqlite/src/lib.rs | 29 ++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/tests/testcases/key-value/src/lib.rs b/tests/testcases/key-value/src/lib.rs index 2ccc5dde1..70de89c25 100644 --- a/tests/testcases/key-value/src/lib.rs +++ b/tests/testcases/key-value/src/lib.rs @@ -12,10 +12,17 @@ fn handle_request(req: Request) -> Result { // an allowed-but-non-existent one returns Error::NoSuchStore ensure!(matches!(Store::open("forbidden"), Err(Error::AccessDenied))); - let query = req.uri().query().expect("Should have a testkey query string"); - let query: std::collections::HashMap:: = serde_qs::from_str(query)?; - let init_key = query.get("testkey").expect("Should have a testkey query string"); - let init_val = query.get("testval").expect("Should have a testval query string"); + let query = req + .uri() + .query() + .expect("Should have a testkey query string"); + let query: std::collections::HashMap = serde_qs::from_str(query)?; + let init_key = query + .get("testkey") + .expect("Should have a testkey query string"); + let init_val = query + .get("testval") + .expect("Should have a testval query string"); let store = Store::open_default()?; @@ -42,7 +49,8 @@ fn handle_request(req: Request) -> Result { ); ensure!( - sorted(vec!["bar".to_owned(), init_key.to_owned()]).collect::>() == sorted(store.get_keys()?).collect::>(), + sorted(vec!["bar".to_owned(), init_key.to_owned()]).collect::>() + == sorted(store.get_keys()?).collect::>(), "Expected exectly keys 'bar' and '{}' but got '{:?}'", init_key, &store.get_keys()? diff --git a/tests/testcases/sqlite/src/lib.rs b/tests/testcases/sqlite/src/lib.rs index 293598e21..6224beffb 100644 --- a/tests/testcases/sqlite/src/lib.rs +++ b/tests/testcases/sqlite/src/lib.rs @@ -2,21 +2,34 @@ use anyhow::{ensure, Result}; use spin_sdk::{ http::{Request, Response}, http_component, - sqlite::{Connection, Error, ValueParam}, + sqlite::{Connection, Error, Value}, }; #[http_component] fn handle_request(req: Request) -> Result { - ensure!(matches!(Connection::open("forbidden"), Err(Error::AccessDenied))); - - let query = req.uri().query().expect("Should have a testkey query string"); - let query: std::collections::HashMap:: = serde_qs::from_str(query)?; - let init_key = query.get("testkey").expect("Should have a testkey query string"); - let init_val = query.get("testval").expect("Should have a testval query string"); + ensure!(matches!( + Connection::open("forbidden"), + Err(Error::AccessDenied) + )); + + let query = req + .uri() + .query() + .expect("Should have a testkey query string"); + let query: std::collections::HashMap = serde_qs::from_str(query)?; + let init_key = query + .get("testkey") + .expect("Should have a testkey query string"); + let init_val = query + .get("testval") + .expect("Should have a testval query string"); let conn = Connection::open_default()?; - let results = conn.execute("SELECT * FROM testdata WHERE key = ?", &[ValueParam::Text(init_key)])?; + let results = conn.execute( + "SELECT * FROM testdata WHERE key = ?", + &[Value::Text(init_key.to_owned())], + )?; assert_eq!(1, results.rows.len()); assert_eq!(2, results.columns.len()); From d8a6bc5ff8e2ad1917b77b4a3a3ea37b5349a90a Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 19:50:40 +0200 Subject: [PATCH 29/31] Only create table if it doesn't exist Signed-off-by: Ryan Levick --- crates/trigger/src/lib.rs | 6 +----- crates/trigger/src/runtime_config/sqlite.rs | 3 +-- tests/testcases/mod.rs | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/crates/trigger/src/lib.rs b/crates/trigger/src/lib.rs index b639e8b56..7ac513ba1 100644 --- a/crates/trigger/src/lib.rs +++ b/crates/trigger/src/lib.rs @@ -143,11 +143,7 @@ impl TriggerExecutorBuilder { )?; self.loader.add_dynamic_host_component( &mut builder, - runtime_config::sqlite::build_legacy_component( - &runtime_config, - &init_data.sqlite, - ) - .await?, + runtime_config::sqlite::build_legacy_component(&runtime_config).await?, )?; self.loader.add_dynamic_host_component( &mut builder, diff --git a/crates/trigger/src/runtime_config/sqlite.rs b/crates/trigger/src/runtime_config/sqlite.rs index aa01cc473..5e6250ae7 100644 --- a/crates/trigger/src/runtime_config/sqlite.rs +++ b/crates/trigger/src/runtime_config/sqlite.rs @@ -27,9 +27,8 @@ pub(crate) async fn build_component( pub(crate) async fn build_legacy_component( runtime_config: &RuntimeConfig, - sqlite_statements: &[String], ) -> anyhow::Result { - let component = build_component(runtime_config, sqlite_statements).await?; + let component = build_component(runtime_config, &[]).await?; Ok(LegacySqliteComponent::new(component)) } diff --git a/tests/testcases/mod.rs b/tests/testcases/mod.rs index 1c7ba6c2b..5d73472b0 100644 --- a/tests/testcases/mod.rs +++ b/tests/testcases/mod.rs @@ -225,7 +225,7 @@ pub async fn sqlite_works(controller: &dyn Controller) { .template(None) .deploy_args(vec![ "--sqlite".to_string(), - "\"CREATE TABLE testdata(key TEXT, value TEXT)\"".to_string(), + "\"CREATE TABLE IF NOT EXISTS testdata(key TEXT, value TEXT)\"".to_string(), "--sqlite".to_string(), format!("\"INSERT INTO testdata(key, value) VALUES ('{init_key}', '{init_value}')\""), ]) From 70f544eb893cef064fb03626b2ba6e5308766859 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 10 Oct 2023 22:48:01 +0200 Subject: [PATCH 30/31] Remove left over wit files Signed-off-by: Ryan Levick --- crates/trigger/wasi/command-extended.wit | 39 - crates/trigger/wasi/deps/cli/command.wit | 33 - crates/trigger/wasi/deps/cli/environment.wit | 18 - crates/trigger/wasi/deps/cli/exit.wit | 4 - crates/trigger/wasi/deps/cli/run.wit | 4 - crates/trigger/wasi/deps/cli/stdio.wit | 17 - crates/trigger/wasi/deps/cli/terminal.wit | 59 -- .../wasi/deps/clocks/monotonic-clock.wit | 34 - crates/trigger/wasi/deps/clocks/timezone.wit | 63 -- .../trigger/wasi/deps/clocks/wall-clock.wit | 43 - .../trigger/wasi/deps/filesystem/preopens.wit | 6 - crates/trigger/wasi/deps/filesystem/types.wit | 824 ------------------ crates/trigger/wasi/deps/filesystem/world.wit | 6 - .../wasi/deps/http/incoming-handler.wit | 24 - .../wasi/deps/http/outgoing-handler.wit | 18 - crates/trigger/wasi/deps/http/proxy.wit | 34 - crates/trigger/wasi/deps/http/types.wit | 155 ---- crates/trigger/wasi/deps/io/streams.wit | 300 ------- crates/trigger/wasi/deps/logging/logging.wit | 37 - crates/trigger/wasi/deps/poll/poll.wit | 39 - .../wasi/deps/random/insecure-seed.wit | 24 - crates/trigger/wasi/deps/random/insecure.wit | 21 - crates/trigger/wasi/deps/random/random.wit | 25 - .../wasi/deps/sockets/instance-network.wit | 9 - .../wasi/deps/sockets/ip-name-lookup.wit | 69 -- crates/trigger/wasi/deps/sockets/network.wit | 187 ---- .../wasi/deps/sockets/tcp-create-socket.wit | 27 - crates/trigger/wasi/deps/sockets/tcp.wit | 268 ------ .../wasi/deps/sockets/udp-create-socket.wit | 27 - crates/trigger/wasi/deps/sockets/udp.wit | 220 ----- crates/trigger/wasi/main.wit | 33 - crates/trigger/wasi/test.wit | 41 - crates/trigger/wit/config.wit | 12 - crates/trigger/wit/http-types.wit | 44 - crates/trigger/wit/http.wit | 5 - crates/trigger/wit/inbound-http.wit | 5 - crates/trigger/wit/inbound-redis.wit | 6 - crates/trigger/wit/key-value.wit | 75 -- crates/trigger/wit/llm.wit | 70 -- crates/trigger/wit/mysql.wit | 19 - crates/trigger/wit/postgres.wit | 19 - crates/trigger/wit/rdbms-types.wit | 65 -- crates/trigger/wit/reactor.wit | 50 -- crates/trigger/wit/redis-types.wit | 24 - crates/trigger/wit/redis.wit | 31 - crates/trigger/wit/sqlite.wit | 50 -- 46 files changed, 3183 deletions(-) delete mode 100644 crates/trigger/wasi/command-extended.wit delete mode 100644 crates/trigger/wasi/deps/cli/command.wit delete mode 100644 crates/trigger/wasi/deps/cli/environment.wit delete mode 100644 crates/trigger/wasi/deps/cli/exit.wit delete mode 100644 crates/trigger/wasi/deps/cli/run.wit delete mode 100644 crates/trigger/wasi/deps/cli/stdio.wit delete mode 100644 crates/trigger/wasi/deps/cli/terminal.wit delete mode 100644 crates/trigger/wasi/deps/clocks/monotonic-clock.wit delete mode 100644 crates/trigger/wasi/deps/clocks/timezone.wit delete mode 100644 crates/trigger/wasi/deps/clocks/wall-clock.wit delete mode 100644 crates/trigger/wasi/deps/filesystem/preopens.wit delete mode 100644 crates/trigger/wasi/deps/filesystem/types.wit delete mode 100644 crates/trigger/wasi/deps/filesystem/world.wit delete mode 100644 crates/trigger/wasi/deps/http/incoming-handler.wit delete mode 100644 crates/trigger/wasi/deps/http/outgoing-handler.wit delete mode 100644 crates/trigger/wasi/deps/http/proxy.wit delete mode 100644 crates/trigger/wasi/deps/http/types.wit delete mode 100644 crates/trigger/wasi/deps/io/streams.wit delete mode 100644 crates/trigger/wasi/deps/logging/logging.wit delete mode 100644 crates/trigger/wasi/deps/poll/poll.wit delete mode 100644 crates/trigger/wasi/deps/random/insecure-seed.wit delete mode 100644 crates/trigger/wasi/deps/random/insecure.wit delete mode 100644 crates/trigger/wasi/deps/random/random.wit delete mode 100644 crates/trigger/wasi/deps/sockets/instance-network.wit delete mode 100644 crates/trigger/wasi/deps/sockets/ip-name-lookup.wit delete mode 100644 crates/trigger/wasi/deps/sockets/network.wit delete mode 100644 crates/trigger/wasi/deps/sockets/tcp-create-socket.wit delete mode 100644 crates/trigger/wasi/deps/sockets/tcp.wit delete mode 100644 crates/trigger/wasi/deps/sockets/udp-create-socket.wit delete mode 100644 crates/trigger/wasi/deps/sockets/udp.wit delete mode 100644 crates/trigger/wasi/main.wit delete mode 100644 crates/trigger/wasi/test.wit delete mode 100644 crates/trigger/wit/config.wit delete mode 100644 crates/trigger/wit/http-types.wit delete mode 100644 crates/trigger/wit/http.wit delete mode 100644 crates/trigger/wit/inbound-http.wit delete mode 100644 crates/trigger/wit/inbound-redis.wit delete mode 100644 crates/trigger/wit/key-value.wit delete mode 100644 crates/trigger/wit/llm.wit delete mode 100644 crates/trigger/wit/mysql.wit delete mode 100644 crates/trigger/wit/postgres.wit delete mode 100644 crates/trigger/wit/rdbms-types.wit delete mode 100644 crates/trigger/wit/reactor.wit delete mode 100644 crates/trigger/wit/redis-types.wit delete mode 100644 crates/trigger/wit/redis.wit delete mode 100644 crates/trigger/wit/sqlite.wit diff --git a/crates/trigger/wasi/command-extended.wit b/crates/trigger/wasi/command-extended.wit deleted file mode 100644 index 518fabdca..000000000 --- a/crates/trigger/wasi/command-extended.wit +++ /dev/null @@ -1,39 +0,0 @@ -// All of the same imports and exports available in the wasi:cli/command world -// with addition of HTTP proxy related imports: -world command-extended { - import wasi:clocks/wall-clock - import wasi:clocks/monotonic-clock - import wasi:clocks/timezone - import wasi:filesystem/types - import wasi:filesystem/preopens - import wasi:sockets/instance-network - import wasi:sockets/ip-name-lookup - import wasi:sockets/network - import wasi:sockets/tcp-create-socket - import wasi:sockets/tcp - import wasi:sockets/udp-create-socket - import wasi:sockets/udp - import wasi:random/random - import wasi:random/insecure - import wasi:random/insecure-seed - import wasi:poll/poll - import wasi:io/streams - import wasi:cli/environment - import wasi:cli/exit - import wasi:cli/stdin - import wasi:cli/stdout - import wasi:cli/stderr - import wasi:cli/terminal-input - import wasi:cli/terminal-output - import wasi:cli/terminal-stdin - import wasi:cli/terminal-stdout - import wasi:cli/terminal-stderr - - export wasi:cli/run - - // We should replace all others with `include self.command` - // as soon as the unioning of worlds is available: - // https://github.com/WebAssembly/component-model/issues/169 - import wasi:logging/logging - import wasi:http/outgoing-handler -} diff --git a/crates/trigger/wasi/deps/cli/command.wit b/crates/trigger/wasi/deps/cli/command.wit deleted file mode 100644 index 3cd17bea3..000000000 --- a/crates/trigger/wasi/deps/cli/command.wit +++ /dev/null @@ -1,33 +0,0 @@ -package wasi:cli - -world command { - import wasi:clocks/wall-clock - import wasi:clocks/monotonic-clock - import wasi:clocks/timezone - import wasi:filesystem/types - import wasi:filesystem/preopens - import wasi:sockets/instance-network - import wasi:sockets/ip-name-lookup - import wasi:sockets/network - import wasi:sockets/tcp-create-socket - import wasi:sockets/tcp - import wasi:sockets/udp-create-socket - import wasi:sockets/udp - import wasi:random/random - import wasi:random/insecure - import wasi:random/insecure-seed - import wasi:poll/poll - import wasi:io/streams - - import environment - import exit - import stdin - import stdout - import stderr - import terminal-input - import terminal-output - import terminal-stdin - import terminal-stdout - import terminal-stderr - export run -} diff --git a/crates/trigger/wasi/deps/cli/environment.wit b/crates/trigger/wasi/deps/cli/environment.wit deleted file mode 100644 index 36790fe71..000000000 --- a/crates/trigger/wasi/deps/cli/environment.wit +++ /dev/null @@ -1,18 +0,0 @@ -interface environment { - /// Get the POSIX-style environment variables. - /// - /// Each environment variable is provided as a pair of string variable names - /// and string value. - /// - /// Morally, these are a value import, but until value imports are available - /// in the component model, this import function should return the same - /// values each time it is called. - get-environment: func() -> list> - - /// Get the POSIX-style arguments to the program. - get-arguments: func() -> list - - /// Return a path that programs should use as their initial current working - /// directory, interpreting `.` as shorthand for this. - initial-cwd: func() -> option -} diff --git a/crates/trigger/wasi/deps/cli/exit.wit b/crates/trigger/wasi/deps/cli/exit.wit deleted file mode 100644 index 4831d5078..000000000 --- a/crates/trigger/wasi/deps/cli/exit.wit +++ /dev/null @@ -1,4 +0,0 @@ -interface exit { - /// Exit the current instance and any linked instances. - exit: func(status: result) -} diff --git a/crates/trigger/wasi/deps/cli/run.wit b/crates/trigger/wasi/deps/cli/run.wit deleted file mode 100644 index 45a1ca533..000000000 --- a/crates/trigger/wasi/deps/cli/run.wit +++ /dev/null @@ -1,4 +0,0 @@ -interface run { - /// Run the program. - run: func() -> result -} diff --git a/crates/trigger/wasi/deps/cli/stdio.wit b/crates/trigger/wasi/deps/cli/stdio.wit deleted file mode 100644 index 6c9d4a41a..000000000 --- a/crates/trigger/wasi/deps/cli/stdio.wit +++ /dev/null @@ -1,17 +0,0 @@ -interface stdin { - use wasi:io/streams.{input-stream} - - get-stdin: func() -> input-stream -} - -interface stdout { - use wasi:io/streams.{output-stream} - - get-stdout: func() -> output-stream -} - -interface stderr { - use wasi:io/streams.{output-stream} - - get-stderr: func() -> output-stream -} diff --git a/crates/trigger/wasi/deps/cli/terminal.wit b/crates/trigger/wasi/deps/cli/terminal.wit deleted file mode 100644 index f32e74437..000000000 --- a/crates/trigger/wasi/deps/cli/terminal.wit +++ /dev/null @@ -1,59 +0,0 @@ -interface terminal-input { - /// The input side of a terminal. - /// - /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). - type terminal-input = u32 - - // In the future, this may include functions for disabling echoing, - // disabling input buffering so that keyboard events are sent through - // immediately, querying supported features, and so on. - - /// Dispose of the specified terminal-input after which it may no longer - /// be used. - drop-terminal-input: func(this: terminal-input) -} - -interface terminal-output { - /// The output side of a terminal. - /// - /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). - type terminal-output = u32 - - // In the future, this may include functions for querying the terminal - // size, being notified of terminal size changes, querying supported - // features, and so on. - - /// Dispose of the specified terminal-output, after which it may no longer - /// be used. - drop-terminal-output: func(this: terminal-output) -} - -/// An interface providing an optional `terminal-input` for stdin as a -/// link-time authority. -interface terminal-stdin { - use terminal-input.{terminal-input} - - /// If stdin is connected to a terminal, return a `terminal-input` handle - /// allowing further interaction with it. - get-terminal-stdin: func() -> option -} - -/// An interface providing an optional `terminal-output` for stdout as a -/// link-time authority. -interface terminal-stdout { - use terminal-output.{terminal-output} - - /// If stdout is connected to a terminal, return a `terminal-output` handle - /// allowing further interaction with it. - get-terminal-stdout: func() -> option -} - -/// An interface providing an optional `terminal-output` for stderr as a -/// link-time authority. -interface terminal-stderr { - use terminal-output.{terminal-output} - - /// If stderr is connected to a terminal, return a `terminal-output` handle - /// allowing further interaction with it. - get-terminal-stderr: func() -> option -} diff --git a/crates/trigger/wasi/deps/clocks/monotonic-clock.wit b/crates/trigger/wasi/deps/clocks/monotonic-clock.wit deleted file mode 100644 index 50eb4de11..000000000 --- a/crates/trigger/wasi/deps/clocks/monotonic-clock.wit +++ /dev/null @@ -1,34 +0,0 @@ -package wasi:clocks - -/// WASI Monotonic Clock is a clock API intended to let users measure elapsed -/// time. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -/// -/// A monotonic clock is a clock which has an unspecified initial value, and -/// successive reads of the clock will produce non-decreasing values. -/// -/// It is intended for measuring elapsed time. -interface monotonic-clock { - use wasi:poll/poll.{pollable} - - /// A timestamp in nanoseconds. - type instant = u64 - - /// Read the current value of the clock. - /// - /// The clock is monotonic, therefore calling this function repeatedly will - /// produce a sequence of non-decreasing values. - now: func() -> instant - - /// Query the resolution of the clock. - resolution: func() -> instant - - /// Create a `pollable` which will resolve once the specified time has been - /// reached. - subscribe: func( - when: instant, - absolute: bool - ) -> pollable -} diff --git a/crates/trigger/wasi/deps/clocks/timezone.wit b/crates/trigger/wasi/deps/clocks/timezone.wit deleted file mode 100644 index 2b6855668..000000000 --- a/crates/trigger/wasi/deps/clocks/timezone.wit +++ /dev/null @@ -1,63 +0,0 @@ -package wasi:clocks - -interface timezone { - use wall-clock.{datetime} - - /// A timezone. - /// - /// In timezones that recognize daylight saving time, also known as daylight - /// time and summer time, the information returned from the functions varies - /// over time to reflect these adjustments. - /// - /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). - type timezone = u32 - - /// Return information needed to display the given `datetime`. This includes - /// the UTC offset, the time zone name, and a flag indicating whether - /// daylight saving time is active. - /// - /// If the timezone cannot be determined for the given `datetime`, return a - /// `timezone-display` for `UTC` with a `utc-offset` of 0 and no daylight - /// saving time. - display: func(this: timezone, when: datetime) -> timezone-display - - /// The same as `display`, but only return the UTC offset. - utc-offset: func(this: timezone, when: datetime) -> s32 - - /// Dispose of the specified input-stream, after which it may no longer - /// be used. - drop-timezone: func(this: timezone) - - /// Information useful for displaying the timezone of a specific `datetime`. - /// - /// This information may vary within a single `timezone` to reflect daylight - /// saving time adjustments. - record timezone-display { - /// The number of seconds difference between UTC time and the local - /// time of the timezone. - /// - /// The returned value will always be less than 86400 which is the - /// number of seconds in a day (24*60*60). - /// - /// In implementations that do not expose an actual time zone, this - /// should return 0. - utc-offset: s32, - - /// The abbreviated name of the timezone to display to a user. The name - /// `UTC` indicates Coordinated Universal Time. Otherwise, this should - /// reference local standards for the name of the time zone. - /// - /// In implementations that do not expose an actual time zone, this - /// should be the string `UTC`. - /// - /// In time zones that do not have an applicable name, a formatted - /// representation of the UTC offset may be returned, such as `-04:00`. - name: string, - - /// Whether daylight saving time is active. - /// - /// In implementations that do not expose an actual time zone, this - /// should return false. - in-daylight-saving-time: bool, - } -} diff --git a/crates/trigger/wasi/deps/clocks/wall-clock.wit b/crates/trigger/wasi/deps/clocks/wall-clock.wit deleted file mode 100644 index 6137724f6..000000000 --- a/crates/trigger/wasi/deps/clocks/wall-clock.wit +++ /dev/null @@ -1,43 +0,0 @@ -package wasi:clocks - -/// WASI Wall Clock is a clock API intended to let users query the current -/// time. The name "wall" makes an analogy to a "clock on the wall", which -/// is not necessarily monotonic as it may be reset. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -/// -/// A wall clock is a clock which measures the date and time according to -/// some external reference. -/// -/// External references may be reset, so this clock is not necessarily -/// monotonic, making it unsuitable for measuring elapsed time. -/// -/// It is intended for reporting the current date and time for humans. -interface wall-clock { - /// A time and date in seconds plus nanoseconds. - record datetime { - seconds: u64, - nanoseconds: u32, - } - - /// Read the current value of the clock. - /// - /// This clock is not monotonic, therefore calling this function repeatedly - /// will not necessarily produce a sequence of non-decreasing values. - /// - /// The returned timestamps represent the number of seconds since - /// 1970-01-01T00:00:00Z, also known as [POSIX's Seconds Since the Epoch], - /// also known as [Unix Time]. - /// - /// The nanoseconds field of the output is always less than 1000000000. - /// - /// [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 - /// [Unix Time]: https://en.wikipedia.org/wiki/Unix_time - now: func() -> datetime - - /// Query the resolution of the clock. - /// - /// The nanoseconds field of the output is always less than 1000000000. - resolution: func() -> datetime -} diff --git a/crates/trigger/wasi/deps/filesystem/preopens.wit b/crates/trigger/wasi/deps/filesystem/preopens.wit deleted file mode 100644 index f45661b8a..000000000 --- a/crates/trigger/wasi/deps/filesystem/preopens.wit +++ /dev/null @@ -1,6 +0,0 @@ -interface preopens { - use types.{descriptor} - - /// Return the set of preopened directories, and their path. - get-directories: func() -> list> -} diff --git a/crates/trigger/wasi/deps/filesystem/types.wit b/crates/trigger/wasi/deps/filesystem/types.wit deleted file mode 100644 index e72a742de..000000000 --- a/crates/trigger/wasi/deps/filesystem/types.wit +++ /dev/null @@ -1,824 +0,0 @@ -/// WASI filesystem is a filesystem API primarily intended to let users run WASI -/// programs that access their files on their existing filesystems, without -/// significant overhead. -/// -/// It is intended to be roughly portable between Unix-family platforms and -/// Windows, though it does not hide many of the major differences. -/// -/// Paths are passed as interface-type `string`s, meaning they must consist of -/// a sequence of Unicode Scalar Values (USVs). Some filesystems may contain -/// paths which are not accessible by this API. -/// -/// The directory separator in WASI is always the forward-slash (`/`). -/// -/// All paths in WASI are relative paths, and are interpreted relative to a -/// `descriptor` referring to a base directory. If a `path` argument to any WASI -/// function starts with `/`, or if any step of resolving a `path`, including -/// `..` and symbolic link steps, reaches a directory outside of the base -/// directory, or reaches a symlink to an absolute or rooted path in the -/// underlying filesystem, the function fails with `error-code::not-permitted`. -interface types { - use wasi:io/streams.{input-stream, output-stream} - use wasi:clocks/wall-clock.{datetime} - - /// File size or length of a region within a file. - type filesize = u64 - - /// The type of a filesystem object referenced by a descriptor. - /// - /// Note: This was called `filetype` in earlier versions of WASI. - enum descriptor-type { - /// The type of the descriptor or file is unknown or is different from - /// any of the other types specified. - unknown, - /// The descriptor refers to a block device inode. - block-device, - /// The descriptor refers to a character device inode. - character-device, - /// The descriptor refers to a directory inode. - directory, - /// The descriptor refers to a named pipe. - fifo, - /// The file refers to a symbolic link inode. - symbolic-link, - /// The descriptor refers to a regular file inode. - regular-file, - /// The descriptor refers to a socket. - socket, - } - - /// Descriptor flags. - /// - /// Note: This was called `fdflags` in earlier versions of WASI. - flags descriptor-flags { - /// Read mode: Data can be read. - read, - /// Write mode: Data can be written to. - write, - /// Request that writes be performed according to synchronized I/O file - /// integrity completion. The data stored in the file and the file's - /// metadata are synchronized. This is similar to `O_SYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - file-integrity-sync, - /// Request that writes be performed according to synchronized I/O data - /// integrity completion. Only the data stored in the file is - /// synchronized. This is similar to `O_DSYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - data-integrity-sync, - /// Requests that reads be performed at the same level of integrety - /// requested for writes. This is similar to `O_RSYNC` in POSIX. - /// - /// The precise semantics of this operation have not yet been defined for - /// WASI. At this time, it should be interpreted as a request, and not a - /// requirement. - requested-write-sync, - /// Mutating directories mode: Directory contents may be mutated. - /// - /// When this flag is unset on a descriptor, operations using the - /// descriptor which would create, rename, delete, modify the data or - /// metadata of filesystem objects, or obtain another handle which - /// would permit any of those, shall fail with `error-code::read-only` if - /// they would otherwise succeed. - /// - /// This may only be set on directories. - mutate-directory, - } - - /// File attributes. - /// - /// Note: This was called `filestat` in earlier versions of WASI. - record descriptor-stat { - /// File type. - %type: descriptor-type, - /// Number of hard links to the file. - link-count: link-count, - /// For regular files, the file size in bytes. For symbolic links, the - /// length in bytes of the pathname contained in the symbolic link. - size: filesize, - /// Last data access timestamp. - data-access-timestamp: datetime, - /// Last data modification timestamp. - data-modification-timestamp: datetime, - /// Last file status change timestamp. - status-change-timestamp: datetime, - } - - /// Flags determining the method of how paths are resolved. - flags path-flags { - /// As long as the resolved path corresponds to a symbolic link, it is - /// expanded. - symlink-follow, - } - - /// Open flags used by `open-at`. - flags open-flags { - /// Create file if it does not exist, similar to `O_CREAT` in POSIX. - create, - /// Fail if not a directory, similar to `O_DIRECTORY` in POSIX. - directory, - /// Fail if file already exists, similar to `O_EXCL` in POSIX. - exclusive, - /// Truncate file to size 0, similar to `O_TRUNC` in POSIX. - truncate, - } - - /// Permissions mode used by `open-at`, `change-file-permissions-at`, and - /// similar. - flags modes { - /// True if the resource is considered readable by the containing - /// filesystem. - readable, - /// True if the resource is considered writable by the containing - /// filesystem. - writable, - /// True if the resource is considered executable by the containing - /// filesystem. This does not apply to directories. - executable, - } - - /// Access type used by `access-at`. - variant access-type { - /// Test for readability, writeability, or executability. - access(modes), - - /// Test whether the path exists. - exists, - } - - /// Number of hard links to an inode. - type link-count = u64 - - /// When setting a timestamp, this gives the value to set it to. - variant new-timestamp { - /// Leave the timestamp set to its previous value. - no-change, - /// Set the timestamp to the current time of the system clock associated - /// with the filesystem. - now, - /// Set the timestamp to the given value. - timestamp(datetime), - } - - /// A directory entry. - record directory-entry { - /// The type of the file referred to by this directory entry. - %type: descriptor-type, - - /// The name of the object. - name: string, - } - - /// Error codes returned by functions, similar to `errno` in POSIX. - /// Not all of these error codes are returned by the functions provided by this - /// API; some are used in higher-level library layers, and others are provided - /// merely for alignment with POSIX. - enum error-code { - /// Permission denied, similar to `EACCES` in POSIX. - access, - /// Resource unavailable, or operation would block, similar to `EAGAIN` and `EWOULDBLOCK` in POSIX. - would-block, - /// Connection already in progress, similar to `EALREADY` in POSIX. - already, - /// Bad descriptor, similar to `EBADF` in POSIX. - bad-descriptor, - /// Device or resource busy, similar to `EBUSY` in POSIX. - busy, - /// Resource deadlock would occur, similar to `EDEADLK` in POSIX. - deadlock, - /// Storage quota exceeded, similar to `EDQUOT` in POSIX. - quota, - /// File exists, similar to `EEXIST` in POSIX. - exist, - /// File too large, similar to `EFBIG` in POSIX. - file-too-large, - /// Illegal byte sequence, similar to `EILSEQ` in POSIX. - illegal-byte-sequence, - /// Operation in progress, similar to `EINPROGRESS` in POSIX. - in-progress, - /// Interrupted function, similar to `EINTR` in POSIX. - interrupted, - /// Invalid argument, similar to `EINVAL` in POSIX. - invalid, - /// I/O error, similar to `EIO` in POSIX. - io, - /// Is a directory, similar to `EISDIR` in POSIX. - is-directory, - /// Too many levels of symbolic links, similar to `ELOOP` in POSIX. - loop, - /// Too many links, similar to `EMLINK` in POSIX. - too-many-links, - /// Message too large, similar to `EMSGSIZE` in POSIX. - message-size, - /// Filename too long, similar to `ENAMETOOLONG` in POSIX. - name-too-long, - /// No such device, similar to `ENODEV` in POSIX. - no-device, - /// No such file or directory, similar to `ENOENT` in POSIX. - no-entry, - /// No locks available, similar to `ENOLCK` in POSIX. - no-lock, - /// Not enough space, similar to `ENOMEM` in POSIX. - insufficient-memory, - /// No space left on device, similar to `ENOSPC` in POSIX. - insufficient-space, - /// Not a directory or a symbolic link to a directory, similar to `ENOTDIR` in POSIX. - not-directory, - /// Directory not empty, similar to `ENOTEMPTY` in POSIX. - not-empty, - /// State not recoverable, similar to `ENOTRECOVERABLE` in POSIX. - not-recoverable, - /// Not supported, similar to `ENOTSUP` and `ENOSYS` in POSIX. - unsupported, - /// Inappropriate I/O control operation, similar to `ENOTTY` in POSIX. - no-tty, - /// No such device or address, similar to `ENXIO` in POSIX. - no-such-device, - /// Value too large to be stored in data type, similar to `EOVERFLOW` in POSIX. - overflow, - /// Operation not permitted, similar to `EPERM` in POSIX. - not-permitted, - /// Broken pipe, similar to `EPIPE` in POSIX. - pipe, - /// Read-only file system, similar to `EROFS` in POSIX. - read-only, - /// Invalid seek, similar to `ESPIPE` in POSIX. - invalid-seek, - /// Text file busy, similar to `ETXTBSY` in POSIX. - text-file-busy, - /// Cross-device link, similar to `EXDEV` in POSIX. - cross-device, - } - - /// File or memory access pattern advisory information. - enum advice { - /// The application has no advice to give on its behavior with respect - /// to the specified data. - normal, - /// The application expects to access the specified data sequentially - /// from lower offsets to higher offsets. - sequential, - /// The application expects to access the specified data in a random - /// order. - random, - /// The application expects to access the specified data in the near - /// future. - will-need, - /// The application expects that it will not access the specified data - /// in the near future. - dont-need, - /// The application expects to access the specified data once and then - /// not reuse it thereafter. - no-reuse, - } - - /// A descriptor is a reference to a filesystem object, which may be a file, - /// directory, named pipe, special file, or other object on which filesystem - /// calls may be made. - /// - /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). - type descriptor = u32 - - /// A 128-bit hash value, split into parts because wasm doesn't have a - /// 128-bit integer type. - record metadata-hash-value { - /// 64 bits of a 128-bit hash value. - lower: u64, - /// Another 64 bits of a 128-bit hash value. - upper: u64, - } - - /// Return a stream for reading from a file, if available. - /// - /// May fail with an error-code describing why the file cannot be read. - /// - /// Multiple read, write, and append streams may be active on the same open - /// file and they do not interfere with each other. - /// - /// Note: This allows using `read-stream`, which is similar to `read` in POSIX. - read-via-stream: func( - this: descriptor, - /// The offset within the file at which to start reading. - offset: filesize, - ) -> result - - /// Return a stream for writing to a file, if available. - /// - /// May fail with an error-code describing why the file cannot be written. - /// - /// Note: This allows using `write-stream`, which is similar to `write` in - /// POSIX. - write-via-stream: func( - this: descriptor, - /// The offset within the file at which to start writing. - offset: filesize, - ) -> result - - /// Return a stream for appending to a file, if available. - /// - /// May fail with an error-code describing why the file cannot be appended. - /// - /// Note: This allows using `write-stream`, which is similar to `write` with - /// `O_APPEND` in in POSIX. - append-via-stream: func( - this: descriptor, - ) -> result - - /// Provide file advisory information on a descriptor. - /// - /// This is similar to `posix_fadvise` in POSIX. - advise: func( - this: descriptor, - /// The offset within the file to which the advisory applies. - offset: filesize, - /// The length of the region to which the advisory applies. - length: filesize, - /// The advice. - advice: advice - ) -> result<_, error-code> - - /// Synchronize the data of a file to disk. - /// - /// This function succeeds with no effect if the file descriptor is not - /// opened for writing. - /// - /// Note: This is similar to `fdatasync` in POSIX. - sync-data: func(this: descriptor) -> result<_, error-code> - - /// Get flags associated with a descriptor. - /// - /// Note: This returns similar flags to `fcntl(fd, F_GETFL)` in POSIX. - /// - /// Note: This returns the value that was the `fs_flags` value returned - /// from `fdstat_get` in earlier versions of WASI. - get-flags: func(this: descriptor) -> result - - /// Get the dynamic type of a descriptor. - /// - /// Note: This returns the same value as the `type` field of the `fd-stat` - /// returned by `stat`, `stat-at` and similar. - /// - /// Note: This returns similar flags to the `st_mode & S_IFMT` value provided - /// by `fstat` in POSIX. - /// - /// Note: This returns the value that was the `fs_filetype` value returned - /// from `fdstat_get` in earlier versions of WASI. - get-type: func(this: descriptor) -> result - - /// Adjust the size of an open file. If this increases the file's size, the - /// extra bytes are filled with zeros. - /// - /// Note: This was called `fd_filestat_set_size` in earlier versions of WASI. - set-size: func(this: descriptor, size: filesize) -> result<_, error-code> - - /// Adjust the timestamps of an open file or directory. - /// - /// Note: This is similar to `futimens` in POSIX. - /// - /// Note: This was called `fd_filestat_set_times` in earlier versions of WASI. - set-times: func( - this: descriptor, - /// The desired values of the data access timestamp. - data-access-timestamp: new-timestamp, - /// The desired values of the data modification timestamp. - data-modification-timestamp: new-timestamp, - ) -> result<_, error-code> - - /// Read from a descriptor, without using and updating the descriptor's offset. - /// - /// This function returns a list of bytes containing the data that was - /// read, along with a bool which, when true, indicates that the end of the - /// file was reached. The returned list will contain up to `length` bytes; it - /// may return fewer than requested, if the end of the file is reached or - /// if the I/O operation is interrupted. - /// - /// In the future, this may change to return a `stream`. - /// - /// Note: This is similar to `pread` in POSIX. - read: func( - this: descriptor, - /// The maximum number of bytes to read. - length: filesize, - /// The offset within the file at which to read. - offset: filesize, - ) -> result, bool>, error-code> - - /// Write to a descriptor, without using and updating the descriptor's offset. - /// - /// It is valid to write past the end of a file; the file is extended to the - /// extent of the write, with bytes between the previous end and the start of - /// the write set to zero. - /// - /// In the future, this may change to take a `stream`. - /// - /// Note: This is similar to `pwrite` in POSIX. - write: func( - this: descriptor, - /// Data to write - buffer: list, - /// The offset within the file at which to write. - offset: filesize, - ) -> result - - /// Read directory entries from a directory. - /// - /// On filesystems where directories contain entries referring to themselves - /// and their parents, often named `.` and `..` respectively, these entries - /// are omitted. - /// - /// This always returns a new stream which starts at the beginning of the - /// directory. Multiple streams may be active on the same directory, and they - /// do not interfere with each other. - read-directory: func( - this: descriptor - ) -> result - - /// Synchronize the data and metadata of a file to disk. - /// - /// This function succeeds with no effect if the file descriptor is not - /// opened for writing. - /// - /// Note: This is similar to `fsync` in POSIX. - sync: func(this: descriptor) -> result<_, error-code> - - /// Create a directory. - /// - /// Note: This is similar to `mkdirat` in POSIX. - create-directory-at: func( - this: descriptor, - /// The relative path at which to create the directory. - path: string, - ) -> result<_, error-code> - - /// Return the attributes of an open file or directory. - /// - /// Note: This is similar to `fstat` in POSIX, except that it does not return - /// device and inode information. For testing whether two descriptors refer to - /// the same underlying filesystem object, use `is-same-object`. To obtain - /// additional data that can be used do determine whether a file has been - /// modified, use `metadata-hash`. - /// - /// Note: This was called `fd_filestat_get` in earlier versions of WASI. - stat: func(this: descriptor) -> result - - /// Return the attributes of a file or directory. - /// - /// Note: This is similar to `fstatat` in POSIX, except that it does not - /// return device and inode information. See the `stat` description for a - /// discussion of alternatives. - /// - /// Note: This was called `path_filestat_get` in earlier versions of WASI. - stat-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to inspect. - path: string, - ) -> result - - /// Adjust the timestamps of a file or directory. - /// - /// Note: This is similar to `utimensat` in POSIX. - /// - /// Note: This was called `path_filestat_set_times` in earlier versions of - /// WASI. - set-times-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to operate on. - path: string, - /// The desired values of the data access timestamp. - data-access-timestamp: new-timestamp, - /// The desired values of the data modification timestamp. - data-modification-timestamp: new-timestamp, - ) -> result<_, error-code> - - /// Create a hard link. - /// - /// Note: This is similar to `linkat` in POSIX. - link-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - old-path-flags: path-flags, - /// The relative source path from which to link. - old-path: string, - /// The base directory for `new-path`. - new-descriptor: descriptor, - /// The relative destination path at which to create the hard link. - new-path: string, - ) -> result<_, error-code> - - /// Open a file or directory. - /// - /// The returned descriptor is not guaranteed to be the lowest-numbered - /// descriptor not currently open/ it is randomized to prevent applications - /// from depending on making assumptions about indexes, since this is - /// error-prone in multi-threaded contexts. The returned descriptor is - /// guaranteed to be less than 2**31. - /// - /// If `flags` contains `descriptor-flags::mutate-directory`, and the base - /// descriptor doesn't have `descriptor-flags::mutate-directory` set, - /// `open-at` fails with `error-code::read-only`. - /// - /// If `flags` contains `write` or `mutate-directory`, or `open-flags` - /// contains `truncate` or `create`, and the base descriptor doesn't have - /// `descriptor-flags::mutate-directory` set, `open-at` fails with - /// `error-code::read-only`. - /// - /// Note: This is similar to `openat` in POSIX. - open-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the object to open. - path: string, - /// The method by which to open the file. - open-flags: open-flags, - /// Flags to use for the resulting descriptor. - %flags: descriptor-flags, - /// Permissions to use when creating a new file. - modes: modes - ) -> result - - /// Read the contents of a symbolic link. - /// - /// If the contents contain an absolute or rooted path in the underlying - /// filesystem, this function fails with `error-code::not-permitted`. - /// - /// Note: This is similar to `readlinkat` in POSIX. - readlink-at: func( - this: descriptor, - /// The relative path of the symbolic link from which to read. - path: string, - ) -> result - - /// Remove a directory. - /// - /// Return `error-code::not-empty` if the directory is not empty. - /// - /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - remove-directory-at: func( - this: descriptor, - /// The relative path to a directory to remove. - path: string, - ) -> result<_, error-code> - - /// Rename a filesystem object. - /// - /// Note: This is similar to `renameat` in POSIX. - rename-at: func( - this: descriptor, - /// The relative source path of the file or directory to rename. - old-path: string, - /// The base directory for `new-path`. - new-descriptor: descriptor, - /// The relative destination path to which to rename the file or directory. - new-path: string, - ) -> result<_, error-code> - - /// Create a symbolic link (also known as a "symlink"). - /// - /// If `old-path` starts with `/`, the function fails with - /// `error-code::not-permitted`. - /// - /// Note: This is similar to `symlinkat` in POSIX. - symlink-at: func( - this: descriptor, - /// The contents of the symbolic link. - old-path: string, - /// The relative destination path at which to create the symbolic link. - new-path: string, - ) -> result<_, error-code> - - /// Check accessibility of a filesystem path. - /// - /// Check whether the given filesystem path names an object which is - /// readable, writable, or executable, or whether it exists. - /// - /// This does not a guarantee that subsequent accesses will succeed, as - /// filesystem permissions may be modified asynchronously by external - /// entities. - /// - /// Note: This is similar to `faccessat` with the `AT_EACCESS` flag in POSIX. - access-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path to check. - path: string, - /// The type of check to perform. - %type: access-type - ) -> result<_, error-code> - - /// Unlink a filesystem object that is not a directory. - /// - /// Return `error-code::is-directory` if the path refers to a directory. - /// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX. - unlink-file-at: func( - this: descriptor, - /// The relative path to a file to unlink. - path: string, - ) -> result<_, error-code> - - /// Change the permissions of a filesystem object that is not a directory. - /// - /// Note that the ultimate meanings of these permissions is - /// filesystem-specific. - /// - /// Note: This is similar to `fchmodat` in POSIX. - change-file-permissions-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path to operate on. - path: string, - /// The new permissions for the filesystem object. - modes: modes, - ) -> result<_, error-code> - - /// Change the permissions of a directory. - /// - /// Note that the ultimate meanings of these permissions is - /// filesystem-specific. - /// - /// Unlike in POSIX, the `executable` flag is not reinterpreted as a "search" - /// flag. `read` on a directory implies readability and searchability, and - /// `execute` is not valid for directories. - /// - /// Note: This is similar to `fchmodat` in POSIX. - change-directory-permissions-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path to operate on. - path: string, - /// The new permissions for the directory. - modes: modes, - ) -> result<_, error-code> - - /// Request a shared advisory lock for an open file. - /// - /// This requests a *shared* lock; more than one shared lock can be held for - /// a file at the same time. - /// - /// If the open file has an exclusive lock, this function downgrades the lock - /// to a shared lock. If it has a shared lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified how shared locks interact with locks acquired by - /// non-WASI programs. - /// - /// This function blocks until the lock can be acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_SH)` in Unix. - lock-shared: func(this: descriptor) -> result<_, error-code> - - /// Request an exclusive advisory lock for an open file. - /// - /// This requests an *exclusive* lock; no other locks may be held for the - /// file while an exclusive lock is held. - /// - /// If the open file has a shared lock and there are no exclusive locks held - /// for the file, this function upgrades the lock to an exclusive lock. If the - /// open file already has an exclusive lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified whether this function succeeds if the file descriptor - /// is not opened for writing. It is unspecified how exclusive locks interact - /// with locks acquired by non-WASI programs. - /// - /// This function blocks until the lock can be acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_EX)` in Unix. - lock-exclusive: func(this: descriptor) -> result<_, error-code> - - /// Request a shared advisory lock for an open file. - /// - /// This requests a *shared* lock; more than one shared lock can be held for - /// a file at the same time. - /// - /// If the open file has an exclusive lock, this function downgrades the lock - /// to a shared lock. If it has a shared lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified how shared locks interact with locks acquired by - /// non-WASI programs. - /// - /// This function returns `error-code::would-block` if the lock cannot be - /// acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_SH | LOCK_NB)` in Unix. - try-lock-shared: func(this: descriptor) -> result<_, error-code> - - /// Request an exclusive advisory lock for an open file. - /// - /// This requests an *exclusive* lock; no other locks may be held for the - /// file while an exclusive lock is held. - /// - /// If the open file has a shared lock and there are no exclusive locks held - /// for the file, this function upgrades the lock to an exclusive lock. If the - /// open file already has an exclusive lock, this function has no effect. - /// - /// This requests an *advisory* lock, meaning that the file could be accessed - /// by other programs that don't hold the lock. - /// - /// It is unspecified whether this function succeeds if the file descriptor - /// is not opened for writing. It is unspecified how exclusive locks interact - /// with locks acquired by non-WASI programs. - /// - /// This function returns `error-code::would-block` if the lock cannot be - /// acquired. - /// - /// Not all filesystems support locking; on filesystems which don't support - /// locking, this function returns `error-code::unsupported`. - /// - /// Note: This is similar to `flock(fd, LOCK_EX | LOCK_NB)` in Unix. - try-lock-exclusive: func(this: descriptor) -> result<_, error-code> - - /// Release a shared or exclusive lock on an open file. - /// - /// Note: This is similar to `flock(fd, LOCK_UN)` in Unix. - unlock: func(this: descriptor) -> result<_, error-code> - - /// Dispose of the specified `descriptor`, after which it may no longer - /// be used. - drop-descriptor: func(this: descriptor) - - /// A stream of directory entries. - /// - /// This [represents a stream of `dir-entry`](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Streams). - type directory-entry-stream = u32 - - /// Read a single directory entry from a `directory-entry-stream`. - read-directory-entry: func( - this: directory-entry-stream - ) -> result, error-code> - - /// Dispose of the specified `directory-entry-stream`, after which it may no longer - /// be used. - drop-directory-entry-stream: func(this: directory-entry-stream) - - /// Test whether two descriptors refer to the same filesystem object. - /// - /// In POSIX, this corresponds to testing whether the two descriptors have the - /// same device (`st_dev`) and inode (`st_ino` or `d_ino`) numbers. - /// wasi-filesystem does not expose device and inode numbers, so this function - /// may be used instead. - is-same-object: func(this: descriptor, other: descriptor) -> bool - - /// Return a hash of the metadata associated with a filesystem object referred - /// to by a descriptor. - /// - /// This returns a hash of the last-modification timestamp and file size, and - /// may also include the inode number, device number, birth timestamp, and - /// other metadata fields that may change when the file is modified or - /// replaced. It may also include a secret value chosen by the - /// implementation and not otherwise exposed. - /// - /// Implementations are encourated to provide the following properties: - /// - /// - If the file is not modified or replaced, the computed hash value should - /// usually not change. - /// - If the object is modified or replaced, the computed hash value should - /// usually change. - /// - The inputs to the hash should not be easily computable from the - /// computed hash. - /// - /// However, none of these is required. - metadata-hash: func( - this: descriptor, - ) -> result - - /// Return a hash of the metadata associated with a filesystem object referred - /// to by a directory descriptor and a relative path. - /// - /// This performs the same hash computation as `metadata-hash`. - metadata-hash-at: func( - this: descriptor, - /// Flags determining the method of how the path is resolved. - path-flags: path-flags, - /// The relative path of the file or directory to inspect. - path: string, - ) -> result -} diff --git a/crates/trigger/wasi/deps/filesystem/world.wit b/crates/trigger/wasi/deps/filesystem/world.wit deleted file mode 100644 index b51f484f8..000000000 --- a/crates/trigger/wasi/deps/filesystem/world.wit +++ /dev/null @@ -1,6 +0,0 @@ -package wasi:filesystem - -world example-world { - import types - import preopens -} diff --git a/crates/trigger/wasi/deps/http/incoming-handler.wit b/crates/trigger/wasi/deps/http/incoming-handler.wit deleted file mode 100644 index d0e270465..000000000 --- a/crates/trigger/wasi/deps/http/incoming-handler.wit +++ /dev/null @@ -1,24 +0,0 @@ -// The `wasi:http/incoming-handler` interface is meant to be exported by -// components and called by the host in response to a new incoming HTTP -// response. -// -// NOTE: in Preview3, this interface will be merged with -// `wasi:http/outgoing-handler` into a single `wasi:http/handler` interface -// that takes a `request` parameter and returns a `response` result. -// -interface incoming-handler { - use types.{incoming-request, response-outparam} - - // The `handle` function takes an outparam instead of returning its response - // so that the component may stream its response while streaming any other - // request or response bodies. The callee MUST write a response to the - // `response-out` and then finish the response before returning. The `handle` - // function is allowed to continue execution after finishing the response's - // output stream. While this post-response execution is taken off the - // critical path, since there is no return value, there is no way to report - // its success or failure. - handle: func( - request: incoming-request, - response-out: response-outparam - ) -} diff --git a/crates/trigger/wasi/deps/http/outgoing-handler.wit b/crates/trigger/wasi/deps/http/outgoing-handler.wit deleted file mode 100644 index 06c8e469f..000000000 --- a/crates/trigger/wasi/deps/http/outgoing-handler.wit +++ /dev/null @@ -1,18 +0,0 @@ -// The `wasi:http/outgoing-handler` interface is meant to be imported by -// components and implemented by the host. -// -// NOTE: in Preview3, this interface will be merged with -// `wasi:http/outgoing-handler` into a single `wasi:http/handler` interface -// that takes a `request` parameter and returns a `response` result. -// -interface outgoing-handler { - use types.{outgoing-request, request-options, future-incoming-response} - - // The parameter and result types of the `handle` function allow the caller - // to concurrently stream the bodies of the outgoing request and the incoming - // response. - handle: func( - request: outgoing-request, - options: option - ) -> future-incoming-response -} diff --git a/crates/trigger/wasi/deps/http/proxy.wit b/crates/trigger/wasi/deps/http/proxy.wit deleted file mode 100644 index 162ab32b2..000000000 --- a/crates/trigger/wasi/deps/http/proxy.wit +++ /dev/null @@ -1,34 +0,0 @@ -package wasi:http - -// The `wasi:http/proxy` world captures a widely-implementable intersection of -// hosts that includes HTTP forward and reverse proxies. Components targeting -// this world may concurrently stream in and out any number of incoming and -// outgoing HTTP requests. -world proxy { - // HTTP proxies have access to time and randomness. - import wasi:clocks/wall-clock - import wasi:clocks/monotonic-clock - import wasi:clocks/timezone - import wasi:random/random - - // Proxies have standard output and error streams which are expected to - // terminate in a developer-facing console provided by the host. - import wasi:cli/stdout - import wasi:cli/stderr - - // TODO: this is a temporary workaround until component tooling is able to - // gracefully handle the absence of stdin. Hosts must return an eof stream - // for this import, which is what wasi-libc + tooling will do automatically - // when this import is properly removed. - import wasi:cli/stdin - - // This is the default handler to use when user code simply wants to make an - // HTTP request (e.g., via `fetch()`). - import outgoing-handler - - // The host delivers incoming HTTP requests to a component by calling the - // `handle` function of this exported interface. A host may arbitrarily reuse - // or not reuse component instance when delivering incoming HTTP requests and - // thus a component must be able to handle 0..N calls to `handle`. - export incoming-handler -} diff --git a/crates/trigger/wasi/deps/http/types.wit b/crates/trigger/wasi/deps/http/types.wit deleted file mode 100644 index 7b7b01552..000000000 --- a/crates/trigger/wasi/deps/http/types.wit +++ /dev/null @@ -1,155 +0,0 @@ -// The `wasi:http/types` interface is meant to be imported by components to -// define the HTTP resource types and operations used by the component's -// imported and exported interfaces. -interface types { - use wasi:io/streams.{input-stream, output-stream} - use wasi:poll/poll.{pollable} - - // This type corresponds to HTTP standard Methods. - variant method { - get, - head, - post, - put, - delete, - connect, - options, - trace, - patch, - other(string) - } - - // This type corresponds to HTTP standard Related Schemes. - variant scheme { - HTTP, - HTTPS, - other(string) - } - - // TODO: perhaps better align with HTTP semantics? - // This type enumerates the different kinds of errors that may occur when - // initially returning a response. - variant error { - invalid-url(string), - timeout-error(string), - protocol-error(string), - unexpected-error(string) - } - - // This following block defines the `fields` resource which corresponds to - // HTTP standard Fields. Soon, when resource types are added, the `type - // fields = u32` type alias can be replaced by a proper `resource fields` - // definition containing all the functions using the method syntactic sugar. - type fields = u32 - drop-fields: func(fields: fields) - new-fields: func(entries: list>) -> fields - fields-get: func(fields: fields, name: string) -> list> - fields-set: func(fields: fields, name: string, value: list>) - fields-delete: func(fields: fields, name: string) - fields-append: func(fields: fields, name: string, value: list) - fields-entries: func(fields: fields) -> list>> - fields-clone: func(fields: fields) -> fields - - type headers = fields - type trailers = fields - - // The following block defines stream types which corresponds to the HTTP - // standard Contents and Trailers. With Preview3, all of these fields can be - // replaced by a stream>. In the interim, we need to - // build on separate resource types defined by `wasi:io/streams`. The - // `finish-` functions emulate the stream's result value and MUST be called - // exactly once after the final read/write from/to the stream before dropping - // the stream. - type incoming-stream = input-stream - type outgoing-stream = output-stream - finish-incoming-stream: func(s: incoming-stream) -> option - finish-outgoing-stream: func(s: outgoing-stream, trailers: option) - - // The following block defines the `incoming-request` and `outgoing-request` - // resource types that correspond to HTTP standard Requests. Soon, when - // resource types are added, the `u32` type aliases can be replaced by - // proper `resource` type definitions containing all the functions as - // methods. Later, Preview2 will allow both types to be merged together into - // a single `request` type (that uses the single `stream` type mentioned - // above). The `consume` and `write` methods may only be called once (and - // return failure thereafter). - type incoming-request = u32 - type outgoing-request = u32 - drop-incoming-request: func(request: incoming-request) - drop-outgoing-request: func(request: outgoing-request) - incoming-request-method: func(request: incoming-request) -> method - incoming-request-path-with-query: func(request: incoming-request) -> option - incoming-request-scheme: func(request: incoming-request) -> option - incoming-request-authority: func(request: incoming-request) -> option - incoming-request-headers: func(request: incoming-request) -> headers - incoming-request-consume: func(request: incoming-request) -> result - new-outgoing-request: func( - method: method, - path-with-query: option, - scheme: option, - authority: option, - headers: headers - ) -> outgoing-request - outgoing-request-write: func(request: outgoing-request) -> result - - // Additional optional parameters that can be set when making a request. - record request-options { - // The following timeouts are specific to the HTTP protocol and work - // independently of the overall timeouts passed to `io.poll.poll-oneoff`. - - // The timeout for the initial connect. - connect-timeout-ms: option, - - // The timeout for receiving the first byte of the response body. - first-byte-timeout-ms: option, - - // The timeout for receiving the next chunk of bytes in the response body - // stream. - between-bytes-timeout-ms: option - } - - // The following block defines a special resource type used by the - // `wasi:http/incoming-handler` interface. When resource types are added, this - // block can be replaced by a proper `resource response-outparam { ... }` - // definition. Later, with Preview3, the need for an outparam goes away entirely - // (the `wasi:http/handler` interface used for both incoming and outgoing can - // simply return a `stream`). - type response-outparam = u32 - drop-response-outparam: func(response: response-outparam) - set-response-outparam: func(param: response-outparam, response: result) -> result - - // This type corresponds to the HTTP standard Status Code. - type status-code = u16 - - // The following block defines the `incoming-response` and `outgoing-response` - // resource types that correspond to HTTP standard Responses. Soon, when - // resource types are added, the `u32` type aliases can be replaced by proper - // `resource` type definitions containing all the functions as methods. Later, - // Preview2 will allow both types to be merged together into a single `response` - // type (that uses the single `stream` type mentioned above). The `consume` and - // `write` methods may only be called once (and return failure thereafter). - type incoming-response = u32 - type outgoing-response = u32 - drop-incoming-response: func(response: incoming-response) - drop-outgoing-response: func(response: outgoing-response) - incoming-response-status: func(response: incoming-response) -> status-code - incoming-response-headers: func(response: incoming-response) -> headers - incoming-response-consume: func(response: incoming-response) -> result - new-outgoing-response: func( - status-code: status-code, - headers: headers - ) -> outgoing-response - outgoing-response-write: func(response: outgoing-response) -> result - - // The following block defines a special resource type used by the - // `wasi:http/outgoing-handler` interface to emulate - // `future>` in advance of Preview3. Given a - // `future-incoming-response`, the client can call the non-blocking `get` - // method to get the result if it is available. If the result is not available, - // the client can call `listen` to get a `pollable` that can be passed to - // `io.poll.poll-oneoff`. - type future-incoming-response = u32 - drop-future-incoming-response: func(f: future-incoming-response) - future-incoming-response-get: func(f: future-incoming-response) -> option> - listen-to-future-incoming-response: func(f: future-incoming-response) -> pollable -} diff --git a/crates/trigger/wasi/deps/io/streams.wit b/crates/trigger/wasi/deps/io/streams.wit deleted file mode 100644 index e2631f66a..000000000 --- a/crates/trigger/wasi/deps/io/streams.wit +++ /dev/null @@ -1,300 +0,0 @@ -package wasi:io - -/// WASI I/O is an I/O abstraction API which is currently focused on providing -/// stream types. -/// -/// In the future, the component model is expected to add built-in stream types; -/// when it does, they are expected to subsume this API. -interface streams { - use wasi:poll/poll.{pollable} - - /// Streams provide a sequence of data and then end; once they end, they - /// no longer provide any further data. - /// - /// For example, a stream reading from a file ends when the stream reaches - /// the end of the file. For another example, a stream reading from a - /// socket ends when the socket is closed. - enum stream-status { - /// The stream is open and may produce further data. - open, - /// When reading, this indicates that the stream will not produce - /// further data. - /// When writing, this indicates that the stream will no longer be read. - /// Further writes are still permitted. - ended, - } - - /// An input bytestream. In the future, this will be replaced by handle - /// types. - /// - /// `input-stream`s are *non-blocking* to the extent practical on underlying - /// platforms. I/O operations always return promptly; if fewer bytes are - /// promptly available than requested, they return the number of bytes promptly - /// available, which could even be zero. To wait for data to be available, - /// use the `subscribe-to-input-stream` function to obtain a `pollable` which - /// can be polled for using `wasi:poll/poll.poll_oneoff`. - /// - /// And at present, it is a `u32` instead of being an actual handle, until - /// the wit-bindgen implementation of handles and resources is ready. - /// - /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). - type input-stream = u32 - - /// Perform a non-blocking read from the stream. - /// - /// This function returns a list of bytes containing the data that was - /// read, along with a `stream-status` which, indicates whether further - /// reads are expected to produce data. The returned list will contain up to - /// `len` bytes; it may return fewer than requested, but not more. An - /// empty list and `stream-status:open` indicates no more data is - /// available at this time, and that the pollable given by - /// `subscribe-to-input-stream` will be ready when more data is available. - /// - /// Once a stream has reached the end, subsequent calls to `read` or - /// `skip` will always report `stream-status:ended` rather than producing more - /// data. - /// - /// When the caller gives a `len` of 0, it represents a request to read 0 - /// bytes. This read should always succeed and return an empty list and - /// the current `stream-status`. - /// - /// The `len` parameter is a `u64`, which could represent a list of u8 which - /// is not possible to allocate in wasm32, or not desirable to allocate as - /// as a return value by the callee. The callee may return a list of bytes - /// less than `len` in size while more bytes are available for reading. - read: func( - this: input-stream, - /// The maximum number of bytes to read - len: u64 - ) -> result, stream-status>> - - /// Read bytes from a stream, after blocking until at least one byte can - /// be read. Except for blocking, identical to `read`. - blocking-read: func( - this: input-stream, - /// The maximum number of bytes to read - len: u64 - ) -> result, stream-status>> - - /// Skip bytes from a stream. - /// - /// This is similar to the `read` function, but avoids copying the - /// bytes into the instance. - /// - /// Once a stream has reached the end, subsequent calls to read or - /// `skip` will always report end-of-stream rather than producing more - /// data. - /// - /// This function returns the number of bytes skipped, along with a - /// `stream-status` indicating whether the end of the stream was - /// reached. The returned value will be at most `len`; it may be less. - skip: func( - this: input-stream, - /// The maximum number of bytes to skip. - len: u64, - ) -> result> - - /// Skip bytes from a stream, after blocking until at least one byte - /// can be skipped. Except for blocking behavior, identical to `skip`. - blocking-skip: func( - this: input-stream, - /// The maximum number of bytes to skip. - len: u64, - ) -> result> - - /// Create a `pollable` which will resolve once either the specified stream - /// has bytes available to read or the other end of the stream has been - /// closed. - /// The created `pollable` is a child resource of the `input-stream`. - /// Implementations may trap if the `input-stream` is dropped before - /// all derived `pollable`s created with this function are dropped. - subscribe-to-input-stream: func(this: input-stream) -> pollable - - /// Dispose of the specified `input-stream`, after which it may no longer - /// be used. - /// Implementations may trap if this `input-stream` is dropped while child - /// `pollable` resources are still alive. - /// After this `input-stream` is dropped, implementations may report any - /// corresponding `output-stream` has `stream-state.closed`. - drop-input-stream: func(this: input-stream) - - /// An output bytestream. In the future, this will be replaced by handle - /// types. - /// - /// `output-stream`s are *non-blocking* to the extent practical on - /// underlying platforms. Except where specified otherwise, I/O operations also - /// always return promptly, after the number of bytes that can be written - /// promptly, which could even be zero. To wait for the stream to be ready to - /// accept data, the `subscribe-to-output-stream` function to obtain a - /// `pollable` which can be polled for using `wasi:poll`. - /// - /// And at present, it is a `u32` instead of being an actual handle, until - /// the wit-bindgen implementation of handles and resources is ready. - /// - /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). - type output-stream = u32 - - /// An error for output-stream operations. - /// - /// Contrary to input-streams, a closed output-stream is reported using - /// an error. - enum write-error { - /// The last operation (a write or flush) failed before completion. - last-operation-failed, - /// The stream is closed: no more input will be accepted by the - /// stream. A closed output-stream will return this error on all - /// future operations. - closed - } - /// Check readiness for writing. This function never blocks. - /// - /// Returns the number of bytes permitted for the next call to `write`, - /// or an error. Calling `write` with more bytes than this function has - /// permitted will trap. - /// - /// When this function returns 0 bytes, the `subscribe-to-output-stream` - /// pollable will become ready when this function will report at least - /// 1 byte, or an error. - check-write: func( - this: output-stream - ) -> result - - /// Perform a write. This function never blocks. - /// - /// Precondition: check-write gave permit of Ok(n) and contents has a - /// length of less than or equal to n. Otherwise, this function will trap. - /// - /// returns Err(closed) without writing if the stream has closed since - /// the last call to check-write provided a permit. - write: func( - this: output-stream, - contents: list - ) -> result<_, write-error> - - /// Perform a write of up to 4096 bytes, and then flush the stream. Block - /// until all of these operations are complete, or an error occurs. - /// - /// This is a convenience wrapper around the use of `check-write`, - /// `subscribe-to-output-stream`, `write`, and `flush`, and is implemented - /// with the following pseudo-code: - /// - /// ```text - /// let pollable = subscribe-to-output-stream(this); - /// while !contents.is_empty() { - /// // Wait for the stream to become writable - /// poll-oneoff(pollable); - /// let Ok(n) = check-write(this); // eliding error handling - /// let len = min(n, contents.len()); - /// let (chunk, rest) = contents.split_at(len); - /// write(this, chunk); // eliding error handling - /// contents = rest; - /// } - /// flush(this); - /// // Wait for completion of `flush` - /// poll-oneoff(pollable); - /// // Check for any errors that arose during `flush` - /// let _ = check-write(this); // eliding error handling - /// ``` - blocking-write-and-flush: func( - this: output-stream, - contents: list - ) -> result<_, write-error> - - /// Request to flush buffered output. This function never blocks. - /// - /// This tells the output-stream that the caller intends any buffered - /// output to be flushed. the output which is expected to be flushed - /// is all that has been passed to `write` prior to this call. - /// - /// Upon calling this function, the `output-stream` will not accept any - /// writes (`check-write` will return `ok(0)`) until the flush has - /// completed. The `subscribe-to-output-stream` pollable will become ready - /// when the flush has completed and the stream can accept more writes. - flush: func( - this: output-stream, - ) -> result<_, write-error> - - /// Request to flush buffered output, and block until flush completes - /// and stream is ready for writing again. - blocking-flush: func( - this: output-stream, - ) -> result<_, write-error> - - /// Create a `pollable` which will resolve once the output-stream - /// is ready for more writing, or an error has occured. When this - /// pollable is ready, `check-write` will return `ok(n)` with n>0, or an - /// error. - /// - /// If the stream is closed, this pollable is always ready immediately. - /// - /// The created `pollable` is a child resource of the `output-stream`. - /// Implementations may trap if the `output-stream` is dropped before - /// all derived `pollable`s created with this function are dropped. - subscribe-to-output-stream: func(this: output-stream) -> pollable - - /// Write zeroes to a stream. - /// - /// this should be used precisely like `write` with the exact same - /// preconditions (must use check-write first), but instead of - /// passing a list of bytes, you simply pass the number of zero-bytes - /// that should be written. - write-zeroes: func( - this: output-stream, - /// The number of zero-bytes to write - len: u64 - ) -> result<_, write-error> - - /// Read from one stream and write to another. - /// - /// This function returns the number of bytes transferred; it may be less - /// than `len`. - /// - /// Unlike other I/O functions, this function blocks until all the data - /// read from the input stream has been written to the output stream. - splice: func( - this: output-stream, - /// The stream to read from - src: input-stream, - /// The number of bytes to splice - len: u64, - ) -> result> - - /// Read from one stream and write to another, with blocking. - /// - /// This is similar to `splice`, except that it blocks until at least - /// one byte can be read. - blocking-splice: func( - this: output-stream, - /// The stream to read from - src: input-stream, - /// The number of bytes to splice - len: u64, - ) -> result> - - /// Forward the entire contents of an input stream to an output stream. - /// - /// This function repeatedly reads from the input stream and writes - /// the data to the output stream, until the end of the input stream - /// is reached, or an error is encountered. - /// - /// Unlike other I/O functions, this function blocks until the end - /// of the input stream is seen and all the data has been written to - /// the output stream. - /// - /// This function returns the number of bytes transferred, and the status of - /// the output stream. - forward: func( - this: output-stream, - /// The stream to read from - src: input-stream - ) -> result> - - - /// Dispose of the specified `output-stream`, after which it may no longer - /// be used. - /// Implementations may trap if this `output-stream` is dropped while - /// child `pollable` resources are still alive. - /// After this `output-stream` is dropped, implementations may report any - /// corresponding `input-stream` has `stream-state.closed`. - drop-output-stream: func(this: output-stream) -} diff --git a/crates/trigger/wasi/deps/logging/logging.wit b/crates/trigger/wasi/deps/logging/logging.wit deleted file mode 100644 index b0cc4514d..000000000 --- a/crates/trigger/wasi/deps/logging/logging.wit +++ /dev/null @@ -1,37 +0,0 @@ -package wasi:logging - -/// WASI Logging is a logging API intended to let users emit log messages with -/// simple priority levels and context values. -interface logging { - /// A log level, describing a kind of message. - enum level { - /// Describes messages about the values of variables and the flow of - /// control within a program. - trace, - - /// Describes messages likely to be of interest to someone debugging a - /// program. - debug, - - /// Describes messages likely to be of interest to someone monitoring a - /// program. - info, - - /// Describes messages indicating hazardous situations. - warn, - - /// Describes messages indicating serious errors. - error, - - /// Describes messages indicating fatal errors. - critical, - } - - /// Emit a log message. - /// - /// A log message has a `level` describing what kind of message is being - /// sent, a context, which is an uninterpreted string meant to help - /// consumers group similar messages, and a string containing the message - /// text. - log: func(level: level, context: string, message: string) -} diff --git a/crates/trigger/wasi/deps/poll/poll.wit b/crates/trigger/wasi/deps/poll/poll.wit deleted file mode 100644 index a6334c557..000000000 --- a/crates/trigger/wasi/deps/poll/poll.wit +++ /dev/null @@ -1,39 +0,0 @@ -package wasi:poll - -/// A poll API intended to let users wait for I/O events on multiple handles -/// at once. -interface poll { - /// A "pollable" handle. - /// - /// This is conceptually represents a `stream<_, _>`, or in other words, - /// a stream that one can wait on, repeatedly, but which does not itself - /// produce any data. It's temporary scaffolding until component-model's - /// async features are ready. - /// - /// And at present, it is a `u32` instead of being an actual handle, until - /// the wit-bindgen implementation of handles and resources is ready. - /// - /// `pollable` lifetimes are not automatically managed. Users must ensure - /// that they do not outlive the resource they reference. - /// - /// This [represents a resource](https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#Resources). - type pollable = u32 - - /// Dispose of the specified `pollable`, after which it may no longer - /// be used. - drop-pollable: func(this: pollable) - - /// Poll for completion on a set of pollables. - /// - /// The "oneoff" in the name refers to the fact that this function must do a - /// linear scan through the entire list of subscriptions, which may be - /// inefficient if the number is large and the same subscriptions are used - /// many times. In the future, this is expected to be obsoleted by the - /// component model async proposal, which will include a scalable waiting - /// facility. - /// - /// The result list is the same length as the argument - /// list, and indicates the readiness of each corresponding - /// element in that / list, with true indicating ready. - poll-oneoff: func(in: list) -> list -} diff --git a/crates/trigger/wasi/deps/random/insecure-seed.wit b/crates/trigger/wasi/deps/random/insecure-seed.wit deleted file mode 100644 index ff2ff65d0..000000000 --- a/crates/trigger/wasi/deps/random/insecure-seed.wit +++ /dev/null @@ -1,24 +0,0 @@ -/// The insecure-seed interface for seeding hash-map DoS resistance. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface insecure-seed { - /// Return a 128-bit value that may contain a pseudo-random value. - /// - /// The returned value is not required to be computed from a CSPRNG, and may - /// even be entirely deterministic. Host implementations are encouraged to - /// provide pseudo-random values to any program exposed to - /// attacker-controlled content, to enable DoS protection built into many - /// languages' hash-map implementations. - /// - /// This function is intended to only be called once, by a source language - /// to initialize Denial Of Service (DoS) protection in its hash-map - /// implementation. - /// - /// # Expected future evolution - /// - /// This will likely be changed to a value import, to prevent it from being - /// called multiple times and potentially used for purposes other than DoS - /// protection. - insecure-seed: func() -> tuple -} diff --git a/crates/trigger/wasi/deps/random/insecure.wit b/crates/trigger/wasi/deps/random/insecure.wit deleted file mode 100644 index ff0826822..000000000 --- a/crates/trigger/wasi/deps/random/insecure.wit +++ /dev/null @@ -1,21 +0,0 @@ -/// The insecure interface for insecure pseudo-random numbers. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface insecure { - /// Return `len` insecure pseudo-random bytes. - /// - /// This function is not cryptographically secure. Do not use it for - /// anything related to security. - /// - /// There are no requirements on the values of the returned bytes, however - /// implementations are encouraged to return evenly distributed values with - /// a long period. - get-insecure-random-bytes: func(len: u64) -> list - - /// Return an insecure pseudo-random `u64` value. - /// - /// This function returns the same type of pseudo-random data as - /// `get-insecure-random-bytes`, represented as a `u64`. - get-insecure-random-u64: func() -> u64 -} diff --git a/crates/trigger/wasi/deps/random/random.wit b/crates/trigger/wasi/deps/random/random.wit deleted file mode 100644 index f2bd6358c..000000000 --- a/crates/trigger/wasi/deps/random/random.wit +++ /dev/null @@ -1,25 +0,0 @@ -package wasi:random - -/// WASI Random is a random data API. -/// -/// It is intended to be portable at least between Unix-family platforms and -/// Windows. -interface random { - /// Return `len` cryptographically-secure pseudo-random bytes. - /// - /// This function must produce data from an adequately seeded - /// cryptographically-secure pseudo-random number generator (CSPRNG), so it - /// must not block, from the perspective of the calling program, and the - /// returned data is always unpredictable. - /// - /// This function must always return fresh pseudo-random data. Deterministic - /// environments must omit this function, rather than implementing it with - /// deterministic data. - get-random-bytes: func(len: u64) -> list - - /// Return a cryptographically-secure pseudo-random `u64` value. - /// - /// This function returns the same type of pseudo-random data as - /// `get-random-bytes`, represented as a `u64`. - get-random-u64: func() -> u64 -} diff --git a/crates/trigger/wasi/deps/sockets/instance-network.wit b/crates/trigger/wasi/deps/sockets/instance-network.wit deleted file mode 100644 index d911a29cc..000000000 --- a/crates/trigger/wasi/deps/sockets/instance-network.wit +++ /dev/null @@ -1,9 +0,0 @@ - -/// This interface provides a value-export of the default network handle.. -interface instance-network { - use network.{network} - - /// Get a handle to the default network. - instance-network: func() -> network - -} diff --git a/crates/trigger/wasi/deps/sockets/ip-name-lookup.wit b/crates/trigger/wasi/deps/sockets/ip-name-lookup.wit deleted file mode 100644 index f15d19d03..000000000 --- a/crates/trigger/wasi/deps/sockets/ip-name-lookup.wit +++ /dev/null @@ -1,69 +0,0 @@ - -interface ip-name-lookup { - use wasi:poll/poll.{pollable} - use network.{network, error-code, ip-address, ip-address-family} - - - /// Resolve an internet host name to a list of IP addresses. - /// - /// See the wasi-socket proposal README.md for a comparison with getaddrinfo. - /// - /// # Parameters - /// - `name`: The name to look up. IP addresses are not allowed. Unicode domain names are automatically converted - /// to ASCII using IDNA encoding. - /// - `address-family`: If provided, limit the results to addresses of this specific address family. - /// - `include-unavailable`: When set to true, this function will also return addresses of which the runtime - /// thinks (or knows) can't be connected to at the moment. For example, this will return IPv6 addresses on - /// systems without an active IPv6 interface. Notes: - /// - Even when no public IPv6 interfaces are present or active, names like "localhost" can still resolve to an IPv6 address. - /// - Whatever is "available" or "unavailable" is volatile and can change everytime a network cable is unplugged. - /// - /// This function never blocks. It either immediately fails or immediately returns successfully with a `resolve-address-stream` - /// that can be used to (asynchronously) fetch the results. - /// - /// At the moment, the stream never completes successfully with 0 items. Ie. the first call - /// to `resolve-next-address` never returns `ok(none)`. This may change in the future. - /// - /// # Typical errors - /// - `invalid-name`: `name` is a syntactically invalid domain name. - /// - `invalid-name`: `name` is an IP address. - /// - `address-family-not-supported`: The specified `address-family` is not supported. (EAI_FAMILY) - /// - /// # References: - /// - - /// - - /// - - /// - - resolve-addresses: func(network: network, name: string, address-family: option, include-unavailable: bool) -> result - - - - type resolve-address-stream = u32 - - /// Returns the next address from the resolver. - /// - /// This function should be called multiple times. On each call, it will - /// return the next address in connection order preference. If all - /// addresses have been exhausted, this function returns `none`. - /// After which, you should release the stream with `drop-resolve-address-stream`. - /// - /// This function never returns IPv4-mapped IPv6 addresses. - /// - /// # Typical errors - /// - `name-unresolvable`: Name does not exist or has no suitable associated IP addresses. (EAI_NONAME, EAI_NODATA, EAI_ADDRFAMILY) - /// - `temporary-resolver-failure`: A temporary failure in name resolution occurred. (EAI_AGAIN) - /// - `permanent-resolver-failure`: A permanent failure in name resolution occurred. (EAI_FAIL) - /// - `would-block`: A result is not available yet. (EWOULDBLOCK, EAGAIN) - resolve-next-address: func(this: resolve-address-stream) -> result, error-code> - - /// Dispose of the specified `resolve-address-stream`, after which it may no longer be used. - /// - /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. - drop-resolve-address-stream: func(this: resolve-address-stream) - - /// Create a `pollable` which will resolve once the stream is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func(this: resolve-address-stream) -> pollable -} diff --git a/crates/trigger/wasi/deps/sockets/network.wit b/crates/trigger/wasi/deps/sockets/network.wit deleted file mode 100644 index a198ea801..000000000 --- a/crates/trigger/wasi/deps/sockets/network.wit +++ /dev/null @@ -1,187 +0,0 @@ -package wasi:sockets - -interface network { - /// An opaque resource that represents access to (a subset of) the network. - /// This enables context-based security for networking. - /// There is no need for this to map 1:1 to a physical network interface. - /// - /// FYI, In the future this will be replaced by handle types. - type network = u32 - - /// Dispose of the specified `network`, after which it may no longer be used. - /// - /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. - drop-network: func(this: network) - - - /// Error codes. - /// - /// In theory, every API can return any error code. - /// In practice, API's typically only return the errors documented per API - /// combined with a couple of errors that are always possible: - /// - `unknown` - /// - `access-denied` - /// - `not-supported` - /// - `out-of-memory` - /// - /// See each individual API for what the POSIX equivalents are. They sometimes differ per API. - enum error-code { - // ### GENERAL ERRORS ### - - /// Unknown error - unknown, - - /// Access denied. - /// - /// POSIX equivalent: EACCES, EPERM - access-denied, - - /// The operation is not supported. - /// - /// POSIX equivalent: EOPNOTSUPP - not-supported, - - /// Not enough memory to complete the operation. - /// - /// POSIX equivalent: ENOMEM, ENOBUFS, EAI_MEMORY - out-of-memory, - - /// The operation timed out before it could finish completely. - timeout, - - /// This operation is incompatible with another asynchronous operation that is already in progress. - concurrency-conflict, - - /// Trying to finish an asynchronous operation that: - /// - has not been started yet, or: - /// - was already finished by a previous `finish-*` call. - /// - /// Note: this is scheduled to be removed when `future`s are natively supported. - not-in-progress, - - /// The operation has been aborted because it could not be completed immediately. - /// - /// Note: this is scheduled to be removed when `future`s are natively supported. - would-block, - - - // ### IP ERRORS ### - - /// The specified address-family is not supported. - address-family-not-supported, - - /// An IPv4 address was passed to an IPv6 resource, or vice versa. - address-family-mismatch, - - /// The socket address is not a valid remote address. E.g. the IP address is set to INADDR_ANY, or the port is set to 0. - invalid-remote-address, - - /// The operation is only supported on IPv4 resources. - ipv4-only-operation, - - /// The operation is only supported on IPv6 resources. - ipv6-only-operation, - - - - // ### TCP & UDP SOCKET ERRORS ### - - /// A new socket resource could not be created because of a system limit. - new-socket-limit, - - /// The socket is already attached to another network. - already-attached, - - /// The socket is already bound. - already-bound, - - /// The socket is already in the Connection state. - already-connected, - - /// The socket is not bound to any local address. - not-bound, - - /// The socket is not in the Connection state. - not-connected, - - /// A bind operation failed because the provided address is not an address that the `network` can bind to. - address-not-bindable, - - /// A bind operation failed because the provided address is already in use. - address-in-use, - - /// A bind operation failed because there are no ephemeral ports available. - ephemeral-ports-exhausted, - - /// The remote address is not reachable - remote-unreachable, - - - // ### TCP SOCKET ERRORS ### - - /// The socket is already in the Listener state. - already-listening, - - /// The socket is already in the Listener state. - not-listening, - - /// The connection was forcefully rejected - connection-refused, - - /// The connection was reset. - connection-reset, - - - // ### UDP SOCKET ERRORS ### - datagram-too-large, - - - // ### NAME LOOKUP ERRORS ### - - /// The provided name is a syntactically invalid domain name. - invalid-name, - - /// Name does not exist or has no suitable associated IP addresses. - name-unresolvable, - - /// A temporary failure in name resolution occurred. - temporary-resolver-failure, - - /// A permanent failure in name resolution occurred. - permanent-resolver-failure, - } - - enum ip-address-family { - /// Similar to `AF_INET` in POSIX. - ipv4, - - /// Similar to `AF_INET6` in POSIX. - ipv6, - } - - type ipv4-address = tuple - type ipv6-address = tuple - - variant ip-address { - ipv4(ipv4-address), - ipv6(ipv6-address), - } - - record ipv4-socket-address { - port: u16, // sin_port - address: ipv4-address, // sin_addr - } - - record ipv6-socket-address { - port: u16, // sin6_port - flow-info: u32, // sin6_flowinfo - address: ipv6-address, // sin6_addr - scope-id: u32, // sin6_scope_id - } - - variant ip-socket-address { - ipv4(ipv4-socket-address), - ipv6(ipv6-socket-address), - } - -} diff --git a/crates/trigger/wasi/deps/sockets/tcp-create-socket.wit b/crates/trigger/wasi/deps/sockets/tcp-create-socket.wit deleted file mode 100644 index f43bc8979..000000000 --- a/crates/trigger/wasi/deps/sockets/tcp-create-socket.wit +++ /dev/null @@ -1,27 +0,0 @@ - -interface tcp-create-socket { - use network.{network, error-code, ip-address-family} - use tcp.{tcp-socket} - - /// Create a new TCP socket. - /// - /// Similar to `socket(AF_INET or AF_INET6, SOCK_STREAM, IPPROTO_TCP)` in POSIX. - /// - /// This function does not require a network capability handle. This is considered to be safe because - /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`listen`/`connect` - /// is called, the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - /// - /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - /// - /// # Typical errors - /// - `not-supported`: The host does not support TCP sockets. (EOPNOTSUPP) - /// - `address-family-not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References - /// - - /// - - /// - - /// - - create-tcp-socket: func(address-family: ip-address-family) -> result -} diff --git a/crates/trigger/wasi/deps/sockets/tcp.wit b/crates/trigger/wasi/deps/sockets/tcp.wit deleted file mode 100644 index 3922769b3..000000000 --- a/crates/trigger/wasi/deps/sockets/tcp.wit +++ /dev/null @@ -1,268 +0,0 @@ - -interface tcp { - use wasi:io/streams.{input-stream, output-stream} - use wasi:poll/poll.{pollable} - use network.{network, error-code, ip-socket-address, ip-address-family} - - /// A TCP socket handle. - type tcp-socket = u32 - - - enum shutdown-type { - /// Similar to `SHUT_RD` in POSIX. - receive, - - /// Similar to `SHUT_WR` in POSIX. - send, - - /// Similar to `SHUT_RDWR` in POSIX. - both, - } - - - /// Bind the socket to a specific network on the provided IP address and port. - /// - /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - /// network interface(s) to bind to. - /// If the TCP/UDP port is zero, the socket will be bound to a random free port. - /// - /// When a socket is not explicitly bound, the first invocation to a listen or connect operation will - /// implicitly bind the socket. - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `address-family-mismatch`: The `local-address` has the wrong address family. (EINVAL) - /// - `already-bound`: The socket is already bound. (EINVAL) - /// - `concurrency-conflict`: Another `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - /// - /// # Typical `finish` errors - /// - `ephemeral-ports-exhausted`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - /// - `address-in-use`: Address is already in use. (EADDRINUSE) - /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - /// - `not-in-progress`: A `bind` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-bind: func(this: tcp-socket, network: network, local-address: ip-socket-address) -> result<_, error-code> - finish-bind: func(this: tcp-socket) -> result<_, error-code> - - /// Connect to a remote endpoint. - /// - /// On success: - /// - the socket is transitioned into the Connection state - /// - a pair of streams is returned that can be used to read & write to the connection - /// - /// # Typical `start` errors - /// - `address-family-mismatch`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-remote-address`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EADDRNOTAVAIL on Windows) - /// - `invalid-remote-address`: The port in `remote-address` is set to 0. (EADDRNOTAVAIL on Windows) - /// - `already-attached`: The socket is already attached to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - /// - `already-connected`: The socket is already in the Connection state. (EISCONN) - /// - `already-listening`: The socket is already in the Listener state. (EOPNOTSUPP, EINVAL on Windows) - /// - `concurrency-conflict`: Another `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - /// - /// # Typical `finish` errors - /// - `timeout`: Connection timed out. (ETIMEDOUT) - /// - `connection-refused`: The connection was forcefully rejected. (ECONNREFUSED) - /// - `connection-reset`: The connection was reset. (ECONNRESET) - /// - `remote-unreachable`: The remote address is not reachable. (EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - /// - `ephemeral-ports-exhausted`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - /// - `not-in-progress`: A `connect` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-connect: func(this: tcp-socket, network: network, remote-address: ip-socket-address) -> result<_, error-code> - /// Note: the returned `input-stream` and `output-stream` are child - /// resources of the `tcp-socket`. Implementations may trap if the - /// `tcp-socket` is dropped before both of these streams are dropped. - finish-connect: func(this: tcp-socket) -> result, error-code> - - /// Start listening for new connections. - /// - /// Transitions the socket into the Listener state. - /// - /// Unlike POSIX: - /// - this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - the socket must already be explicitly bound. - /// - /// # Typical `start` errors - /// - `not-bound`: The socket is not bound to any local address. (EDESTADDRREQ) - /// - `already-connected`: The socket is already in the Connection state. (EISCONN, EINVAL on BSD) - /// - `already-listening`: The socket is already in the Listener state. - /// - `concurrency-conflict`: Another `bind`, `connect` or `listen` operation is already in progress. (EINVAL on BSD) - /// - /// # Typical `finish` errors - /// - `ephemeral-ports-exhausted`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE) - /// - `not-in-progress`: A `listen` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-listen: func(this: tcp-socket) -> result<_, error-code> - finish-listen: func(this: tcp-socket) -> result<_, error-code> - - /// Accept a new client socket. - /// - /// The returned socket is bound and in the Connection state. - /// - /// On success, this function returns the newly accepted client socket along with - /// a pair of streams that can be used to read & write to the connection. - /// - /// Note: the returned `input-stream` and `output-stream` are child - /// resources of the returned `tcp-socket`. Implementations may trap if the - /// `tcp-socket` is dropped before its child streams are dropped. - /// - /// # Typical errors - /// - `not-listening`: Socket is not in the Listener state. (EINVAL) - /// - `would-block`: No pending connections at the moment. (EWOULDBLOCK, EAGAIN) - /// - /// Host implementations must skip over transient errors returned by the native accept syscall. - /// - /// # References - /// - - /// - - /// - - /// - - accept: func(this: tcp-socket) -> result, error-code> - - /// Get the bound local address. - /// - /// # Typical errors - /// - `not-bound`: The socket is not bound to any local address. - /// - /// # References - /// - - /// - - /// - - /// - - local-address: func(this: tcp-socket) -> result - - /// Get the bound remote address. - /// - /// # Typical errors - /// - `not-connected`: The socket is not connected to a remote address. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - remote-address: func(this: tcp-socket) -> result - - /// Whether this is a IPv4 or IPv6 socket. - /// - /// Equivalent to the SO_DOMAIN socket option. - address-family: func(this: tcp-socket) -> ip-address-family - - /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. - /// - /// Equivalent to the IPV6_V6ONLY socket option. - /// - /// # Typical errors - /// - `ipv6-only-operation`: (get/set) `this` socket is an IPv4 socket. - /// - `already-bound`: (set) The socket is already bound. - /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - ipv6-only: func(this: tcp-socket) -> result - set-ipv6-only: func(this: tcp-socket, value: bool) -> result<_, error-code> - - /// Hints the desired listen queue size. Implementations are free to ignore this. - /// - /// # Typical errors - /// - `already-connected`: (set) The socket is already in the Connection state. - /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - set-listen-backlog-size: func(this: tcp-socket, value: u64) -> result<_, error-code> - - /// Equivalent to the SO_KEEPALIVE socket option. - /// - /// # Typical errors - /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - keep-alive: func(this: tcp-socket) -> result - set-keep-alive: func(this: tcp-socket, value: bool) -> result<_, error-code> - - /// Equivalent to the TCP_NODELAY socket option. - /// - /// # Typical errors - /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - no-delay: func(this: tcp-socket) -> result - set-no-delay: func(this: tcp-socket, value: bool) -> result<_, error-code> - - /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - /// - /// # Typical errors - /// - `already-connected`: (set) The socket is already in the Connection state. - /// - `already-listening`: (set) The socket is already in the Listener state. - /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - unicast-hop-limit: func(this: tcp-socket) -> result - set-unicast-hop-limit: func(this: tcp-socket, value: u8) -> result<_, error-code> - - /// The kernel buffer space reserved for sends/receives on this socket. - /// - /// Note #1: an implementation may choose to cap or round the buffer size when setting the value. - /// In other words, after setting a value, reading the same setting back may return a different value. - /// - /// Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of - /// actual data to be sent/received by the application, because the kernel might also use the buffer space - /// for internal metadata structures. - /// - /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - /// - /// # Typical errors - /// - `already-connected`: (set) The socket is already in the Connection state. - /// - `already-listening`: (set) The socket is already in the Listener state. - /// - `concurrency-conflict`: (set) A `bind`, `connect` or `listen` operation is already in progress. (EALREADY) - receive-buffer-size: func(this: tcp-socket) -> result - set-receive-buffer-size: func(this: tcp-socket, value: u64) -> result<_, error-code> - send-buffer-size: func(this: tcp-socket) -> result - set-send-buffer-size: func(this: tcp-socket, value: u64) -> result<_, error-code> - - /// Create a `pollable` which will resolve once the socket is ready for I/O. - /// - /// The created `pollable` is a child resource of the `tcp-socket`. - /// Implementations may trap if the `tcp-socket` is dropped before all - /// derived `pollable`s created with this function are dropped. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func(this: tcp-socket) -> pollable - - /// Initiate a graceful shutdown. - /// - /// - receive: the socket is not expecting to receive any more data from the peer. All subsequent read - /// operations on the `input-stream` associated with this socket will return an End Of Stream indication. - /// Any data still in the receive queue at time of calling `shutdown` will be discarded. - /// - send: the socket is not expecting to send any more data to the peer. All subsequent write - /// operations on the `output-stream` associated with this socket will return an error. - /// - both: same effect as receive & send combined. - /// - /// The shutdown function does not close (drop) the socket. - /// - /// # Typical errors - /// - `not-connected`: The socket is not in the Connection state. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - shutdown: func(this: tcp-socket, shutdown-type: shutdown-type) -> result<_, error-code> - - /// Dispose of the specified `tcp-socket`, after which it may no longer be used. - /// - /// Similar to the POSIX `close` function. - /// - /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. - drop-tcp-socket: func(this: tcp-socket) -} diff --git a/crates/trigger/wasi/deps/sockets/udp-create-socket.wit b/crates/trigger/wasi/deps/sockets/udp-create-socket.wit deleted file mode 100644 index cd4c08fb1..000000000 --- a/crates/trigger/wasi/deps/sockets/udp-create-socket.wit +++ /dev/null @@ -1,27 +0,0 @@ - -interface udp-create-socket { - use network.{network, error-code, ip-address-family} - use udp.{udp-socket} - - /// Create a new UDP socket. - /// - /// Similar to `socket(AF_INET or AF_INET6, SOCK_DGRAM, IPPROTO_UDP)` in POSIX. - /// - /// This function does not require a network capability handle. This is considered to be safe because - /// at time of creation, the socket is not bound to any `network` yet. Up to the moment `bind`/`connect` is called, - /// the socket is effectively an in-memory configuration object, unable to communicate with the outside world. - /// - /// All sockets are non-blocking. Use the wasi-poll interface to block on asynchronous operations. - /// - /// # Typical errors - /// - `not-supported`: The host does not support UDP sockets. (EOPNOTSUPP) - /// - `address-family-not-supported`: The specified `address-family` is not supported. (EAFNOSUPPORT) - /// - `new-socket-limit`: The new socket resource could not be created because of a system limit. (EMFILE, ENFILE) - /// - /// # References: - /// - - /// - - /// - - /// - - create-udp-socket: func(address-family: ip-address-family) -> result -} diff --git a/crates/trigger/wasi/deps/sockets/udp.wit b/crates/trigger/wasi/deps/sockets/udp.wit deleted file mode 100644 index 700b9e247..000000000 --- a/crates/trigger/wasi/deps/sockets/udp.wit +++ /dev/null @@ -1,220 +0,0 @@ - -interface udp { - use wasi:poll/poll.{pollable} - use network.{network, error-code, ip-socket-address, ip-address-family} - - - /// A UDP socket handle. - type udp-socket = u32 - - - record datagram { - data: list, // Theoretical max size: ~64 KiB. In practice, typically less than 1500 bytes. - remote-address: ip-socket-address, - - /// Possible future additions: - /// local-address: ip-socket-address, // IP_PKTINFO / IP_RECVDSTADDR / IPV6_PKTINFO - /// local-interface: u32, // IP_PKTINFO / IP_RECVIF - /// ttl: u8, // IP_RECVTTL - /// dscp: u6, // IP_RECVTOS - /// ecn: u2, // IP_RECVTOS - } - - - - /// Bind the socket to a specific network on the provided IP address and port. - /// - /// If the IP address is zero (`0.0.0.0` in IPv4, `::` in IPv6), it is left to the implementation to decide which - /// network interface(s) to bind to. - /// If the TCP/UDP port is zero, the socket will be bound to a random free port. - /// - /// When a socket is not explicitly bound, the first invocation to connect will implicitly bind the socket. - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `address-family-mismatch`: The `local-address` has the wrong address family. (EINVAL) - /// - `already-bound`: The socket is already bound. (EINVAL) - /// - `concurrency-conflict`: Another `bind` or `connect` operation is already in progress. (EALREADY) - /// - /// # Typical `finish` errors - /// - `ephemeral-ports-exhausted`: No ephemeral ports available. (EADDRINUSE, ENOBUFS on Windows) - /// - `address-in-use`: Address is already in use. (EADDRINUSE) - /// - `address-not-bindable`: `local-address` is not an address that the `network` can bind to. (EADDRNOTAVAIL) - /// - `not-in-progress`: A `bind` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-bind: func(this: udp-socket, network: network, local-address: ip-socket-address) -> result<_, error-code> - finish-bind: func(this: udp-socket) -> result<_, error-code> - - /// Set the destination address. - /// - /// The local-address is updated based on the best network path to `remote-address`. - /// - /// When a destination address is set: - /// - all receive operations will only return datagrams sent from the provided `remote-address`. - /// - the `send` function can only be used to send to this destination. - /// - /// Note that this function does not generate any network traffic and the peer is not aware of this "connection". - /// - /// Unlike in POSIX, this function is async. This enables interactive WASI hosts to inject permission prompts. - /// - /// # Typical `start` errors - /// - `address-family-mismatch`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-remote-address`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-remote-address`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `already-attached`: The socket is already bound to a different network. The `network` passed to `connect` must be identical to the one passed to `bind`. - /// - `concurrency-conflict`: Another `bind` or `connect` operation is already in progress. (EALREADY) - /// - /// # Typical `finish` errors - /// - `ephemeral-ports-exhausted`: Tried to perform an implicit bind, but there were no ephemeral ports available. (EADDRINUSE, EADDRNOTAVAIL on Linux, EAGAIN on BSD) - /// - `not-in-progress`: A `connect` operation is not in progress. - /// - `would-block`: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - start-connect: func(this: udp-socket, network: network, remote-address: ip-socket-address) -> result<_, error-code> - finish-connect: func(this: udp-socket) -> result<_, error-code> - - /// Receive messages on the socket. - /// - /// This function attempts to receive up to `max-results` datagrams on the socket without blocking. - /// The returned list may contain fewer elements than requested, but never more. - /// If `max-results` is 0, this function returns successfully with an empty list. - /// - /// # Typical errors - /// - `not-bound`: The socket is not bound to any local address. (EINVAL) - /// - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - /// - `would-block`: There is no pending data available to be read at the moment. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - /// - - /// - - /// - - /// - - receive: func(this: udp-socket, max-results: u64) -> result, error-code> - - /// Send messages on the socket. - /// - /// This function attempts to send all provided `datagrams` on the socket without blocking and - /// returns how many messages were actually sent (or queued for sending). - /// - /// This function semantically behaves the same as iterating the `datagrams` list and sequentially - /// sending each individual datagram until either the end of the list has been reached or the first error occurred. - /// If at least one datagram has been sent successfully, this function never returns an error. - /// - /// If the input list is empty, the function returns `ok(0)`. - /// - /// The remote address option is required. To send a message to the "connected" peer, - /// call `remote-address` to get their address. - /// - /// # Typical errors - /// - `address-family-mismatch`: The `remote-address` has the wrong address family. (EAFNOSUPPORT) - /// - `invalid-remote-address`: The IP address in `remote-address` is set to INADDR_ANY (`0.0.0.0` / `::`). (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `invalid-remote-address`: The port in `remote-address` is set to 0. (EDESTADDRREQ, EADDRNOTAVAIL) - /// - `already-connected`: The socket is in "connected" mode and the `datagram.remote-address` does not match the address passed to `connect`. (EISCONN) - /// - `not-bound`: The socket is not bound to any local address. Unlike POSIX, this function does not perform an implicit bind. - /// - `remote-unreachable`: The remote address is not reachable. (ECONNREFUSED, ECONNRESET, ENETRESET on Windows, EHOSTUNREACH, EHOSTDOWN, ENETUNREACH, ENETDOWN) - /// - `datagram-too-large`: The datagram is too large. (EMSGSIZE) - /// - `would-block`: The send buffer is currently full. (EWOULDBLOCK, EAGAIN) - /// - /// # References - /// - - /// - - /// - - /// - - /// - - /// - - /// - - /// - - send: func(this: udp-socket, datagrams: list) -> result - - /// Get the current bound address. - /// - /// # Typical errors - /// - `not-bound`: The socket is not bound to any local address. - /// - /// # References - /// - - /// - - /// - - /// - - local-address: func(this: udp-socket) -> result - - /// Get the address set with `connect`. - /// - /// # Typical errors - /// - `not-connected`: The socket is not connected to a remote address. (ENOTCONN) - /// - /// # References - /// - - /// - - /// - - /// - - remote-address: func(this: udp-socket) -> result - - /// Whether this is a IPv4 or IPv6 socket. - /// - /// Equivalent to the SO_DOMAIN socket option. - address-family: func(this: udp-socket) -> ip-address-family - - /// Whether IPv4 compatibility (dual-stack) mode is disabled or not. - /// - /// Equivalent to the IPV6_V6ONLY socket option. - /// - /// # Typical errors - /// - `ipv6-only-operation`: (get/set) `this` socket is an IPv4 socket. - /// - `already-bound`: (set) The socket is already bound. - /// - `not-supported`: (set) Host does not support dual-stack sockets. (Implementations are not required to.) - /// - `concurrency-conflict`: (set) Another `bind` or `connect` operation is already in progress. (EALREADY) - ipv6-only: func(this: udp-socket) -> result - set-ipv6-only: func(this: udp-socket, value: bool) -> result<_, error-code> - - /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. - /// - /// # Typical errors - /// - `concurrency-conflict`: (set) Another `bind` or `connect` operation is already in progress. (EALREADY) - unicast-hop-limit: func(this: udp-socket) -> result - set-unicast-hop-limit: func(this: udp-socket, value: u8) -> result<_, error-code> - - /// The kernel buffer space reserved for sends/receives on this socket. - /// - /// Note #1: an implementation may choose to cap or round the buffer size when setting the value. - /// In other words, after setting a value, reading the same setting back may return a different value. - /// - /// Note #2: there is not necessarily a direct relationship between the kernel buffer size and the bytes of - /// actual data to be sent/received by the application, because the kernel might also use the buffer space - /// for internal metadata structures. - /// - /// Equivalent to the SO_RCVBUF and SO_SNDBUF socket options. - /// - /// # Typical errors - /// - `concurrency-conflict`: (set) Another `bind` or `connect` operation is already in progress. (EALREADY) - receive-buffer-size: func(this: udp-socket) -> result - set-receive-buffer-size: func(this: udp-socket, value: u64) -> result<_, error-code> - send-buffer-size: func(this: udp-socket) -> result - set-send-buffer-size: func(this: udp-socket, value: u64) -> result<_, error-code> - - /// Create a `pollable` which will resolve once the socket is ready for I/O. - /// - /// Note: this function is here for WASI Preview2 only. - /// It's planned to be removed when `future` is natively supported in Preview3. - subscribe: func(this: udp-socket) -> pollable - - /// Dispose of the specified `udp-socket`, after which it may no longer be used. - /// - /// Note: this function is scheduled to be removed when Resources are natively supported in Wit. - drop-udp-socket: func(this: udp-socket) -} diff --git a/crates/trigger/wasi/main.wit b/crates/trigger/wasi/main.wit deleted file mode 100644 index 753770ad2..000000000 --- a/crates/trigger/wasi/main.wit +++ /dev/null @@ -1,33 +0,0 @@ -package wasmtime:wasi - -// All of the same imports available in the wasi:cli/command world, but no -// export required: -world preview1-adapter-reactor { - import wasi:clocks/wall-clock - import wasi:clocks/monotonic-clock - import wasi:clocks/timezone - import wasi:filesystem/types - import wasi:filesystem/preopens - import wasi:sockets/instance-network - import wasi:sockets/ip-name-lookup - import wasi:sockets/network - import wasi:sockets/tcp-create-socket - import wasi:sockets/tcp - import wasi:sockets/udp-create-socket - import wasi:sockets/udp - import wasi:random/random - import wasi:random/insecure - import wasi:random/insecure-seed - import wasi:poll/poll - import wasi:io/streams - import wasi:cli/environment - import wasi:cli/exit - import wasi:cli/stdin - import wasi:cli/stdout - import wasi:cli/stderr - import wasi:cli/terminal-input - import wasi:cli/terminal-output - import wasi:cli/terminal-stdin - import wasi:cli/terminal-stdout - import wasi:cli/terminal-stderr -} diff --git a/crates/trigger/wasi/test.wit b/crates/trigger/wasi/test.wit deleted file mode 100644 index 4543cb194..000000000 --- a/crates/trigger/wasi/test.wit +++ /dev/null @@ -1,41 +0,0 @@ -// only used as part of `test-programs` -world test-reactor { - - import wasi:cli/environment - import wasi:io/streams - import wasi:filesystem/types - import wasi:filesystem/preopens - import wasi:cli/exit - - export add-strings: func(s: list) -> u32 - export get-strings: func() -> list - - use wasi:io/streams.{output-stream} - - export write-strings-to: func(o: output-stream) -> result - - use wasi:filesystem/types.{descriptor-stat} - export pass-an-imported-record: func(d: descriptor-stat) -> string -} - -world test-command { - import wasi:poll/poll - import wasi:io/streams - import wasi:cli/environment - import wasi:cli/stdin - import wasi:cli/stdout - import wasi:cli/stderr -} - -world test-command-with-sockets { - import wasi:poll/poll - import wasi:io/streams - import wasi:cli/environment - import wasi:cli/stdin - import wasi:cli/stdout - import wasi:cli/stderr - import wasi:sockets/tcp - import wasi:sockets/tcp-create-socket - import wasi:sockets/network - import wasi:sockets/instance-network -} diff --git a/crates/trigger/wit/config.wit b/crates/trigger/wit/config.wit deleted file mode 100644 index 2513e9e2a..000000000 --- a/crates/trigger/wit/config.wit +++ /dev/null @@ -1,12 +0,0 @@ -interface config { - // Get a configuration value for the current component. - // The config key must match one defined in in the component manifest. - get-config: func(key: string) -> result - - variant error { - provider(string), - invalid-key(string), - invalid-schema(string), - other(string), - } -} diff --git a/crates/trigger/wit/http-types.wit b/crates/trigger/wit/http-types.wit deleted file mode 100644 index 5d156046b..000000000 --- a/crates/trigger/wit/http-types.wit +++ /dev/null @@ -1,44 +0,0 @@ -interface http-types { - type http-status = u16 - - type body = list - - type headers = list> - - type params = list> - - type uri = string - - enum method { - get, - post, - put, - delete, - patch, - head, - options, - } - - record request { - method: method, - uri: uri, - headers: headers, - params: params, - body: option, - } - - record response { - status: http-status, - headers: option, - body: option, - } - - enum http-error { - success, - destination-not-allowed, - invalid-url, - request-error, - runtime-error, - too-many-requests, - } -} diff --git a/crates/trigger/wit/http.wit b/crates/trigger/wit/http.wit deleted file mode 100644 index faac938ac..000000000 --- a/crates/trigger/wit/http.wit +++ /dev/null @@ -1,5 +0,0 @@ -interface http { - use http-types.{request, response, http-error} - - send-request: func(req: request) -> result -} diff --git a/crates/trigger/wit/inbound-http.wit b/crates/trigger/wit/inbound-http.wit deleted file mode 100644 index 0fef7f58d..000000000 --- a/crates/trigger/wit/inbound-http.wit +++ /dev/null @@ -1,5 +0,0 @@ -interface inbound-http { - use http-types.{request, response} - - handle-request: func(req: request) -> response -} diff --git a/crates/trigger/wit/inbound-redis.wit b/crates/trigger/wit/inbound-redis.wit deleted file mode 100644 index 2a027c546..000000000 --- a/crates/trigger/wit/inbound-redis.wit +++ /dev/null @@ -1,6 +0,0 @@ -interface inbound-redis { - use redis-types.{payload, error} - - // The entrypoint for a Redis handler. - handle-message: func(message: payload) -> result<_, error> -} diff --git a/crates/trigger/wit/key-value.wit b/crates/trigger/wit/key-value.wit deleted file mode 100644 index 6ff177063..000000000 --- a/crates/trigger/wit/key-value.wit +++ /dev/null @@ -1,75 +0,0 @@ -interface key-value { - /// An open key-value store - resource store { - /// Open the store with the specified name. - /// - /// If `name` is "default", the default store is opened. Otherwise, - /// `name` must refer to a store defined and configured in a runtime - /// configuration file supplied with the application. - /// - /// `error::no-such-store` will be raised if the `name` is not recognized. - open: static func(name: string) -> result - - /// Get the value associated with the specified `key` from the specified - /// `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store, and `error::no-such-key` will be raised if there is no - /// tuple for `key` in `store`. - get: func(key: string) -> result, error> - - /// Set the `value` associated with the specified `key` in the specified - /// `store`, overwriting any existing value. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. - set: func(key: string, value: list) -> result<_, error> - - /// Delete the tuple with the specified `key` from the specified `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. No error is raised if a tuple did not previously - /// exist for `key`. - delete: func(key: string) -> result<_, error> - - /// Return whether a tuple exists for the specified `key` in the specified - /// `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. - exists: func(key: string) -> result - - /// Return a list of all the keys in the specified `store`. - /// - /// `error::invalid-store` will be raised if `store` is not a valid handle - /// to an open store. - get-keys: func() -> result, error> - } - - /// The set of errors which may be raised by functions in this interface - variant error { - /// Too many stores have been opened simultaneously. Closing one or more - /// stores prior to retrying may address this. - store-table-full, - - /// The host does not recognize the store name requested. Defining and - /// configuring a store with that name in a runtime configuration file - /// may address this. - no-such-store, - - /// The requesting component does not have access to the specified store - /// (which may or may not exist). - access-denied, - - /// The store handle provided is not recognized, i.e. it was either never - /// opened or has been closed. - invalid-store, - - /// No key-value tuple exists for the specified key in the specified - /// store. - no-such-key, - - /// Some implementation-specific error has occurred (e.g. I/O) - io(string) - } -} diff --git a/crates/trigger/wit/llm.wit b/crates/trigger/wit/llm.wit deleted file mode 100644 index 2b1533c34..000000000 --- a/crates/trigger/wit/llm.wit +++ /dev/null @@ -1,70 +0,0 @@ -// A WASI interface dedicated to performing inferencing for Large Language Models. -interface llm { - /// A Large Language Model. - type inferencing-model = string - - /// Inference request parameters - record inferencing-params { - /// The maximum tokens that should be inferred. - /// - /// Note: the backing implementation may return less tokens. - max-tokens: u32, - /// The amount the model should avoid repeating tokens. - repeat-penalty: float32, - /// The number of tokens the model should apply the repeat penalty to. - repeat-penalty-last-n-token-count: u32, - /// The randomness with which the next token is selected. - temperature: float32, - /// The number of possible next tokens the model will choose from. - top-k: u32, - /// The probability total of next tokens the model will choose from. - top-p: float32 - } - - /// The set of errors which may be raised by functions in this interface - variant error { - model-not-supported, - runtime-error(string), - invalid-input(string) - } - - /// An inferencing result - record inferencing-result { - /// The text generated by the model - // TODO: this should be a stream - text: string, - /// Usage information about the inferencing request - usage: inferencing-usage - } - - /// Usage information related to the inferencing result - record inferencing-usage { - /// Number of tokens in the prompt - prompt-token-count: u32, - /// Number of tokens generated by the inferencing operation - generated-token-count: u32 - } - - /// Perform inferencing using the provided model and prompt with the given optional params - infer: func(model: inferencing-model, prompt: string, params: option) -> result - - /// The model used for generating embeddings - type embedding-model = string - - /// Generate embeddings for the supplied list of text - generate-embeddings: func(model: embedding-model, text: list) -> result - - /// Result of generating embeddings - record embeddings-result { - /// The embeddings generated by the request - embeddings: list>, - /// Usage related to the embeddings generation request - usage: embeddings-usage - } - - /// Usage related to an embeddings generation request - record embeddings-usage { - /// Number of tokens in the prompt - prompt-token-count: u32, - } -} diff --git a/crates/trigger/wit/mysql.wit b/crates/trigger/wit/mysql.wit deleted file mode 100644 index a08d86f5e..000000000 --- a/crates/trigger/wit/mysql.wit +++ /dev/null @@ -1,19 +0,0 @@ -interface mysql { - use rdbms-types.{parameter-value, row-set} - - // General purpose error. - variant mysql-error { - success, - connection-failed(string), - bad-parameter(string), - query-failed(string), - value-conversion-failed(string), - other-error(string) - } - - // query the database: select - query: func(address: string, statement: string, params: list) -> result - - // execute command to the database: insert, update, delete - execute: func(address: string, statement: string, params: list) -> result<_, mysql-error> -} diff --git a/crates/trigger/wit/postgres.wit b/crates/trigger/wit/postgres.wit deleted file mode 100644 index d9c8afef6..000000000 --- a/crates/trigger/wit/postgres.wit +++ /dev/null @@ -1,19 +0,0 @@ -interface postgres { - use rdbms-types.{parameter-value, row-set} - - // General purpose error. - variant pg-error { - success, - connection-failed(string), - bad-parameter(string), - query-failed(string), - value-conversion-failed(string), - other-error(string) - } - - // query the database: select - query: func(address: string, statement: string, params: list) -> result - - // execute command to the database: insert, update, delete - execute: func(address: string, statement: string, params: list) -> result -} diff --git a/crates/trigger/wit/rdbms-types.wit b/crates/trigger/wit/rdbms-types.wit deleted file mode 100644 index ffadd9a3e..000000000 --- a/crates/trigger/wit/rdbms-types.wit +++ /dev/null @@ -1,65 +0,0 @@ -interface rdbms-types { - enum db-data-type { - boolean, - int8, - int16, - int32, - int64, - uint8, - uint16, - uint32, - uint64, - floating32, - floating64, - str, - binary, - other, - } - - variant db-value { - boolean(bool), - int8(s8), - int16(s16), - int32(s32), - int64(s64), - uint8(u8), - uint16(u16), - uint32(u32), - uint64(u64), - floating32(float32), - floating64(float64), - str(string), - binary(list), - db-null, - unsupported, - } - - variant parameter-value { - boolean(bool), - int8(s8), - int16(s16), - int32(s32), - int64(s64), - uint8(u8), - uint16(u16), - uint32(u32), - uint64(u64), - floating32(float32), - floating64(float64), - str(string), - binary(list), - db-null, - } - - record column { - name: string, - data-type: db-data-type, - } - - type row = list - - record row-set { - columns: list, - rows: list, - } -} diff --git a/crates/trigger/wit/reactor.wit b/crates/trigger/wit/reactor.wit deleted file mode 100644 index 7387f1839..000000000 --- a/crates/trigger/wit/reactor.wit +++ /dev/null @@ -1,50 +0,0 @@ -package fermyon:spin - -world reactor { - import config - import postgres - import mysql - import sqlite - import redis - import key-value - import http - import llm - export inbound-http - export inbound-redis -} - -world redis-trigger { - import config - import postgres - import mysql - import sqlite - import redis - import key-value - import http - import llm - export inbound-redis -} - -world http-trigger { - import config - import postgres - import mysql - import sqlite - import redis - import key-value - import http - import llm - export inbound-http -} - -world platform { - import http-types - import config - import postgres - import mysql - import sqlite - import redis - import key-value - import http - import llm -} diff --git a/crates/trigger/wit/redis-types.wit b/crates/trigger/wit/redis-types.wit deleted file mode 100644 index e08d593dd..000000000 --- a/crates/trigger/wit/redis-types.wit +++ /dev/null @@ -1,24 +0,0 @@ -interface redis-types { - // General purpose error. - enum error { - success, - error, - } - - // The message payload. - type payload = list - - // A parameter type for the general-purpose `execute` function. - variant redis-parameter { - int64(s64), - binary(payload) - } - - // A return type for the general-purpose `execute` function. - variant redis-result { - nil, - status(string), - int64(s64), - binary(payload) - } -} diff --git a/crates/trigger/wit/redis.wit b/crates/trigger/wit/redis.wit deleted file mode 100644 index 6d1d1da3e..000000000 --- a/crates/trigger/wit/redis.wit +++ /dev/null @@ -1,31 +0,0 @@ -interface redis { - use redis-types.{payload, redis-parameter, redis-result, error} - - // Publish a Redis message to the specificed channel and return an error, if any. - publish: func(address: string, channel: string, payload: payload) -> result<_, error> - - // Get the value of a key. - get: func(address: string, key: string) -> result - - // Set key to value. If key alreads holds a value, it is overwritten. - set: func(address: string, key: string, value: payload) -> result<_, error> - - // Increments the number stored at key by one. If the key does not exist, it is set to 0 before performing the operation. - // An error is returned if the key contains a value of the wrong type or contains a string that can not be represented as integer. - incr: func(address: string, key: string) -> result - - // Removes the specified keys. A key is ignored if it does not exist. - del: func(address: string, keys: list) -> result - - // Add the specified `values` to the set named `key`, returning the number of newly-added values. - sadd: func(address: string, key: string, values: list) -> result - - // Retrieve the contents of the set named `key`. - smembers: func(address: string, key: string) -> result, error> - - // Remove the specified `values` from the set named `key`, returning the number of newly-removed values. - srem: func(address: string, key: string, values: list) -> result - - // Execute an arbitrary Redis command and receive the result. - execute: func(address: string, command: string, arguments: list) -> result, error> -} diff --git a/crates/trigger/wit/sqlite.wit b/crates/trigger/wit/sqlite.wit deleted file mode 100644 index 5d7badcb9..000000000 --- a/crates/trigger/wit/sqlite.wit +++ /dev/null @@ -1,50 +0,0 @@ -interface sqlite { - /// A handle to an open sqlite instance - resource connection { - /// Open a connection to a named database instance. - /// - /// If `database` is "default", the default instance is opened. - /// - /// `error::no-such-database` will be raised if the `name` is not recognized. - open: static func(database: string) -> result - - /// Execute a statement returning back data if there is any - execute: func(statement: string, parameters: list) -> result - } - - /// The set of errors which may be raised by functions in this interface - variant error { - /// The host does not recognize the database name requested. - no-such-database, - /// The requesting component does not have access to the specified database (which may or may not exist). - access-denied, - /// The provided connection is not valid - invalid-connection, - /// The database has reached its capacity - database-full, - /// Some implementation-specific error has occurred (e.g. I/O) - io(string) - } - - /// A result of a query - record query-result { - /// The names of the columns retrieved in the query - columns: list, - /// the row results each containing the values for all the columns for a given row - rows: list, - } - - /// A set of values for each of the columns in a query-result - record row-result { - values: list - } - - /// A single column's result from a database query - variant value { - integer(s64), - real(float64), - text(string), - blob(list), - null - } -} From 46ee34084f57cb543f145f2c79ae83f5de3e4056 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Wed, 11 Oct 2023 12:17:52 +0200 Subject: [PATCH 31/31] Update wasmtime to wasmtime 14.0.0 branch Signed-off-by: Ryan Levick --- Cargo.lock | 146 ++++++++++++++++----------------- Cargo.toml | 6 +- examples/spin-timer/Cargo.toml | 2 +- 3 files changed, 77 insertions(+), 77 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8febef1f7..de8023f96 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1077,16 +1077,16 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "bumpalo", "cranelift-bforest", @@ -1105,29 +1105,29 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" [[package]] name = "cranelift-control" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "serde", "serde_derive", @@ -1135,8 +1135,8 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cranelift-codegen", "log", @@ -1146,13 +1146,13 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" [[package]] name = "cranelift-native" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cranelift-codegen", "libc", @@ -1161,8 +1161,8 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.102.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.101.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -6821,8 +6821,8 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-cap-std-sync" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "async-trait", @@ -6843,8 +6843,8 @@ dependencies = [ [[package]] name = "wasi-common" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "bitflags 2.4.0", @@ -6862,8 +6862,8 @@ dependencies = [ [[package]] name = "wasi-tokio" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "cap-std", @@ -7001,8 +7001,8 @@ dependencies = [ [[package]] name = "wasmtime" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "async-trait", @@ -7040,16 +7040,16 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "base64 0.21.3", @@ -7067,8 +7067,8 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "proc-macro2", @@ -7081,13 +7081,13 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" [[package]] name = "wasmtime-cranelift" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "cfg-if", @@ -7110,8 +7110,8 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "cranelift-codegen", @@ -7125,8 +7125,8 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "cranelift-entity", @@ -7147,8 +7147,8 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cc", "cfg-if", @@ -7160,8 +7160,8 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "addr2line 0.21.0", "anyhow", @@ -7186,8 +7186,8 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "object 0.32.1", "once_cell", @@ -7197,8 +7197,8 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cfg-if", "libc", @@ -7207,8 +7207,8 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "cc", @@ -7236,8 +7236,8 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "cranelift-entity", "serde", @@ -7248,8 +7248,8 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "proc-macro2", "quote", @@ -7258,8 +7258,8 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "async-trait", @@ -7293,8 +7293,8 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "cranelift-codegen", @@ -7309,8 +7309,8 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "heck 0.4.1", @@ -7320,8 +7320,8 @@ dependencies = [ [[package]] name = "wasmtime-wmemcheck" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" [[package]] name = "wast" @@ -7461,8 +7461,8 @@ dependencies = [ [[package]] name = "wiggle" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "async-trait", @@ -7475,8 +7475,8 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "heck 0.4.1", @@ -7489,8 +7489,8 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "15.0.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "14.0.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "proc-macro2", "quote", @@ -7531,8 +7531,8 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.13.0" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +version = "0.12.0" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "cranelift-codegen", @@ -7819,7 +7819,7 @@ dependencies = [ [[package]] name = "witx" version = "0.9.1" -source = "git+https://github.com/bytecodealliance/wasmtime?rev=4c34504efb258a0c51c6a5f3f8a5b24d987993b9#4c34504efb258a0c51c6a5f3f8a5b24d987993b9" +source = "git+https://github.com/bytecodealliance/wasmtime?rev=c796ce7376a57a40605f03e74bd78cefcc9acf3a#c796ce7376a57a40605f03e74bd78cefcc9acf3a" dependencies = [ "anyhow", "log", diff --git a/Cargo.toml b/Cargo.toml index 4a5107bd5..3d93ebea2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -107,11 +107,11 @@ members = ["crates/*", "sdk/rust", "sdk/rust/macro"] [workspace.dependencies] tracing = { version = "0.1", features = ["log"] } -wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", features = [ +wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", rev = "c796ce7376a57a40605f03e74bd78cefcc9acf3a", features = [ "tokio", ] } -wasi-common-preview1 = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", package = "wasi-common" } -wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", features = [ +wasi-common-preview1 = { git = "https://github.com/bytecodealliance/wasmtime", rev = "c796ce7376a57a40605f03e74bd78cefcc9acf3a", package = "wasi-common" } +wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "c796ce7376a57a40605f03e74bd78cefcc9acf3a", features = [ "component-model", ] } spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "84286054d632ccb8ae06c6419940b5d328229e59" } diff --git a/examples/spin-timer/Cargo.toml b/examples/spin-timer/Cargo.toml index 4beb50981..c7576a9b6 100644 --- a/examples/spin-timer/Cargo.toml +++ b/examples/spin-timer/Cargo.toml @@ -14,7 +14,7 @@ spin-core = { path = "../../crates/core" } spin-trigger = { path = "../../crates/trigger" } tokio = { version = "1.11", features = ["full"] } tokio-scoped = "0.2.0" -wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "4c34504efb258a0c51c6a5f3f8a5b24d987993b9", features = [ +wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", rev = "c796ce7376a57a40605f03e74bd78cefcc9acf3a", features = [ "component-model", ] }

0#|625x{1r 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≤$C*85bD$;BLylL-q8BwfxBR5taZLj$wA&7R` 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