From 706267f6d124a2383d05fed18466d07927c772f4 Mon Sep 17 00:00:00 2001 From: Brian Hardock Date: Wed, 8 Jul 2026 13:27:40 -0600 Subject: [PATCH] Update to WASIp3 final Signed-off-by: Brian Hardock --- .github/workflows/build-examples.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- Cargo.lock | 237 ++++++++---------- Cargo.toml | 2 +- crates/spin-sdk/Cargo.toml | 8 +- crates/spin-sdk/src/http.rs | 2 +- .../deps/cli@0.3.0-rc-2026-03-15/command.wit | 10 - .../deps/cli@0.3.0-rc-2026-03-15/imports.wit | 34 --- .../wit/deps/cli@0.3.0-rc-2026-03-15/run.wit | 6 - .../spin-sdk/wit/deps/cli@0.3.0/command.wit | 10 + .../environment.wit | 10 +- .../exit.wit | 8 +- .../spin-sdk/wit/deps/cli@0.3.0/imports.wit | 34 +++ crates/spin-sdk/wit/deps/cli@0.3.0/run.wit | 6 + .../stdio.wit | 18 +- .../terminal.wit | 28 +-- .../deps/clocks@0.3.0-rc-2026-03-15/world.wit | 11 - .../monotonic-clock.wit | 16 +- .../system-clock.wit | 12 +- .../timezone.wit | 4 +- .../types.wit | 8 +- .../spin-sdk/wit/deps/clocks@0.3.0/world.wit | 11 + .../filesystem@0.3.0-rc-2026-03-15/world.wit | 9 - .../preopens.wit | 10 +- .../types.wit | 86 +++---- .../wit/deps/filesystem@0.3.0/world.wit | 9 + .../types.wit | 42 ++-- .../worlds.wit | 54 +++- .../deps/random@0.3.0-rc-2026-03-15/world.wit | 13 - .../insecure-seed.wit | 8 +- .../insecure.wit | 10 +- .../random.wit | 10 +- .../spin-sdk/wit/deps/random@0.3.0/world.wit | 13 + .../sockets@0.3.0-rc-2026-03-15/world.wit | 9 - .../ip-name-lookup.wit | 10 +- .../types.wit | 110 ++++---- .../spin-sdk/wit/deps/sockets@0.3.0/world.wit | 9 + crates/spin-sdk/wit/sdk.wit | 2 +- examples/hello-world/spin.toml | 4 +- 40 files changed, 443 insertions(+), 446 deletions(-) delete mode 100644 crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/command.wit delete mode 100644 crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/imports.wit delete mode 100644 crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/run.wit create mode 100644 crates/spin-sdk/wit/deps/cli@0.3.0/command.wit rename crates/spin-sdk/wit/deps/{cli@0.3.0-rc-2026-03-15 => cli@0.3.0}/environment.wit (81%) rename crates/spin-sdk/wit/deps/{cli@0.3.0-rc-2026-03-15 => cli@0.3.0}/exit.wit (82%) create mode 100644 crates/spin-sdk/wit/deps/cli@0.3.0/imports.wit create mode 100644 crates/spin-sdk/wit/deps/cli@0.3.0/run.wit rename crates/spin-sdk/wit/deps/{cli@0.3.0-rc-2026-03-15 => cli@0.3.0}/stdio.wit (85%) rename crates/spin-sdk/wit/deps/{cli@0.3.0-rc-2026-03-15 => cli@0.3.0}/terminal.wit (76%) delete mode 100644 crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/world.wit rename crates/spin-sdk/wit/deps/{clocks@0.3.0-rc-2026-03-15 => clocks@0.3.0}/monotonic-clock.wit (83%) rename crates/spin-sdk/wit/deps/{clocks@0.3.0-rc-2026-03-15 => clocks@0.3.0}/system-clock.wit (90%) rename crates/spin-sdk/wit/deps/{clocks@0.3.0-rc-2026-03-15 => clocks@0.3.0}/timezone.wit (97%) rename crates/spin-sdk/wit/deps/{clocks@0.3.0-rc-2026-03-15 => clocks@0.3.0}/types.wit (54%) create mode 100644 crates/spin-sdk/wit/deps/clocks@0.3.0/world.wit delete mode 100644 crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/world.wit rename crates/spin-sdk/wit/deps/{filesystem@0.3.0-rc-2026-03-15 => filesystem@0.3.0}/preopens.wit (51%) rename crates/spin-sdk/wit/deps/{filesystem@0.3.0-rc-2026-03-15 => filesystem@0.3.0}/types.wit (93%) create mode 100644 crates/spin-sdk/wit/deps/filesystem@0.3.0/world.wit rename crates/spin-sdk/wit/deps/{http@0.3.0-rc-2026-03-15 => http@0.3.0}/types.wit (95%) rename crates/spin-sdk/wit/deps/{http@0.3.0-rc-2026-03-15 => http@0.3.0}/worlds.wit (61%) delete mode 100644 crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/world.wit rename crates/spin-sdk/wit/deps/{random@0.3.0-rc-2026-03-15 => random@0.3.0}/insecure-seed.wit (89%) rename crates/spin-sdk/wit/deps/{random@0.3.0-rc-2026-03-15 => random@0.3.0}/insecure.wit (88%) rename crates/spin-sdk/wit/deps/{random@0.3.0-rc-2026-03-15 => random@0.3.0}/random.wit (90%) create mode 100644 crates/spin-sdk/wit/deps/random@0.3.0/world.wit delete mode 100644 crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/world.wit rename crates/spin-sdk/wit/deps/{sockets@0.3.0-rc-2026-03-15 => sockets@0.3.0}/ip-name-lookup.wit (92%) rename crates/spin-sdk/wit/deps/{sockets@0.3.0-rc-2026-03-15 => sockets@0.3.0}/types.wit (94%) create mode 100644 crates/spin-sdk/wit/deps/sockets@0.3.0/world.wit diff --git a/.github/workflows/build-examples.yml b/.github/workflows/build-examples.yml index 3cf715b..2c7a6b9 100644 --- a/.github/workflows/build-examples.yml +++ b/.github/workflows/build-examples.yml @@ -10,7 +10,7 @@ on: - "README.md" env: - RUST_VERSION: "1.86" + RUST_VERSION: "1.94" SPIN_VERSION: "" jobs: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d94035..f7de25e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,7 @@ on: - "README.md" env: - RUST_VERSION: "1.93" + RUST_VERSION: "1.94" jobs: lint-and-test: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ef00248..5b4e783 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: - "v*" env: - RUST_VERSION: "1.93" + RUST_VERSION: "1.94" jobs: crates: diff --git a/Cargo.lock b/Cargo.lock index d115821..11a8e77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -448,27 +448,27 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d521bdbc6098937af83ef4ab6d5c07398126bc71878f7ef4ea9499977978ef5" +checksum = "e06aeba2c965fc446d13c56a6ccb2631b78445d7544543dd9a25289977630914" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dde0b83164d4a497860af4236271178bc640512b067101e0853e4f74eaa4df5" +checksum = "ee2d2dde4ec1352715595b5cfa6fe2e5b8ebb9da3457b3ee8db0aa2808c069aa" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0111d110b72b4efad69a372e29e21628652fd0bcab66967e5c8350ab679affd5" +checksum = "03b4982ef9fa54ec9eee841e891e7ddc5434be1250e88de31572e000c888f30b" dependencies = [ "cranelift-entity", "wasmtime-internal-core", @@ -476,9 +476,9 @@ dependencies = [ [[package]] name = "cranelift-bitset" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf01ecc92fc5499789d79c3b817299d5a8ddd828d31dcf0f9cc3cc66f38dbb36" +checksum = "529143118c4eeb58c39ecb02319557d512be6c61348486422974ab8e3906b8a8" dependencies = [ "serde", "serde_derive", @@ -487,9 +487,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cd2563bead0090c3879a7ff7327f7550c9d59bb5d05ecc8cd7886977aa3125a" +checksum = "b7780677247ad3577e3a6a3ebf43f39b325a11d6393db72b2c9968a910d4d13d" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -504,10 +504,13 @@ dependencies = [ "hashbrown 0.17.0", "libm", "log", + "postcard", "pulley-interpreter", "regalloc2", "rustc-hash", "serde", + "serde_derive", + "sha2 0.10.9", "smallvec", "target-lexicon", "wasmtime-internal-core", @@ -515,9 +518,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9640d250d26f9381a73dc7f9862b27928d4809119aec73be0e556612e67b6a99" +checksum = "ac9645250416cbf92454fe61160e17e026e0ce405906a54500b114f923ddffc9" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", @@ -528,24 +531,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07f156b90efc94371ddb3536f76e4ab671ad2e093bfa5511e10198cadbb0c47" +checksum = "20ee8d222ff0fd3681791979afbf88586ac9f49010d3db96b3cbe4c96759aee3" [[package]] name = "cranelift-control" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a76fd9dd37dcbc3d2d2e00abe3281a7e88adc035fba3b8114cc69981576ec" +checksum = "591abe6f5312bd2c4220f1b3bead56c2ad00257c52668015ba013b85dcf2a17a" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eea22522144ba08c7e7ef94bfc25d474ef016c2771974b8ab1986734ac85965" +checksum = "a5300c49cf940526fe771517b3b3eabd5d0ff164ee61698579cf403fe8d3af3c" dependencies = [ "cranelift-bitset", "serde", @@ -555,11 +558,12 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efa2826c80dff1d93b19b3cfbcaf9fae44c78d739a98d146dd5bd89c51e14367" +checksum = "da4adbf760207fdbbe130f1191cce01cdef66831a9f648b1f39ff2800d126d45" dependencies = [ "cranelift-codegen", + "hashbrown 0.17.0", "log", "smallvec", "target-lexicon", @@ -567,15 +571,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e238a69b95c5415456f22189494a12db94f313bb72b6ec9cc88ddf2f1056e28e" +checksum = "8315b21ff018226a42a60a4702c2dd75f6447cac26e9bca622e14c22088c2ff5" [[package]] name = "cranelift-native" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eceb0ebd8d6aef6bb287e8d532a164b0db1c0062961211e9c22a91f67521c098" +checksum = "d506ef23a60715bde451b06620b14402166ded3b648454fccbf04f3e46a4aa70" dependencies = [ "cranelift-codegen", "libc", @@ -584,9 +588,9 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.132.3" +version = "0.133.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004643f39a7bec553de5263d650db30e5b9caec1d5cbe065fd732b7ec9ae40d0" +checksum = "48ed47e602652e3410f9387fc0db70fefadcee4d78a78881421aabcab4e26b89" [[package]] name = "crc32fast" @@ -1438,12 +1442,9 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "mach2" -version = "0.4.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" -dependencies = [ - "libc", -] +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" [[package]] name = "matchit" @@ -1728,9 +1729,9 @@ dependencies = [ [[package]] name = "pulley-interpreter" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04adf8f93264685f2c70a3edb8f828c791e71b22659253319c33f29d1165aef" +checksum = "38b92604caae1a1899b6a5b54967289dd538177c626004c91accf9d0ec7e4a12" dependencies = [ "cranelift-bitset", "log", @@ -1740,9 +1741,9 @@ dependencies = [ [[package]] name = "pulley-macros" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c120a6af1a574a42efcd9df2ad27cb78bc04118c5e0c69e90599f17301a1c7a" +checksum = "5a7ac85c0bb3fb351f10d531230aaa5e366b46d7c4e5328e5f02801d6dac1165" dependencies = [ "proc-macro2", "quote", @@ -1829,6 +1830,7 @@ dependencies = [ "hashbrown 0.17.0", "log", "rustc-hash", + "serde", "smallvec", ] @@ -2210,7 +2212,7 @@ dependencies = [ "tokio", "tower-service", "uuid", - "wasip3 0.6.0+wasi-0.3.0-rc-2026-03-15", + "wasip3 0.7.0+wasi-0.3.0", "wasmtime", "wasmtime-wasi", "wasmtime-wasi-http", @@ -2743,9 +2745,9 @@ dependencies = [ [[package]] name = "wasip3" -version = "0.6.0+wasi-0.3.0-rc-2026-03-15" +version = "0.7.0+wasi-0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed83456dd6a0b8581998c0365e4651fa2997e5093b49243b7f35391afaa7a3d9" +checksum = "07aa681120704bf09828d1f7cf7e763666c1dc6a36e5096efd0ad9aadfb302d3" dependencies = [ "bytes", "http", @@ -2808,9 +2810,9 @@ dependencies = [ [[package]] name = "wasm-compose" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ba953e2b9b4b4b52a31cf4e3ee1c1374c872b6e012cf2138d1c37cba00bfd6" +checksum = "b089037d7eb453ed57b560fe7833de0707411c8b9fdc429745ced77e2a1bacb9" dependencies = [ "anyhow", "heck", @@ -2818,8 +2820,8 @@ dependencies = [ "log", "petgraph", "smallvec", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wat", ] @@ -2845,12 +2847,12 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac92cf547bc18d27ecc521015c08c353b4f18b84ab388bb6d1b6b682c620d9b6" +checksum = "5a879a421bd17c528b74721b2abf4c62e8f1d1889c2ba8c3c50d02deaf2ce395" dependencies = [ "leb128fmt", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] @@ -2913,9 +2915,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4439c5eee9df71ee0c6efb37f63b1fcb1fec38f85f5142c54e7ed05d33091a" +checksum = "437970b35b1a85cfde9c74b2398352d8d653f3bd8e3a3db0c063ea8f5b4b36ff" dependencies = [ "bitflags", "hashbrown 0.17.0", @@ -2937,20 +2939,20 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b264a5410b008d4d199a92bf536eae703cbd614482fc1ec53831cf19e1c183" +checksum = "8798c1a699bd25648b6708eefe94d97c6f9891febb94b42cca1f7a4b086ea64e" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] name = "wasmtime" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a83ef84ac8bab735c89e27b0268b0586099fbe81281ae45be2b8e4f407b2daa" +checksum = "c4213d2f019a5e44aa8a61d8826dd33a505bff79f749b14a8bafd67321cb9351" dependencies = [ "addr2line", "async-trait", @@ -2982,8 +2984,8 @@ dependencies = [ "target-lexicon", "tempfile", "wasm-compose", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wasmtime-environ", "wasmtime-internal-cache", "wasmtime-internal-component-macro", @@ -2995,16 +2997,16 @@ dependencies = [ "wasmtime-internal-jit-icache-coherence", "wasmtime-internal-unwinder", "wasmtime-internal-versioned-export-macros", - "wasmtime-internal-winch", "wat", "windows-sys 0.61.2", + "wit-parser 0.251.0", ] [[package]] name = "wasmtime-environ" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439686d3deb38525c86b88bbc90f7ba669f70c8edc7d6b35147c738bbef5ff76" +checksum = "d45863de41977ec6453e859cf843d456fa3fcb45a659b66d16e794f90ec4f5b7" dependencies = [ "anyhow", "cpp_demangle", @@ -3024,8 +3026,8 @@ dependencies = [ "sha2 0.10.9", "smallvec", "target-lexicon", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wasmprinter", "wasmtime-internal-component-util", "wasmtime-internal-core", @@ -3033,9 +3035,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-cache" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f2799e6c35393c2a38999f13e4c80ab5d5d9756082bb554cbd1f60485a18293" +checksum = "438bc7dc45fb75297d75f79a9a0ce852345d13ebc6a6863f6f688f013836a9dd" dependencies = [ "base64", "directories-next", @@ -3053,9 +3055,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-component-macro" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d2c5850fb8c448792453765d97f6f01096a32708f3c36798e86220763c90c0" +checksum = "f1e48f8d4966d62a10b6d70722bc432c1e163890be2801d3b5784589ad36ffc3" dependencies = [ "anyhow", "proc-macro2", @@ -3063,20 +3065,20 @@ dependencies = [ "syn 2.0.117", "wasmtime-internal-component-util", "wasmtime-internal-wit-bindgen", - "wit-parser 0.248.0", + "wit-parser 0.251.0", ] [[package]] name = "wasmtime-internal-component-util" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed79c4e9ab416dcc5e46b9d1ec9b7c2e3c730deab525996b0de45a35fc8b2c3" +checksum = "819ad5abd5822a22dbf4014475cdfd1fe790707761cd732d74aaa3ba4d5ba489" [[package]] name = "wasmtime-internal-core" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3073c03f97f871fe6400e68621c863b93ba79296f8e570285231952d23fcc804" +checksum = "3fc28372e36eaf8cf70faa83b5779137f7e99c8d18569a125d1580e735cc9e4d" dependencies = [ "anyhow", "hashbrown 0.17.0", @@ -3086,9 +3088,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-cranelift" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a15981261d361f9c93b42929f446b4009840853ceea181ad6e17730f4016a0b" +checksum = "a433efc6e35112a5457e1dc8bc4d8d39820ac7722267e89bc04e5df641f32124" dependencies = [ "cfg-if", "cranelift-codegen", @@ -3104,7 +3106,7 @@ dependencies = [ "smallvec", "target-lexicon", "thiserror 2.0.18", - "wasmparser 0.248.0", + "wasmparser 0.251.0", "wasmtime-environ", "wasmtime-internal-core", "wasmtime-internal-unwinder", @@ -3113,9 +3115,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-fiber" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33aed9d91d54c9f861ba7e3c3130bded8a7a63e01fe58c3a9a36b45d6ee0fb57" +checksum = "18a1d3a39d0d210f6b8574ee96a4315e0a14c67f3a1fc3cd5372cb10d2fb4422" dependencies = [ "cc", "cfg-if", @@ -3128,9 +3130,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-debug" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944942118aab67e7b4febfe88a65d0af4cfd10af8ed0e79fd6cf39d75359ab7e" +checksum = "9f667288cb4dfa68a4639ffac4d5628535dda64ebdc2b990526efb12b30ba803" dependencies = [ "cc", "object", @@ -3140,9 +3142,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-icache-coherence" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37dee05e8c35759826f6b926cd949c51f771b6a58619d8e60c63c3f3d3e5e59b" +checksum = "eba651d44ab0faad4c58106b3adb45068189fb65ef50f0c404b6d9e3bf81a357" dependencies = [ "cfg-if", "libc", @@ -3152,9 +3154,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-unwinder" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a83f7ebe911a6f1605ff0d3a678472ddb1fcc57c3e2f6bae5dd4d170b625b3ed" +checksum = "2ecc52563b0558af2a7487eb710de07cc4532564b55528876129238e83118cb1" dependencies = [ "cfg-if", "cranelift-codegen", @@ -3165,50 +3167,33 @@ dependencies = [ [[package]] name = "wasmtime-internal-versioned-export-macros" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75980644456dc003238766254b0e5f002704630237ccd0728747991fe2739d7" +checksum = "e747f4a074699ba1b4e4d841fb263f9b7df5bd1555181c4752bf5990d21ba676" dependencies = [ "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "wasmtime-internal-winch" -version = "45.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81af36995b4720b32e3d667541b548a27184a859d09a6ee745eaba095f5a6f6e" -dependencies = [ - "cranelift-codegen", - "gimli", - "log", - "object", - "target-lexicon", - "wasmparser 0.248.0", - "wasmtime-environ", - "wasmtime-internal-cranelift", - "winch-codegen", -] - [[package]] name = "wasmtime-internal-wit-bindgen" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada06667b7948892703fcc9f0b9b337c2e78c334d74d4fa62e2f75f07fbb3659" +checksum = "80009f46991622814196d96fac6fc0a938f46b5cba737a8f4e21e24e5a03856f" dependencies = [ "anyhow", "bitflags", "heck", "indexmap", - "wit-parser 0.248.0", + "wit-parser 0.251.0", ] [[package]] name = "wasmtime-wasi" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd8e9db77f7b60f4c5f6f72847f55eb646ed7ed2f68e362559ee07dc543fb408" +checksum = "e9f65ef30a2c5478873cdb619085a7a649d3ce41cc3eaf298a7ce3dee96a8e11" dependencies = [ "async-trait", "bitflags", @@ -3218,7 +3203,6 @@ dependencies = [ "cap-std", "cap-time-ext", "cfg-if", - "fs-set-times", "futures", "io-extras", "io-lifetimes", @@ -3236,9 +3220,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi-http" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b7f2587ebe31df3d143baebe3aa9f6712955507e15778fe00097eb77da9ebe" +checksum = "cb65eeb8116615c2a22f51b19672c0d5b652ca7b051086da5c7c0a9eb39f4af7" dependencies = [ "async-trait", "bytes", @@ -3260,9 +3244,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi-io" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3805f02be91374a4fd02c0f947daf07bbaa6fbebb5909de5305fa5b0e9568f30" +checksum = "cee57d5fef4976b1ab542615f4cef2c43278eb549d8078939668ea0f13d5c696" dependencies = [ "async-trait", "bytes", @@ -3322,9 +3306,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aca130e25a57e29bbb541441b6e261970a8469580bffebe904d96f0df67e41d" +checksum = "e03df88bf1a6068b02851aa3ef9427d285118f5c1c153b068a8995c69dd9562a" dependencies = [ "bitflags", "thiserror 2.0.18", @@ -3336,9 +3320,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f0a45b47e893521cad81819f2e0db18a8b05086fd4bfb35369ed8830a8f0148" +checksum = "e014aec8661b613154377e4b49dbbb0dfc4f424efcee749782054576c00537d9" dependencies = [ "heck", "proc-macro2", @@ -3350,9 +3334,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "45.0.3" +version = "46.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e297e0325cffa6d368386b6e672e9d6c6a7ad34bdb8a5f49319db4decef2a990" +checksum = "f67310a8ae5190b7f3dcacf8697f2890701a3a8427b3e77ed91d3632dcedaceb" dependencies = [ "proc-macro2", "quote", @@ -3391,25 +3375,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "winch-codegen" -version = "45.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d73bc25d27222248f9bafc7e9945f61e74275360c3ea0d34008810d436140a53" -dependencies = [ - "cranelift-assembler-x64", - "cranelift-codegen", - "gimli", - "regalloc2", - "smallvec", - "target-lexicon", - "thiserror 2.0.18", - "wasmparser 0.248.0", - "wasmtime-environ", - "wasmtime-internal-core", - "wasmtime-internal-cranelift", -] - [[package]] name = "windows-core" version = "0.62.2" @@ -3763,9 +3728,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad505da2915a082fe13204c5ba8788425aea1de54f43b284818cf82637856" +checksum = "e960732e824fab95099971a09e638979347c94ca48568d3c854c945729196947" dependencies = [ "anyhow", "hashbrown 0.17.0", @@ -3777,7 +3742,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 64c1aad..cc8405a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,5 +31,5 @@ edition = "2024" readme = "README.md" license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/spinframework/spin-rust-sdk" -rust-version = "1.93" +rust-version = "1.94" homepage = "https://spinframework.dev/rust-components" \ No newline at end of file diff --git a/crates/spin-sdk/Cargo.toml b/crates/spin-sdk/Cargo.toml index 36eb054..61d3da2 100644 --- a/crates/spin-sdk/Cargo.toml +++ b/crates/spin-sdk/Cargo.toml @@ -42,7 +42,7 @@ spin-macro = { version = "6.0.0", path = "../spin-sdk-macro" } anyhow = "1" futures = "0.3.31" thiserror = "2.0.17" -wasip3 = { version = "0.6.0", features = ["http-compat", "wit-bindgen-macros"] } +wasip3 = { version = "0.7.0", features = ["http-compat", "wit-bindgen-macros"] } # http bytes = { version = "1.11.1", optional = true } @@ -73,7 +73,7 @@ tokio = { version = "1.48.0", features = [ "rt-multi-thread", "sync", ] } -wasmtime = { version = "45.0.3" } -wasmtime-wasi = "45.0.3" -wasmtime-wasi-http = { version = "45.0.3", features = ["p3"] } +wasmtime = { version = "46.0.1" } +wasmtime-wasi = "46.0.1" +wasmtime-wasi-http = { version = "46.0.1", features = ["p3"] } wit-component = "0.247" diff --git a/crates/spin-sdk/src/http.rs b/crates/spin-sdk/src/http.rs index 23b9339..a841ed5 100644 --- a/crates/spin-sdk/src/http.rs +++ b/crates/spin-sdk/src/http.rs @@ -181,7 +181,7 @@ mod middleware { world: "spin-sdk-middleware", path: "wit", with: { - "wasi:http/types@0.3.0-rc-2026-03-15": wasip3::http::types, + "wasi:http/types@0.3.0": wasip3::http::types, }, generate_all, }); diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/command.wit b/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/command.wit deleted file mode 100644 index 12cdb10..0000000 --- a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/command.wit +++ /dev/null @@ -1,10 +0,0 @@ -package wasi:cli@0.3.0-rc-2026-03-15; - -@since(version = 0.3.0-rc-2026-03-15) -world command { - @since(version = 0.3.0-rc-2026-03-15) - include imports; - - @since(version = 0.3.0-rc-2026-03-15) - export run; -} diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/imports.wit b/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/imports.wit deleted file mode 100644 index 398b632..0000000 --- a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/imports.wit +++ /dev/null @@ -1,34 +0,0 @@ -package wasi:cli@0.3.0-rc-2026-03-15; - -@since(version = 0.3.0-rc-2026-03-15) -world imports { - @since(version = 0.3.0-rc-2026-03-15) - include wasi:clocks/imports@0.3.0-rc-2026-03-15; - @since(version = 0.3.0-rc-2026-03-15) - include wasi:filesystem/imports@0.3.0-rc-2026-03-15; - @since(version = 0.3.0-rc-2026-03-15) - include wasi:sockets/imports@0.3.0-rc-2026-03-15; - @since(version = 0.3.0-rc-2026-03-15) - include wasi:random/imports@0.3.0-rc-2026-03-15; - - @since(version = 0.3.0-rc-2026-03-15) - import environment; - @since(version = 0.3.0-rc-2026-03-15) - import exit; - @since(version = 0.3.0-rc-2026-03-15) - import stdin; - @since(version = 0.3.0-rc-2026-03-15) - import stdout; - @since(version = 0.3.0-rc-2026-03-15) - import stderr; - @since(version = 0.3.0-rc-2026-03-15) - import terminal-input; - @since(version = 0.3.0-rc-2026-03-15) - import terminal-output; - @since(version = 0.3.0-rc-2026-03-15) - import terminal-stdin; - @since(version = 0.3.0-rc-2026-03-15) - import terminal-stdout; - @since(version = 0.3.0-rc-2026-03-15) - import terminal-stderr; -} diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/run.wit b/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/run.wit deleted file mode 100644 index d658310..0000000 --- a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/run.wit +++ /dev/null @@ -1,6 +0,0 @@ -@since(version = 0.3.0-rc-2026-03-15) -interface run { - /// Run the program. - @since(version = 0.3.0-rc-2026-03-15) - run: async func() -> result; -} diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0/command.wit b/crates/spin-sdk/wit/deps/cli@0.3.0/command.wit new file mode 100644 index 0000000..bff7523 --- /dev/null +++ b/crates/spin-sdk/wit/deps/cli@0.3.0/command.wit @@ -0,0 +1,10 @@ +package wasi:cli@0.3.0; + +@since(version = 0.3.0) +world command { + @since(version = 0.3.0) + include imports; + + @since(version = 0.3.0) + export run; +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/environment.wit b/crates/spin-sdk/wit/deps/cli@0.3.0/environment.wit similarity index 81% rename from crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/environment.wit rename to crates/spin-sdk/wit/deps/cli@0.3.0/environment.wit index 7abda6b..c9e1ec6 100644 --- a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/environment.wit +++ b/crates/spin-sdk/wit/deps/cli@0.3.0/environment.wit @@ -1,4 +1,4 @@ -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface environment { /// Get the POSIX-style environment variables. /// @@ -8,15 +8,15 @@ interface environment { /// 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. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-environment: func() -> list>; /// Get the POSIX-style arguments to the program. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-arguments: func() -> list; /// Return a path that programs should use as their initial current working /// directory, interpreting `.` as shorthand for this. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-initial-cwd: func() -> option; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/exit.wit b/crates/spin-sdk/wit/deps/cli@0.3.0/exit.wit similarity index 82% rename from crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/exit.wit rename to crates/spin-sdk/wit/deps/cli@0.3.0/exit.wit index 8114761..1bb73de 100644 --- a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/exit.wit +++ b/crates/spin-sdk/wit/deps/cli@0.3.0/exit.wit @@ -1,7 +1,7 @@ -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface exit { /// Exit the current instance and any linked instances. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) exit: func(status: result); /// Exit the current instance and any linked instances, reporting the @@ -12,6 +12,6 @@ interface exit { /// /// This function does not return; the effect is analogous to a trap, but /// without the connotation that something bad has happened. - @unstable(feature = cli-exit-with-code) + @since(version = 0.3.0) exit-with-code: func(status-code: u8); -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0/imports.wit b/crates/spin-sdk/wit/deps/cli@0.3.0/imports.wit new file mode 100644 index 0000000..690950b --- /dev/null +++ b/crates/spin-sdk/wit/deps/cli@0.3.0/imports.wit @@ -0,0 +1,34 @@ +package wasi:cli@0.3.0; + +@since(version = 0.3.0) +world imports { + @since(version = 0.3.0) + include wasi:clocks/imports@0.3.0; + @since(version = 0.3.0) + include wasi:filesystem/imports@0.3.0; + @since(version = 0.3.0) + include wasi:sockets/imports@0.3.0; + @since(version = 0.3.0) + include wasi:random/imports@0.3.0; + + @since(version = 0.3.0) + import environment; + @since(version = 0.3.0) + import exit; + @since(version = 0.3.0) + import stdin; + @since(version = 0.3.0) + import stdout; + @since(version = 0.3.0) + import stderr; + @since(version = 0.3.0) + import terminal-input; + @since(version = 0.3.0) + import terminal-output; + @since(version = 0.3.0) + import terminal-stdin; + @since(version = 0.3.0) + import terminal-stdout; + @since(version = 0.3.0) + import terminal-stderr; +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0/run.wit b/crates/spin-sdk/wit/deps/cli@0.3.0/run.wit new file mode 100644 index 0000000..07497fa --- /dev/null +++ b/crates/spin-sdk/wit/deps/cli@0.3.0/run.wit @@ -0,0 +1,6 @@ +@since(version = 0.3.0) +interface run { + /// Run the program. + @since(version = 0.3.0) + run: async func() -> result; +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/stdio.wit b/crates/spin-sdk/wit/deps/cli@0.3.0/stdio.wit similarity index 85% rename from crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/stdio.wit rename to crates/spin-sdk/wit/deps/cli@0.3.0/stdio.wit index a46ee6d..3f88058 100644 --- a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/stdio.wit +++ b/crates/spin-sdk/wit/deps/cli@0.3.0/stdio.wit @@ -1,6 +1,6 @@ -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) enum error-code { /// Input/output error io, @@ -11,7 +11,7 @@ interface types { } } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface stdin { use types.{error-code}; @@ -28,11 +28,11 @@ interface stdin { /// /// Multiple streams may be active at the same time. The behavior of concurrent /// reads is implementation-specific. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) read-via-stream: func() -> tuple, future>>; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface stdout { use types.{error-code}; @@ -44,11 +44,11 @@ interface stdout { /// /// Otherwise if there is an error the readable end of the stream will be /// dropped and this function will return an error-code. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) write-via-stream: func(data: stream) -> future>; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface stderr { use types.{error-code}; @@ -60,6 +60,6 @@ interface stderr { /// /// Otherwise if there is an error the readable end of the stream will be /// dropped and this function will return an error-code. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) write-via-stream: func(data: stream) -> future>; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/terminal.wit b/crates/spin-sdk/wit/deps/cli@0.3.0/terminal.wit similarity index 76% rename from crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/terminal.wit rename to crates/spin-sdk/wit/deps/cli@0.3.0/terminal.wit index 3ae6191..13604dd 100644 --- a/crates/spin-sdk/wit/deps/cli@0.3.0-rc-2026-03-15/terminal.wit +++ b/crates/spin-sdk/wit/deps/cli@0.3.0/terminal.wit @@ -3,10 +3,10 @@ /// 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. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-input { /// The input side of a terminal. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource terminal-input; } @@ -15,48 +15,48 @@ interface terminal-input { /// In the future, this may include functions for querying the terminal /// size, being notified of terminal size changes, querying supported /// features, and so on. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-output { /// The output side of a terminal. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource terminal-output; } /// An interface providing an optional `terminal-input` for stdin as a /// link-time authority. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-stdin { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use terminal-input.{terminal-input}; /// If stdin is connected to a terminal, return a `terminal-input` handle /// allowing further interaction with it. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-terminal-stdin: func() -> option; } /// An interface providing an optional `terminal-output` for stdout as a /// link-time authority. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-stdout { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use terminal-output.{terminal-output}; /// If stdout is connected to a terminal, return a `terminal-output` handle /// allowing further interaction with it. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-terminal-stdout: func() -> option; } /// An interface providing an optional `terminal-output` for stderr as a /// link-time authority. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-stderr { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use terminal-output.{terminal-output}; /// If stderr is connected to a terminal, return a `terminal-output` handle /// allowing further interaction with it. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-terminal-stderr: func() -> option; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/world.wit b/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/world.wit deleted file mode 100644 index ac51f7f..0000000 --- a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/world.wit +++ /dev/null @@ -1,11 +0,0 @@ -package wasi:clocks@0.3.0-rc-2026-03-15; - -@since(version = 0.3.0-rc-2026-03-15) -world imports { - @since(version = 0.3.0-rc-2026-03-15) - import monotonic-clock; - @since(version = 0.3.0-rc-2026-03-15) - import system-clock; - @unstable(feature = clocks-timezone) - import timezone; -} diff --git a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/monotonic-clock.wit b/crates/spin-sdk/wit/deps/clocks@0.3.0/monotonic-clock.wit similarity index 83% rename from crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/monotonic-clock.wit rename to crates/spin-sdk/wit/deps/clocks@0.3.0/monotonic-clock.wit index 786ae10..57162a5 100644 --- a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/monotonic-clock.wit +++ b/crates/spin-sdk/wit/deps/clocks@0.3.0/monotonic-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.3.0-rc-2026-03-15; +package wasi:clocks@0.3.0; /// WASI Monotonic Clock is a clock API intended to let users measure elapsed /// time. /// @@ -7,14 +7,14 @@ package wasi:clocks@0.3.0-rc-2026-03-15; /// /// A monotonic clock is a clock which has an unspecified initial value, and /// successive reads of the clock will produce non-decreasing values. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface monotonic-clock { use types.{duration}; /// A mark on a monotonic clock is a number of nanoseconds since an /// unspecified initial value, and can only be compared to instances from /// the same monotonic-clock. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type mark = u64; /// Read the current value of the clock. @@ -26,23 +26,23 @@ interface monotonic-clock { /// the value of the clock in a `mark`. Consequently, implementations /// should ensure that the starting time is low enough to avoid the /// possibility of overflow in practice. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) now: func() -> mark; /// Query the resolution of the clock. Returns the duration of time /// corresponding to a clock tick. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-resolution: func() -> duration; /// Wait until the specified mark has occurred. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) wait-until: async func( when: mark, ); /// Wait for the specified duration to elapse. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) wait-for: async func( how-long: duration, ); -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/system-clock.wit b/crates/spin-sdk/wit/deps/clocks@0.3.0/system-clock.wit similarity index 90% rename from crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/system-clock.wit rename to crates/spin-sdk/wit/deps/clocks@0.3.0/system-clock.wit index f8c1661..05637f0 100644 --- a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/system-clock.wit +++ b/crates/spin-sdk/wit/deps/clocks@0.3.0/system-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.3.0-rc-2026-03-15; +package wasi:clocks@0.3.0; /// WASI System Clock is a clock API intended to let users query the current /// time. The clock is not necessarily monotonic as it may be reset. /// @@ -9,7 +9,7 @@ package wasi:clocks@0.3.0-rc-2026-03-15; /// monotonic, making it unsuitable for measuring elapsed time. /// /// It is intended for reporting the current date and time for humans. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface system-clock { use types.{duration}; @@ -29,7 +29,7 @@ interface system-clock { /// /// [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 - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record instant { seconds: s64, nanoseconds: u32, @@ -41,11 +41,11 @@ interface system-clock { /// will not necessarily produce a sequence of non-decreasing values. /// /// The nanoseconds field of the output is always less than 1000000000. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) now: func() -> instant; /// Query the resolution of the clock. Returns the smallest duration of time /// that the implementation permits distinguishing. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-resolution: func() -> duration; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/timezone.wit b/crates/spin-sdk/wit/deps/clocks@0.3.0/timezone.wit similarity index 97% rename from crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/timezone.wit rename to crates/spin-sdk/wit/deps/clocks@0.3.0/timezone.wit index 8b2e3e8..f7c1f54 100644 --- a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/timezone.wit +++ b/crates/spin-sdk/wit/deps/clocks@0.3.0/timezone.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.3.0-rc-2026-03-15; +package wasi:clocks@0.3.0; @unstable(feature = clocks-timezone) interface timezone { @@ -43,4 +43,4 @@ interface timezone { /// this string is a major platform-compatibility hazard. @unstable(feature = clocks-timezone) to-debug-string: func() -> string; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/types.wit b/crates/spin-sdk/wit/deps/clocks@0.3.0/types.wit similarity index 54% rename from crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/types.wit rename to crates/spin-sdk/wit/deps/clocks@0.3.0/types.wit index 0da1a6c..c188835 100644 --- a/crates/spin-sdk/wit/deps/clocks@0.3.0-rc-2026-03-15/types.wit +++ b/crates/spin-sdk/wit/deps/clocks@0.3.0/types.wit @@ -1,8 +1,8 @@ -package wasi:clocks@0.3.0-rc-2026-03-15; +package wasi:clocks@0.3.0; /// This interface common types used throughout wasi:clocks. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { /// A duration of time, in nanoseconds. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type duration = u64; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/clocks@0.3.0/world.wit b/crates/spin-sdk/wit/deps/clocks@0.3.0/world.wit new file mode 100644 index 0000000..9ae18c5 --- /dev/null +++ b/crates/spin-sdk/wit/deps/clocks@0.3.0/world.wit @@ -0,0 +1,11 @@ +package wasi:clocks@0.3.0; + +@since(version = 0.3.0) +world imports { + @since(version = 0.3.0) + import monotonic-clock; + @since(version = 0.3.0) + import system-clock; + @unstable(feature = clocks-timezone) + import timezone; +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/world.wit b/crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/world.wit deleted file mode 100644 index b4fef32..0000000 --- a/crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/world.wit +++ /dev/null @@ -1,9 +0,0 @@ -package wasi:filesystem@0.3.0-rc-2026-03-15; - -@since(version = 0.3.0-rc-2026-03-15) -world imports { - @since(version = 0.3.0-rc-2026-03-15) - import types; - @since(version = 0.3.0-rc-2026-03-15) - import preopens; -} diff --git a/crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/preopens.wit b/crates/spin-sdk/wit/deps/filesystem@0.3.0/preopens.wit similarity index 51% rename from crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/preopens.wit rename to crates/spin-sdk/wit/deps/filesystem@0.3.0/preopens.wit index 2c4560a..54aa8d7 100644 --- a/crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/preopens.wit +++ b/crates/spin-sdk/wit/deps/filesystem@0.3.0/preopens.wit @@ -1,11 +1,11 @@ -package wasi:filesystem@0.3.0-rc-2026-03-15; +package wasi:filesystem@0.3.0; -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface preopens { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use types.{descriptor}; /// Return the set of preopened directories, and their paths. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-directories: func() -> list>; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/types.wit b/crates/spin-sdk/wit/deps/filesystem@0.3.0/types.wit similarity index 93% rename from crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/types.wit rename to crates/spin-sdk/wit/deps/filesystem@0.3.0/types.wit index d02ce73..fad4a4e 100644 --- a/crates/spin-sdk/wit/deps/filesystem@0.3.0-rc-2026-03-15/types.wit +++ b/crates/spin-sdk/wit/deps/filesystem@0.3.0/types.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.3.0-rc-2026-03-15; +package wasi:filesystem@0.3.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. @@ -34,19 +34,19 @@ package wasi:filesystem@0.3.0-rc-2026-03-15; /// store or a database instead. /// /// [WASI filesystem path resolution]: https://github.com/WebAssembly/wasi-filesystem/blob/main/path-resolution.md -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - @since(version = 0.3.0-rc-2026-03-15) - use wasi:clocks/system-clock@0.3.0-rc-2026-03-15.{instant}; + @since(version = 0.3.0) + use wasi:clocks/system-clock@0.3.0.{instant}; /// File size or length of a region within a file. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type filesize = u64; /// The type of a filesystem object referenced by a descriptor. /// /// Note: This was called `filetype` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant descriptor-type { /// The descriptor refers to a block device inode. block-device, @@ -70,7 +70,7 @@ interface types { /// Descriptor flags. /// /// Note: This was called `fdflags` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) flags descriptor-flags { /// Read mode: Data can be read. read, @@ -114,7 +114,7 @@ interface types { /// File attributes. /// /// Note: This was called `filestat` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record descriptor-stat { /// File type. %type: descriptor-type, @@ -141,7 +141,7 @@ interface types { } /// Flags determining the method of how paths are resolved. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) flags path-flags { /// As long as the resolved path corresponds to a symbolic link, it is /// expanded. @@ -149,7 +149,7 @@ interface types { } /// Open flags used by `open-at`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) flags open-flags { /// Create file if it does not exist, similar to `O_CREAT` in POSIX. create, @@ -162,11 +162,11 @@ interface types { } /// Number of hard links to an inode. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type link-count = u64; /// When setting a timestamp, this gives the value to set it to. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant new-timestamp { /// Leave the timestamp set to its previous value. no-change, @@ -178,7 +178,7 @@ interface types { } /// A directory entry. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record directory-entry { /// The type of the file referred to by this directory entry. %type: descriptor-type, @@ -191,7 +191,7 @@ interface types { /// 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. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { /// Permission denied, similar to `EACCES` in POSIX. access, @@ -272,7 +272,7 @@ interface types { } /// File or memory access pattern advisory information. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) enum advice { /// The application has no advice to give on its behavior with respect /// to the specified data. @@ -296,7 +296,7 @@ interface types { /// A 128-bit hash value, split into parts because wasm doesn't have a /// 128-bit integer type. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record metadata-hash-value { /// 64 bits of a 128-bit hash value. lower: u64, @@ -307,7 +307,7 @@ interface types { /// 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. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource descriptor { /// Return a stream for reading from a file. /// @@ -325,7 +325,7 @@ interface types { /// resolves to `err` with an `error-code`. /// /// Note: This is similar to `pread` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) read-via-stream: func( /// The offset within the file at which to start reading. offset: filesize, @@ -343,7 +343,7 @@ interface types { /// written or an error is encountered. /// /// Note: This is similar to `pwrite` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) write-via-stream: func( /// Data to write data: stream, @@ -359,13 +359,13 @@ interface types { /// written or an error is encountered. /// /// Note: This is similar to `write` with `O_APPEND` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) append-via-stream: func(data: stream) -> future>; /// Provide file advisory information on a descriptor. /// /// This is similar to `posix_fadvise` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) advise: async func( /// The offset within the file to which the advisory applies. offset: filesize, @@ -381,7 +381,7 @@ interface types { /// opened for writing. /// /// Note: This is similar to `fdatasync` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) sync-data: async func() -> result<_, error-code>; /// Get flags associated with a descriptor. @@ -390,7 +390,7 @@ interface types { /// /// Note: This returns the value that was the `fs_flags` value returned /// from `fdstat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-flags: async func() -> result; /// Get the dynamic type of a descriptor. @@ -403,14 +403,14 @@ interface types { /// /// Note: This returns the value that was the `fs_filetype` value returned /// from `fdstat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-type: async func() -> 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. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-size: async func(size: filesize) -> result<_, error-code>; /// Adjust the timestamps of an open file or directory. @@ -418,7 +418,7 @@ interface types { /// Note: This is similar to `futimens` in POSIX. /// /// Note: This was called `fd_filestat_set_times` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-times: async func( /// The desired values of the data access timestamp. data-access-timestamp: new-timestamp, @@ -438,7 +438,7 @@ interface types { /// /// This function returns a future, which will resolve to an error code if /// reading full contents of the directory fails. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) read-directory: func() -> tuple, future>>; /// Synchronize the data and metadata of a file to disk. @@ -447,13 +447,13 @@ interface types { /// opened for writing. /// /// Note: This is similar to `fsync` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) sync: async func() -> result<_, error-code>; /// Create a directory. /// /// Note: This is similar to `mkdirat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) create-directory-at: async func( /// The relative path at which to create the directory. path: string, @@ -468,7 +468,7 @@ interface types { /// modified, use `metadata-hash`. /// /// Note: This was called `fd_filestat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) stat: async func() -> result; /// Return the attributes of a file or directory. @@ -478,7 +478,7 @@ interface types { /// discussion of alternatives. /// /// Note: This was called `path_filestat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) stat-at: async func( /// Flags determining the method of how the path is resolved. path-flags: path-flags, @@ -492,7 +492,7 @@ interface types { /// /// Note: This was called `path_filestat_set_times` in earlier versions of /// WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-times-at: async func( /// Flags determining the method of how the path is resolved. path-flags: path-flags, @@ -511,7 +511,7 @@ interface types { /// `error-code::not-permitted` if the old path is not a file. /// /// Note: This is similar to `linkat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) link-at: async func( /// Flags determining the method of how the path is resolved. old-path-flags: path-flags, @@ -535,7 +535,7 @@ interface types { /// `error-code::read-only`. /// /// Note: This is similar to `openat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) open-at: async func( /// Flags determining the method of how the path is resolved. path-flags: path-flags, @@ -553,7 +553,7 @@ interface types { /// filesystem, this function fails with `error-code::not-permitted`. /// /// Note: This is similar to `readlinkat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) readlink-at: async func( /// The relative path of the symbolic link from which to read. path: string, @@ -564,7 +564,7 @@ interface types { /// Return `error-code::not-empty` if the directory is not empty. /// /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) remove-directory-at: async func( /// The relative path to a directory to remove. path: string, @@ -573,7 +573,7 @@ interface types { /// Rename a filesystem object. /// /// Note: This is similar to `renameat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) rename-at: async func( /// The relative source path of the file or directory to rename. old-path: string, @@ -589,7 +589,7 @@ interface types { /// `error-code::not-permitted`. /// /// Note: This is similar to `symlinkat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) symlink-at: async func( /// The contents of the symbolic link. old-path: string, @@ -606,7 +606,7 @@ interface types { /// If the filesystem object is a directory, `error-code::access` or /// `error-code::is-directory` may be returned instead of the /// POSIX-specified `error-code::not-permitted`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) unlink-file-at: async func( /// The relative path to a file to unlink. path: string, @@ -618,7 +618,7 @@ interface types { /// 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. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) is-same-object: async func(other: borrow) -> bool; /// Return a hash of the metadata associated with a filesystem object referred @@ -640,14 +640,14 @@ interface types { /// computed hash. /// /// However, none of these is required. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) metadata-hash: async func() -> 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`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) metadata-hash-at: async func( /// Flags determining the method of how the path is resolved. path-flags: path-flags, @@ -655,4 +655,4 @@ interface types { path: string, ) -> result; } -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/filesystem@0.3.0/world.wit b/crates/spin-sdk/wit/deps/filesystem@0.3.0/world.wit new file mode 100644 index 0000000..d150754 --- /dev/null +++ b/crates/spin-sdk/wit/deps/filesystem@0.3.0/world.wit @@ -0,0 +1,9 @@ +package wasi:filesystem@0.3.0; + +@since(version = 0.3.0) +world imports { + @since(version = 0.3.0) + import types; + @since(version = 0.3.0) + import preopens; +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/http@0.3.0-rc-2026-03-15/types.wit b/crates/spin-sdk/wit/deps/http@0.3.0/types.wit similarity index 95% rename from crates/spin-sdk/wit/deps/http@0.3.0-rc-2026-03-15/types.wit rename to crates/spin-sdk/wit/deps/http@0.3.0/types.wit index f6d9dd9..3506176 100644 --- a/crates/spin-sdk/wit/deps/http@0.3.0-rc-2026-03-15/types.wit +++ b/crates/spin-sdk/wit/deps/http@0.3.0/types.wit @@ -1,13 +1,13 @@ -package wasi:http@0.3.0-rc-2026-03-15; +package wasi:http@0.3.0; /// This interface defines all of the types and methods for implementing HTTP /// Requests and Responses, as well as their headers, trailers, and bodies. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - use wasi:clocks/types@0.3.0-rc-2026-03-15.{duration}; + use wasi:clocks/types@0.3.0.{duration}; /// This type corresponds to HTTP standard Methods. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant method { get, head, @@ -22,7 +22,7 @@ interface types { } /// This type corresponds to HTTP standard Related Schemes. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant scheme { HTTP, HTTPS, @@ -31,7 +31,7 @@ interface types { /// These cases are inspired by the IANA HTTP Proxy Error Types: /// - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { DNS-timeout, DNS-error(DNS-error-payload), @@ -80,21 +80,21 @@ interface types { } /// Defines the case payload type for `DNS-error` above: - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record DNS-error-payload { rcode: option, info-code: option } /// Defines the case payload type for `TLS-alert-received` above: - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record TLS-alert-received-payload { alert-id: option, alert-message: option } /// Defines the case payload type for `HTTP-response-{header,trailer}-size` above: - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record field-size-payload { field-name: option, field-size: option @@ -102,7 +102,7 @@ interface types { /// This type enumerates the different kinds of errors that may occur when /// setting or appending to a `fields` resource. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant header-error { /// This error indicates that a `field-name` or `field-value` was /// syntactically invalid when used with an operation that sets headers in a @@ -134,7 +134,7 @@ interface types { /// This type enumerates the different kinds of errors that may occur when /// setting fields of a `request-options` resource. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant request-options-error { /// Indicates the specified field is not supported by this implementation. not-supported, @@ -156,13 +156,13 @@ interface types { /// /// Field names should always be treated as case insensitive by the `fields` /// resource for the purposes of equality checking. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type field-name = string; /// Field values should always be ASCII strings. However, in /// reality, HTTP implementations often have to interpret malformed values, /// so they are provided as a list of bytes. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type field-value = list; /// This following block defines the `fields` resource which corresponds to @@ -184,7 +184,7 @@ interface types { /// Implementations may impose limits on individual field values and on total /// aggregate field section size. Operations that would exceed these limits /// fail with `header-error.size-exceeded` - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource fields { /// Construct an empty HTTP Fields. @@ -272,15 +272,15 @@ interface types { } /// Headers is an alias for Fields. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type headers = fields; /// Trailers is an alias for Fields. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type trailers = fields; /// Represents an HTTP Request. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource request { /// Construct a new `request` with a default `method` of `GET`, and @@ -380,7 +380,7 @@ interface types { /// /// These timeouts are separate from any the user may use to bound an /// asynchronous call. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource request-options { /// Construct a default `request-options` value. constructor(); @@ -416,11 +416,11 @@ interface types { } /// This type corresponds to the HTTP standard Status Code. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type status-code = u16; /// Represents an HTTP Response. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource response { /// Construct a new `response`, with a default `status-code` of `200`. @@ -469,4 +469,4 @@ interface types { /// acquired from it previously will remain valid. consume-body: static func(this: response, res: future>) -> tuple, future, error-code>>>; } -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/http@0.3.0-rc-2026-03-15/worlds.wit b/crates/spin-sdk/wit/deps/http@0.3.0/worlds.wit similarity index 61% rename from crates/spin-sdk/wit/deps/http@0.3.0-rc-2026-03-15/worlds.wit rename to crates/spin-sdk/wit/deps/http@0.3.0/worlds.wit index 9917e05..b572d5f 100644 --- a/crates/spin-sdk/wit/deps/http@0.3.0-rc-2026-03-15/worlds.wit +++ b/crates/spin-sdk/wit/deps/http@0.3.0/worlds.wit @@ -1,24 +1,24 @@ -package wasi:http@0.3.0-rc-2026-03-15; +package wasi:http@0.3.0; /// The `wasi:http/service` world captures a broad category of HTTP services /// including web applications, API servers, and proxies. It may be `include`d /// in more specific worlds such as `wasi:http/middleware`. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world service { /// HTTP services have access to time and randomness. - include wasi:clocks/imports@0.3.0-rc-2026-03-15; - include wasi:random/imports@0.3.0-rc-2026-03-15; + include wasi:clocks/imports@0.3.0; + include wasi:random/imports@0.3.0; /// Services have standard output and error streams which are expected to /// terminate in a developer-facing console provided by the host. - import wasi:cli/stdout@0.3.0-rc-2026-03-15; - import wasi:cli/stderr@0.3.0-rc-2026-03-15; + import wasi:cli/stdout@0.3.0; + import wasi:cli/stderr@0.3.0; /// 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@0.3.0-rc-2026-03-15; + import wasi:cli/stdin@0.3.0; /// This is the default `client` to use when user code simply wants to make an /// HTTP request (e.g., via `fetch()`). @@ -31,6 +31,38 @@ world service { /// /// This may also be used to receive synthesized or forwarded requests from /// another component. + /// + /// # Concurrent instance reuse + /// + /// Hosts may concurrently invoke this `handler` interface multiple times, + /// even when previous requests have yet to finish processing. This means that + /// the guest, if it becomes idle while being blocked on I/O, may be required + /// to service multiple requests at the same time. Guests can opt-out of + /// this behavior with component-model backpressure to avoid sending more + /// requests to this instance while a previous one is being processed, + /// however. + /// + /// In some contexts, correct attribution of resource usage and I/O operations + /// is an important requirement. For example, correct implementation of the + /// CDN-Loop header in the context of a proxy server requires that outgoing + /// HTTP requests can be attributed to the incoming HTTP request that induced + /// them. + /// + /// Hosts with this requirement must associate work happening on the same + /// component model task that the `handler` was originally invoked on with the + /// same incoming HTTP request. + /// + /// Conversely, guests should ensure that calls to imported interfaces happen on + /// the same component model task that the `handler` was originally invoked + /// on. Guest runtime implementations that do not provide this guarantee are + /// encouraged to opt-out of concurrent reuse through the component model's + /// backpressure mechanisms. + /// + /// Note that hosts can't rely on this guarantee being upheld by all guests, + /// and shouldn't treat it as part of their security model. Instead, the + /// combination of the above host and guest requirements enable hosts to + /// enforce correctness properties on behalf of the overall system a guest is + /// part of. export handler; } @@ -40,7 +72,7 @@ world service { /// Components may implement this world to allow them to participate in handler /// "chains" where a `request` flows through handlers on its way to some terminal /// `service` and corresponding `response` flows in the opposite direction. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world middleware { include service; import handler; @@ -53,7 +85,7 @@ world middleware { /// /// In `wasi:http/middleware` this interface is both exported and imported as /// the "downstream" and "upstream" directions of the middleware chain. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface handler { use types.{request, response, error-code}; @@ -74,7 +106,7 @@ interface handler { /// (including WIT itself) is unable to represent a component importing two /// instances of the same interface. A `client.send` import may be linked /// directly to a `handler.handle` export to bypass the network. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface client { use types.{request, response, error-code}; @@ -83,4 +115,4 @@ interface client { send: async func( request: request, ) -> result; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/world.wit b/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/world.wit deleted file mode 100644 index 5906913..0000000 --- a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/world.wit +++ /dev/null @@ -1,13 +0,0 @@ -package wasi:random@0.3.0-rc-2026-03-15; - -@since(version = 0.3.0-rc-2026-03-15) -world imports { - @since(version = 0.3.0-rc-2026-03-15) - import random; - - @since(version = 0.3.0-rc-2026-03-15) - import insecure; - - @since(version = 0.3.0-rc-2026-03-15) - import insecure-seed; -} diff --git a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/insecure-seed.wit b/crates/spin-sdk/wit/deps/random@0.3.0/insecure-seed.wit similarity index 89% rename from crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/insecure-seed.wit rename to crates/spin-sdk/wit/deps/random@0.3.0/insecure-seed.wit index dc9100f..63f08e1 100644 --- a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/insecure-seed.wit +++ b/crates/spin-sdk/wit/deps/random@0.3.0/insecure-seed.wit @@ -1,9 +1,9 @@ -package wasi:random@0.3.0-rc-2026-03-15; +package wasi:random@0.3.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. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface insecure-seed { /// Return a 128-bit value that may contain a pseudo-random value. /// @@ -22,6 +22,6 @@ interface insecure-seed { /// 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. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-insecure-seed: func() -> tuple; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/insecure.wit b/crates/spin-sdk/wit/deps/random@0.3.0/insecure.wit similarity index 88% rename from crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/insecure.wit rename to crates/spin-sdk/wit/deps/random@0.3.0/insecure.wit index ee3fef7..bcdc3f1 100644 --- a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/insecure.wit +++ b/crates/spin-sdk/wit/deps/random@0.3.0/insecure.wit @@ -1,9 +1,9 @@ -package wasi:random@0.3.0-rc-2026-03-15; +package wasi:random@0.3.0; /// The insecure interface for insecure pseudo-random numbers. /// /// It is intended to be portable at least between Unix-family platforms and /// Windows. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface insecure { /// Return up to `max-len` insecure pseudo-random bytes. /// @@ -20,13 +20,13 @@ interface insecure { /// Implementations MUST return at least 1 byte when `max-len` is greater /// than zero. When `max-len` is zero, implementations MUST return an empty /// list without trapping. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-insecure-random-bytes: func(max-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`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-insecure-random-u64: func() -> u64; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/random.wit b/crates/spin-sdk/wit/deps/random@0.3.0/random.wit similarity index 90% rename from crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/random.wit rename to crates/spin-sdk/wit/deps/random@0.3.0/random.wit index e40b97d..05c6fec 100644 --- a/crates/spin-sdk/wit/deps/random@0.3.0-rc-2026-03-15/random.wit +++ b/crates/spin-sdk/wit/deps/random@0.3.0/random.wit @@ -1,9 +1,9 @@ -package wasi:random@0.3.0-rc-2026-03-15; +package wasi:random@0.3.0; /// WASI Random is a random data API. /// /// It is intended to be portable at least between Unix-family platforms and /// Windows. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface random { /// Return up to `max-len` cryptographically-secure random or pseudo-random /// bytes. @@ -25,13 +25,13 @@ interface random { /// This function must always return fresh data. Deterministic environments /// must omit this function, rather than implementing it with deterministic /// data. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-random-bytes: func(max-len: u64) -> list; /// Return a cryptographically-secure random or pseudo-random `u64` value. /// /// This function returns the same type of data as `get-random-bytes`, /// represented as a `u64`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-random-u64: func() -> u64; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/random@0.3.0/world.wit b/crates/spin-sdk/wit/deps/random@0.3.0/world.wit new file mode 100644 index 0000000..1be328b --- /dev/null +++ b/crates/spin-sdk/wit/deps/random@0.3.0/world.wit @@ -0,0 +1,13 @@ +package wasi:random@0.3.0; + +@since(version = 0.3.0) +world imports { + @since(version = 0.3.0) + import random; + + @since(version = 0.3.0) + import insecure; + + @since(version = 0.3.0) + import insecure-seed; +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/world.wit b/crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/world.wit deleted file mode 100644 index 227662d..0000000 --- a/crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/world.wit +++ /dev/null @@ -1,9 +0,0 @@ -package wasi:sockets@0.3.0-rc-2026-03-15; - -@since(version = 0.3.0-rc-2026-03-15) -world imports { - @since(version = 0.3.0-rc-2026-03-15) - import types; - @since(version = 0.3.0-rc-2026-03-15) - import ip-name-lookup; -} diff --git a/crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/ip-name-lookup.wit b/crates/spin-sdk/wit/deps/sockets@0.3.0/ip-name-lookup.wit similarity index 92% rename from crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/ip-name-lookup.wit rename to crates/spin-sdk/wit/deps/sockets@0.3.0/ip-name-lookup.wit index 2e9c9fe..66e90b4 100644 --- a/crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/ip-name-lookup.wit +++ b/crates/spin-sdk/wit/deps/sockets@0.3.0/ip-name-lookup.wit @@ -1,10 +1,10 @@ -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface ip-name-lookup { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use types.{ip-address}; /// Lookup error codes. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { /// Access denied. /// @@ -56,6 +56,6 @@ interface ip-name-lookup { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resolve-addresses: async func(name: string) -> result, error-code>; -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/types.wit b/crates/spin-sdk/wit/deps/sockets@0.3.0/types.wit similarity index 94% rename from crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/types.wit rename to crates/spin-sdk/wit/deps/sockets@0.3.0/types.wit index fe2c044..9bce338 100644 --- a/crates/spin-sdk/wit/deps/sockets@0.3.0-rc-2026-03-15/types.wit +++ b/crates/spin-sdk/wit/deps/sockets@0.3.0/types.wit @@ -1,7 +1,7 @@ -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - @since(version = 0.3.0-rc-2026-03-15) - use wasi:clocks/types@0.3.0-rc-2026-03-15.{duration}; + @since(version = 0.3.0) + use wasi:clocks/types@0.3.0.{duration}; /// Error codes. /// @@ -14,7 +14,7 @@ interface types { /// - `out-of-memory` /// /// See each individual API for what the POSIX equivalents are. They sometimes differ per API. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { /// Access denied. /// @@ -92,7 +92,7 @@ interface types { other(option), } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) enum ip-address-family { /// Similar to `AF_INET` in POSIX. ipv4, @@ -101,18 +101,18 @@ interface types { ipv6, } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type ipv4-address = tuple; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type ipv6-address = tuple; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant ip-address { ipv4(ipv4-address), ipv6(ipv6-address), } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record ipv4-socket-address { /// sin_port port: u16, @@ -120,7 +120,7 @@ interface types { address: ipv4-address, } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record ipv6-socket-address { /// sin6_port port: u16, @@ -132,7 +132,7 @@ interface types { scope-id: u32, } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant ip-socket-address { ipv4(ipv4-socket-address), ipv6(ipv6-socket-address), @@ -147,7 +147,7 @@ interface types { /// - `connecting` /// - `connected` /// - `closed` - /// See + /// See /// for more information. /// /// Note: Except where explicitly mentioned, whenever this documentation uses @@ -170,7 +170,7 @@ interface types { /// In addition to the general error codes documented on the /// `types::error-code` type, TCP socket methods may always return /// `error(invalid-state)` when in the `closed` state. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource tcp-socket { /// Create a new TCP socket. @@ -191,7 +191,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) create: static func(address-family: ip-address-family) -> result; /// Bind the socket to the provided IP address and port. @@ -227,7 +227,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) bind: func(local-address: ip-socket-address) -> result<_, error-code>; /// Connect to a remote endpoint. @@ -264,7 +264,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) connect: async func(remote-address: ip-socket-address) -> result<_, error-code>; /// Start listening and return a stream of new inbound connections. @@ -337,7 +337,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) listen: func() -> result, error-code>; /// Transmit data to peer. @@ -362,7 +362,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) send: func(data: stream) -> future>; /// Read data from peer. @@ -392,7 +392,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) receive: func() -> tuple, future>>; /// Get the bound local address. @@ -412,7 +412,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-local-address: func() -> result; /// Get the remote address. @@ -425,13 +425,13 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-remote-address: func() -> result; /// Whether the socket is in the `listening` state. /// /// Equivalent to the SO_ACCEPTCONN socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-is-listening: func() -> bool; /// Whether this is a IPv4 or IPv6 socket. @@ -439,7 +439,7 @@ interface types { /// This is the value passed to the constructor. /// /// Equivalent to the SO_DOMAIN socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-address-family: func() -> ip-address-family; /// Hints the desired listen queue size. Implementations are free to @@ -453,7 +453,7 @@ interface types { /// - `not-supported`: (set) The platform does not support changing the backlog size after the initial listen. /// - `invalid-argument`: (set) The provided value was 0. /// - `invalid-state`: (set) The socket is in the `connecting` or `connected` state. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-listen-backlog-size: func(value: u64) -> result<_, error-code>; /// Enables or disables keepalive. @@ -466,9 +466,9 @@ interface types { /// false, but only come into effect when `keep-alive-enabled` is true. /// /// Equivalent to the SO_KEEPALIVE socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-enabled: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-enabled: func(value: bool) -> result<_, error-code>; /// Amount of time the connection has to be idle before TCP starts @@ -483,9 +483,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-idle-time: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-idle-time: func(value: duration) -> result<_, error-code>; /// The time between keepalive packets. @@ -499,9 +499,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-interval: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-interval: func(value: duration) -> result<_, error-code>; /// The maximum amount of keepalive packets TCP should send before @@ -516,9 +516,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-count: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-count: func(value: u32) -> result<_, error-code>; /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. @@ -527,9 +527,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The TTL value must be 1 or higher. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-hop-limit: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-hop-limit: func(value: u8) -> result<_, error-code>; /// Kernel buffer space reserved for sending/receiving on this socket. @@ -553,18 +553,18 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-receive-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-send-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-send-buffer-size: func(value: u64) -> result<_, error-code>; } /// A UDP socket handle. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource udp-socket { /// Create a new UDP socket. @@ -582,7 +582,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) create: static func(address-family: ip-address-family) -> result; /// Bind the socket to the provided IP address and port. @@ -604,7 +604,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) bind: func(local-address: ip-socket-address) -> result<_, error-code>; /// Associate this socket with a specific peer address. @@ -643,7 +643,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) connect: func(remote-address: ip-socket-address) -> result<_, error-code>; /// Dissociate this socket from its peer address. @@ -661,7 +661,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) disconnect: func() -> result<_, error-code>; /// Send a message on the socket to a particular peer. @@ -706,7 +706,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) send: async func(data: list, remote-address: option) -> result<_, error-code>; /// Receive a message on the socket. @@ -732,7 +732,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) receive: async func() -> result, ip-socket-address>, error-code>; /// Get the current bound address. @@ -752,7 +752,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-local-address: func() -> result; /// Get the address the socket is currently "connected" to. @@ -765,7 +765,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-remote-address: func() -> result; /// Whether this is a IPv4 or IPv6 socket. @@ -773,7 +773,7 @@ interface types { /// This is the value passed to the constructor. /// /// Equivalent to the SO_DOMAIN socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-address-family: func() -> ip-address-family; /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. @@ -782,9 +782,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The TTL value must be 1 or higher. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-unicast-hop-limit: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-unicast-hop-limit: func(value: u8) -> result<_, error-code>; /// Kernel buffer space reserved for sending/receiving on this socket. @@ -800,13 +800,13 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-receive-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-send-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-send-buffer-size: func(value: u64) -> result<_, error-code>; } -} +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/deps/sockets@0.3.0/world.wit b/crates/spin-sdk/wit/deps/sockets@0.3.0/world.wit new file mode 100644 index 0000000..97521b0 --- /dev/null +++ b/crates/spin-sdk/wit/deps/sockets@0.3.0/world.wit @@ -0,0 +1,9 @@ +package wasi:sockets@0.3.0; + +@since(version = 0.3.0) +world imports { + @since(version = 0.3.0) + import types; + @since(version = 0.3.0) + import ip-name-lookup; +} \ No newline at end of file diff --git a/crates/spin-sdk/wit/sdk.wit b/crates/spin-sdk/wit/sdk.wit index 9bf8fca..b1e1d3a 100644 --- a/crates/spin-sdk/wit/sdk.wit +++ b/crates/spin-sdk/wit/sdk.wit @@ -33,7 +33,7 @@ world spin-sdk-variables { } world spin-sdk-middleware { - import wasi:http/handler@0.3.0-rc-2026-03-15; + import wasi:http/handler@0.3.0; } world spin-sdk-experimental { diff --git a/examples/hello-world/spin.toml b/examples/hello-world/spin.toml index 395cc13..d167299 100644 --- a/examples/hello-world/spin.toml +++ b/examples/hello-world/spin.toml @@ -11,8 +11,8 @@ route = "/hello" component = "hello" [component.hello] -source = "../../target/wasm32-wasip1/release/hello_world.wasm" +source = "../../target/wasm32-wasip2/release/hello_world.wasm" description = "A simple component that returns hello." [component.hello.build] -command = "cargo build --target wasm32-wasip1 --release" +command = "cargo build --target wasm32-wasip2 --release" watch = ["src/**/*.rs", "Cargo.toml"]