diff --git a/imports.md b/imports.md
index cc75897..b337432 100644
--- a/imports.md
+++ b/imports.md
@@ -4,21 +4,21 @@ It is intended to be included in other worlds.
-Import interface wasi:io/poll@0.2.3
+Import interface wasi:io/poll@0.2.4
A poll API intended to let users wait for I/O events on multiple handles
at once.
@@ -71,7 +71,7 @@ being ready for I/O.
-Import interface wasi:clocks/monotonic-clock@0.2.3
+Import interface wasi:clocks/monotonic-clock@0.2.4
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
@@ -130,7 +130,7 @@ elapsed from the time this function is invoked.
-Import interface wasi:clocks/wall-clock@0.2.3
+Import interface wasi:clocks/wall-clock@0.2.4
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.
@@ -171,7 +171,7 @@ also known as Unix Time.
-Import interface wasi:random/random@0.2.3
+Import interface wasi:random/random@0.2.4
WASI Random is a random data API.
It is intended to be portable at least between Unix-family platforms and
Windows.
@@ -204,7 +204,7 @@ represented as a u64.
-Import interface wasi:io/error@0.2.3
+Import interface wasi:io/error@0.2.4
Types
resource error
@@ -237,7 +237,7 @@ hazard.
-Import interface wasi:io/streams@0.2.3
+Import interface wasi:io/streams@0.2.4
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;
@@ -567,7 +567,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:cli/stdout@0.2.3
+Import interface wasi:cli/stdout@0.2.4
Types
type output-stream
@@ -580,7 +580,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:cli/stderr@0.2.3
+Import interface wasi:cli/stderr@0.2.4
Types
type output-stream
@@ -593,7 +593,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:cli/stdin@0.2.3
+Import interface wasi:cli/stdin@0.2.4
Types
type input-stream
@@ -606,7 +606,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:http/types@0.2.3
+Import interface wasi:http/types@0.2.4
This interface defines all of the types and methods for implementing
HTTP Requests and Responses, both incoming and outgoing, as well as
their headers, trailers, and bodies.
@@ -1260,6 +1260,25 @@ supported.
+[method]response-outparam.send-informational: func
+Send an HTTP 1xx response.
+Unlike response-outparam.set, this does not consume the
+response-outparam, allowing the guest to send an arbitrary number of
+informational responses before sending the final response using
+response-outparam.set.
+This will return an HTTP-protocol-error if status is not in the
+range [100-199], or an internal-error if the implementation does not
+support informational responses.
+Params
+
+Return values
+
[static]response-outparam.set: func
Set the value of the response-outparam to either send a response,
or indicate an error.
@@ -1507,7 +1526,7 @@ but those will be reported by the incoming-body
>, error-code>>>
-Import interface wasi:http/outgoing-handler@0.2.3
+Import interface wasi:http/outgoing-handler@0.2.4
This interface defines a handler of outgoing HTTP Requests. It should be
imported by components which wish to make HTTP Requests.
diff --git a/proxy.md b/proxy.md
index 27eabb1..07dcd3e 100644
--- a/proxy.md
+++ b/proxy.md
@@ -6,26 +6,26 @@ outgoing HTTP requests.
-Import interface wasi:io/poll@0.2.3
+Import interface wasi:io/poll@0.2.4
A poll API intended to let users wait for I/O events on multiple handles
at once.
@@ -78,7 +78,7 @@ being ready for I/O.
-Import interface wasi:clocks/monotonic-clock@0.2.3
+Import interface wasi:clocks/monotonic-clock@0.2.4
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
@@ -137,7 +137,7 @@ elapsed from the time this function is invoked.
-Import interface wasi:clocks/wall-clock@0.2.3
+Import interface wasi:clocks/wall-clock@0.2.4
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.
@@ -178,7 +178,7 @@ also known as Unix Time.
-Import interface wasi:random/random@0.2.3
+Import interface wasi:random/random@0.2.4
WASI Random is a random data API.
It is intended to be portable at least between Unix-family platforms and
Windows.
@@ -211,7 +211,7 @@ represented as a u64.
-Import interface wasi:io/error@0.2.3
+Import interface wasi:io/error@0.2.4
Types
resource error
@@ -244,7 +244,7 @@ hazard.
-Import interface wasi:io/streams@0.2.3
+Import interface wasi:io/streams@0.2.4
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;
@@ -574,7 +574,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:cli/stdout@0.2.3
+Import interface wasi:cli/stdout@0.2.4
Types
type output-stream
@@ -587,7 +587,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:cli/stderr@0.2.3
+Import interface wasi:cli/stderr@0.2.4
Types
type output-stream
@@ -600,7 +600,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:cli/stdin@0.2.3
+Import interface wasi:cli/stdin@0.2.4
Types
type input-stream
@@ -613,7 +613,7 @@ is ready for reading, before performing the splice.
-Import interface wasi:http/types@0.2.3
+Import interface wasi:http/types@0.2.4
This interface defines all of the types and methods for implementing
HTTP Requests and Responses, both incoming and outgoing, as well as
their headers, trailers, and bodies.
@@ -1267,6 +1267,25 @@ supported.
+[method]response-outparam.send-informational: func
+Send an HTTP 1xx response.
+Unlike response-outparam.set, this does not consume the
+response-outparam, allowing the guest to send an arbitrary number of
+informational responses before sending the final response using
+response-outparam.set.
+This will return an HTTP-protocol-error if status is not in the
+range [100-199], or an internal-error if the implementation does not
+support informational responses.
+Params
+
+Return values
+
[static]response-outparam.set: func
Set the value of the response-outparam to either send a response,
or indicate an error.
@@ -1514,7 +1533,7 @@ but those will be reported by the incoming-body
>, error-code>>>
-Import interface wasi:http/outgoing-handler@0.2.3
+Import interface wasi:http/outgoing-handler@0.2.4
This interface defines a handler of outgoing HTTP Requests. It should be
imported by components which wish to make HTTP Requests.
@@ -1551,7 +1570,7 @@ through the future-incoming-response
>, error-code>
-Export interface wasi:http/incoming-handler@0.2.3
+Export interface wasi:http/incoming-handler@0.2.4
Types
type incoming-request
diff --git a/wit-0.3.0-draft/deps.toml b/wit-0.3.0-draft/deps.toml
index 772bb1b..da0017d 100644
--- a/wit-0.3.0-draft/deps.toml
+++ b/wit-0.3.0-draft/deps.toml
@@ -1,3 +1,3 @@
-cli = "https://github.com/WebAssembly/wasi-cli/archive/v0.2.3.tar.gz" # TODO: update to v0.3.0-draft and remove custom clock and random imports
+cli = "https://github.com/WebAssembly/wasi-cli/archive/v0.2.4.tar.gz" # TODO: update to v0.3.0-draft and remove custom clock and random imports
clocks-0-3-0 = { url = "https://github.com/WebAssembly/wasi-clocks/archive/main.tar.gz", subdir = "wit-0.3.0-draft" }
random-0-3-0 = { url = "https://github.com/WebAssembly/wasi-random/archive/main.tar.gz", subdir = "wit-0.3.0-draft" }
diff --git a/wit-0.3.0-draft/deps/cli/command.wit b/wit-0.3.0-draft/deps/cli/command.wit
index 3a81766..88ab2a9 100644
--- a/wit-0.3.0-draft/deps/cli/command.wit
+++ b/wit-0.3.0-draft/deps/cli/command.wit
@@ -1,4 +1,4 @@
-package wasi:cli@0.2.3;
+package wasi:cli@0.2.4;
@since(version = 0.2.0)
world command {
diff --git a/wit-0.3.0-draft/deps/cli/imports.wit b/wit-0.3.0-draft/deps/cli/imports.wit
index 8b4e397..ad5c6bb 100644
--- a/wit-0.3.0-draft/deps/cli/imports.wit
+++ b/wit-0.3.0-draft/deps/cli/imports.wit
@@ -1,17 +1,17 @@
-package wasi:cli@0.2.3;
+package wasi:cli@0.2.4;
@since(version = 0.2.0)
world imports {
@since(version = 0.2.0)
- include wasi:clocks/imports@0.2.3;
+ include wasi:clocks/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:filesystem/imports@0.2.3;
+ include wasi:filesystem/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:sockets/imports@0.2.3;
+ include wasi:sockets/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:random/imports@0.2.3;
+ include wasi:random/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:io/imports@0.2.3;
+ include wasi:io/imports@0.2.4;
@since(version = 0.2.0)
import environment;
diff --git a/wit-0.3.0-draft/deps/cli/stdio.wit b/wit-0.3.0-draft/deps/cli/stdio.wit
index 1b54f53..60727a9 100644
--- a/wit-0.3.0-draft/deps/cli/stdio.wit
+++ b/wit-0.3.0-draft/deps/cli/stdio.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface stdin {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{input-stream};
+ use wasi:io/streams@0.2.4.{input-stream};
@since(version = 0.2.0)
get-stdin: func() -> input-stream;
@@ -10,7 +10,7 @@ interface stdin {
@since(version = 0.2.0)
interface stdout {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{output-stream};
+ use wasi:io/streams@0.2.4.{output-stream};
@since(version = 0.2.0)
get-stdout: func() -> output-stream;
@@ -19,7 +19,7 @@ interface stdout {
@since(version = 0.2.0)
interface stderr {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{output-stream};
+ use wasi:io/streams@0.2.4.{output-stream};
@since(version = 0.2.0)
get-stderr: func() -> output-stream;
diff --git a/wit-0.3.0-draft/deps/clocks/monotonic-clock.wit b/wit-0.3.0-draft/deps/clocks/monotonic-clock.wit
index c676fb8..175f8fe 100644
--- a/wit-0.3.0-draft/deps/clocks/monotonic-clock.wit
+++ b/wit-0.3.0-draft/deps/clocks/monotonic-clock.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
/// WASI Monotonic Clock is a clock API intended to let users measure elapsed
/// time.
///
@@ -10,7 +10,7 @@ package wasi:clocks@0.2.3;
@since(version = 0.2.0)
interface monotonic-clock {
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
/// An instant in time, in nanoseconds. An instant is relative to an
/// unspecified initial value, and can only be compared to instances from
diff --git a/wit-0.3.0-draft/deps/clocks/timezone.wit b/wit-0.3.0-draft/deps/clocks/timezone.wit
index b43e93b..658cb17 100644
--- a/wit-0.3.0-draft/deps/clocks/timezone.wit
+++ b/wit-0.3.0-draft/deps/clocks/timezone.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
@unstable(feature = clocks-timezone)
interface timezone {
diff --git a/wit-0.3.0-draft/deps/clocks/wall-clock.wit b/wit-0.3.0-draft/deps/clocks/wall-clock.wit
index e00ce08..f826cd1 100644
--- a/wit-0.3.0-draft/deps/clocks/wall-clock.wit
+++ b/wit-0.3.0-draft/deps/clocks/wall-clock.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
/// 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.
diff --git a/wit-0.3.0-draft/deps/clocks/world.wit b/wit-0.3.0-draft/deps/clocks/world.wit
index 05f04f7..9e20874 100644
--- a/wit-0.3.0-draft/deps/clocks/world.wit
+++ b/wit-0.3.0-draft/deps/clocks/world.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit-0.3.0-draft/deps/filesystem/preopens.wit b/wit-0.3.0-draft/deps/filesystem/preopens.wit
index cea9749..6e60039 100644
--- a/wit-0.3.0-draft/deps/filesystem/preopens.wit
+++ b/wit-0.3.0-draft/deps/filesystem/preopens.wit
@@ -1,4 +1,4 @@
-package wasi:filesystem@0.2.3;
+package wasi:filesystem@0.2.4;
@since(version = 0.2.0)
interface preopens {
diff --git a/wit-0.3.0-draft/deps/filesystem/types.wit b/wit-0.3.0-draft/deps/filesystem/types.wit
index d229a21..194414e 100644
--- a/wit-0.3.0-draft/deps/filesystem/types.wit
+++ b/wit-0.3.0-draft/deps/filesystem/types.wit
@@ -1,4 +1,4 @@
-package wasi:filesystem@0.2.3;
+package wasi:filesystem@0.2.4;
/// 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.
@@ -26,9 +26,9 @@ package wasi:filesystem@0.2.3;
@since(version = 0.2.0)
interface types {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{input-stream, output-stream, error};
+ use wasi:io/streams@0.2.4.{input-stream, output-stream, error};
@since(version = 0.2.0)
- use wasi:clocks/wall-clock@0.2.3.{datetime};
+ use wasi:clocks/wall-clock@0.2.4.{datetime};
/// File size or length of a region within a file.
@since(version = 0.2.0)
diff --git a/wit-0.3.0-draft/deps/filesystem/world.wit b/wit-0.3.0-draft/deps/filesystem/world.wit
index 29405bc..7742ed6 100644
--- a/wit-0.3.0-draft/deps/filesystem/world.wit
+++ b/wit-0.3.0-draft/deps/filesystem/world.wit
@@ -1,4 +1,4 @@
-package wasi:filesystem@0.2.3;
+package wasi:filesystem@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit-0.3.0-draft/deps/io/error.wit b/wit-0.3.0-draft/deps/io/error.wit
index 97c6068..eb0600f 100644
--- a/wit-0.3.0-draft/deps/io/error.wit
+++ b/wit-0.3.0-draft/deps/io/error.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
@since(version = 0.2.0)
interface error {
diff --git a/wit-0.3.0-draft/deps/io/poll.wit b/wit-0.3.0-draft/deps/io/poll.wit
index 9bcbe8e..98eda93 100644
--- a/wit-0.3.0-draft/deps/io/poll.wit
+++ b/wit-0.3.0-draft/deps/io/poll.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
/// A poll API intended to let users wait for I/O events on multiple handles
/// at once.
diff --git a/wit-0.3.0-draft/deps/io/streams.wit b/wit-0.3.0-draft/deps/io/streams.wit
index 0de0846..bb9a31e 100644
--- a/wit-0.3.0-draft/deps/io/streams.wit
+++ b/wit-0.3.0-draft/deps/io/streams.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
/// WASI I/O is an I/O abstraction API which is currently focused on providing
/// stream types.
diff --git a/wit-0.3.0-draft/deps/io/world.wit b/wit-0.3.0-draft/deps/io/world.wit
index f1d2102..8e0fa5c 100644
--- a/wit-0.3.0-draft/deps/io/world.wit
+++ b/wit-0.3.0-draft/deps/io/world.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit-0.3.0-draft/deps/random/insecure-seed.wit b/wit-0.3.0-draft/deps/random/insecure-seed.wit
index 67d024d..45e8baf 100644
--- a/wit-0.3.0-draft/deps/random/insecure-seed.wit
+++ b/wit-0.3.0-draft/deps/random/insecure-seed.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
/// The insecure-seed interface for seeding hash-map DoS resistance.
///
/// It is intended to be portable at least between Unix-family platforms and
diff --git a/wit-0.3.0-draft/deps/random/insecure.wit b/wit-0.3.0-draft/deps/random/insecure.wit
index a07dfab..5ab5030 100644
--- a/wit-0.3.0-draft/deps/random/insecure.wit
+++ b/wit-0.3.0-draft/deps/random/insecure.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
/// The insecure interface for insecure pseudo-random numbers.
///
/// It is intended to be portable at least between Unix-family platforms and
diff --git a/wit-0.3.0-draft/deps/random/random.wit b/wit-0.3.0-draft/deps/random/random.wit
index 91957e6..9e5220d 100644
--- a/wit-0.3.0-draft/deps/random/random.wit
+++ b/wit-0.3.0-draft/deps/random/random.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
/// WASI Random is a random data API.
///
/// It is intended to be portable at least between Unix-family platforms and
diff --git a/wit-0.3.0-draft/deps/random/world.wit b/wit-0.3.0-draft/deps/random/world.wit
index 0c1218f..d890558 100644
--- a/wit-0.3.0-draft/deps/random/world.wit
+++ b/wit-0.3.0-draft/deps/random/world.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit-0.3.0-draft/deps/sockets/ip-name-lookup.wit b/wit-0.3.0-draft/deps/sockets/ip-name-lookup.wit
index c1d8a47..48b41a5 100644
--- a/wit-0.3.0-draft/deps/sockets/ip-name-lookup.wit
+++ b/wit-0.3.0-draft/deps/sockets/ip-name-lookup.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface ip-name-lookup {
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
@since(version = 0.2.0)
use network.{network, error-code, ip-address};
diff --git a/wit-0.3.0-draft/deps/sockets/network.wit b/wit-0.3.0-draft/deps/sockets/network.wit
index f3f60a3..aa4985e 100644
--- a/wit-0.3.0-draft/deps/sockets/network.wit
+++ b/wit-0.3.0-draft/deps/sockets/network.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface network {
@unstable(feature = network-error-code)
- use wasi:io/error@0.2.3.{error};
+ use wasi:io/error@0.2.4.{error};
/// An opaque resource that represents access to (a subset of) the network.
/// This enables context-based security for networking.
diff --git a/wit-0.3.0-draft/deps/sockets/tcp.wit b/wit-0.3.0-draft/deps/sockets/tcp.wit
index b4cd87f..b331133 100644
--- a/wit-0.3.0-draft/deps/sockets/tcp.wit
+++ b/wit-0.3.0-draft/deps/sockets/tcp.wit
@@ -1,11 +1,11 @@
@since(version = 0.2.0)
interface tcp {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{input-stream, output-stream};
+ use wasi:io/streams@0.2.4.{input-stream, output-stream};
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
@since(version = 0.2.0)
- use wasi:clocks/monotonic-clock@0.2.3.{duration};
+ use wasi:clocks/monotonic-clock@0.2.4.{duration};
@since(version = 0.2.0)
use network.{network, error-code, ip-socket-address, ip-address-family};
diff --git a/wit-0.3.0-draft/deps/sockets/udp.wit b/wit-0.3.0-draft/deps/sockets/udp.wit
index 01901ca..cfc07ba 100644
--- a/wit-0.3.0-draft/deps/sockets/udp.wit
+++ b/wit-0.3.0-draft/deps/sockets/udp.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface udp {
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
@since(version = 0.2.0)
use network.{network, error-code, ip-socket-address, ip-address-family};
diff --git a/wit-0.3.0-draft/deps/sockets/world.wit b/wit-0.3.0-draft/deps/sockets/world.wit
index 2f0ad0d..82acdb9 100644
--- a/wit-0.3.0-draft/deps/sockets/world.wit
+++ b/wit-0.3.0-draft/deps/sockets/world.wit
@@ -1,4 +1,4 @@
-package wasi:sockets@0.2.3;
+package wasi:sockets@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit-0.3.0-draft/proxy.wit b/wit-0.3.0-draft/proxy.wit
index 8e10fd7..e5f45a9 100644
--- a/wit-0.3.0-draft/proxy.wit
+++ b/wit-0.3.0-draft/proxy.wit
@@ -9,14 +9,14 @@ world imports {
/// 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@0.2.3;
- import wasi:cli/stderr@0.2.3;
+ import wasi:cli/stdout@0.2.4;
+ import wasi:cli/stderr@0.2.4;
/// 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.2.3;
+ import wasi:cli/stdin@0.2.4;
/// This is the default handler to use when user code simply wants to make an
/// HTTP request (e.g., via `fetch()`).
diff --git a/wit/deps.lock b/wit/deps.lock
index 24a22f6..d1ea8ce 100644
--- a/wit/deps.lock
+++ b/wit/deps.lock
@@ -1,25 +1,25 @@
[cli]
-url = "https://github.com/WebAssembly/wasi-cli/archive/v0.2.3.tar.gz"
-sha256 = "4dadd13d55aaf626833d1f4b9c34a17b0f04e993babd09552b785cda3b95ea76"
-sha512 = "898dcc4e8c15d18acc6b88dbe232336fa4d19019430a910dbc9e7aeaace3077a164af3be9f002de6e7e65ef693df340801ac0c7e421e9a746bf1b6d698a90835"
+url = "https://github.com/WebAssembly/wasi-cli/archive/v0.2.4.tar.gz"
+sha256 = "674ab0febcabe50a68122751160d243361f401d923e93e4f9c0e6f9d424d21e1"
+sha512 = "70529da20c463b37aeff9fb40586e093ee3560bdacf573e8dc8ec2a380c598456294d1308aee9431745ad0fef6ac67aae53b5abb4578c7d682cd5b1485825191"
deps = ["clocks", "filesystem", "io", "random", "sockets"]
[clocks]
-sha256 = "93a701968a7dd3c5d69031bc0601681c468972fdf7e28a93bb6150a67d6ebe8b"
-sha512 = "98fca567c7a01887b0fb38981f1772169b6ea8de475b546508f8b86738d84e44ba95cae81def40ac34e8809f5f60e85224077ab8cb6d6d5d6296acc1df73c159"
+sha256 = "fc36267c5098ad9ac6455396b27c8ef206ca23cae74f40bd44c57be68e7849b6"
+sha512 = "0deed3d3a86f284adda7991cd24c0c4aab806ba2e0cb111da80d7f99c05f10793a602b28451407cad58ab762997f60c0f6d173e919e4a0988773b455d3a410d3"
[filesystem]
-sha256 = "69d42fb10a04a33545b17e055f13db9b1e10e82ba0ed5bdb52334e40dc07c679"
-sha512 = "612effbac6f4804fe0c29dae20b78bbba59e52cb754c15402f5fe229c3153a221e0fbdff1d9d00ceaa3fe049c6a95523a5b99f772f1c16d972eade2c88326a30"
+sha256 = "dd435f78b23714bd9d51ef3789c43b831549e71f54b57394a41bbf0c4da45f42"
+sha512 = "d58bcf6eae908a6b2d883bcdfe456dc31aa99c848d0b3d21f710bde5bbb59ec105dbd5085004eadd0faa938530e4c29f88e589f525c080eb6d5971775a0b64ed"
[io]
-sha256 = "1cccbfe4122686ea57a25cd368e8cdfc408cbcad089f47fb6685b6f92e96f050"
-sha512 = "7a95f964c13da52611141acd89bc8876226497f128e99dd176a4270c5b5efbd8cc847b5fbd1a91258d028c646db99e0424d72590cf1caf20f9f3a3343fad5017"
+sha256 = "770a73d479cda8e4c4064dd4006d2654ebcc358952079d74e41af27cf26bddbf"
+sha512 = "b790f9750ac6782d9aaaa379845600b66dbde14ecee42f159c29796447eb8e61ee61f3b306e92622993b5e25298834b6ff62d7d9a04f8f18c05f07eda8f47ae0"
[random]
-sha256 = "dd0c91e7125172eb8fd4568e15ad9fc7305643015e6ece4396c3cc5e8c2bf79a"
-sha512 = "d1ca2e7b0616a94a3b39d1b9450bb3fb595b01fd94a8626ad75433038dde40988ecb41ab93a374d569ab72163af3b30038d7bfc3499b9c07193181f4f1d9292a"
+sha256 = "876d81b0a777f1dc9db215fa36f45898a907188819185d6b189345f28c081a45"
+sha512 = "fc6a0ed97e0525456222b28bcc49431bade826a97cb6eb52cde595908865d1ed7835c54a63b408ba82e3d49061aebb9a8725d1d2316d28c0ccb12af8ec968ab8"
[sockets]
-sha256 = "2bc0f65a8046207ee3330ad7d63f6fafeafd4cc0ea4084f081bd5e4f7b177e74"
-sha512 = "3e5490e41547dffa78d52631825d93da8d60f4af0246cbaf97e1ecb879285953a86d5f1f390b10c32f91dd7eaec6f43e625a26b1c92c32a0c86fde428aedaaab"
+sha256 = "e6872db116eb02f2043c4238999712de19bdb22e3c8da00af563f8b6c4dabb18"
+sha512 = "28c05fe8acd691d808b6a90b950483bbf59983c02e91ed4a89b0e06c3e2a27e0f73be678979309553f0889fc3fea00c4740b007946d7285aa554dc65d56b1b7f"
diff --git a/wit/deps.toml b/wit/deps.toml
index fbadb97..5a33742 100644
--- a/wit/deps.toml
+++ b/wit/deps.toml
@@ -1 +1 @@
-cli = "https://github.com/WebAssembly/wasi-cli/archive/v0.2.3.tar.gz"
+cli = "https://github.com/WebAssembly/wasi-cli/archive/v0.2.4.tar.gz"
diff --git a/wit/deps/cli/command.wit b/wit/deps/cli/command.wit
index 3a81766..88ab2a9 100644
--- a/wit/deps/cli/command.wit
+++ b/wit/deps/cli/command.wit
@@ -1,4 +1,4 @@
-package wasi:cli@0.2.3;
+package wasi:cli@0.2.4;
@since(version = 0.2.0)
world command {
diff --git a/wit/deps/cli/imports.wit b/wit/deps/cli/imports.wit
index 8b4e397..ad5c6bb 100644
--- a/wit/deps/cli/imports.wit
+++ b/wit/deps/cli/imports.wit
@@ -1,17 +1,17 @@
-package wasi:cli@0.2.3;
+package wasi:cli@0.2.4;
@since(version = 0.2.0)
world imports {
@since(version = 0.2.0)
- include wasi:clocks/imports@0.2.3;
+ include wasi:clocks/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:filesystem/imports@0.2.3;
+ include wasi:filesystem/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:sockets/imports@0.2.3;
+ include wasi:sockets/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:random/imports@0.2.3;
+ include wasi:random/imports@0.2.4;
@since(version = 0.2.0)
- include wasi:io/imports@0.2.3;
+ include wasi:io/imports@0.2.4;
@since(version = 0.2.0)
import environment;
diff --git a/wit/deps/cli/stdio.wit b/wit/deps/cli/stdio.wit
index 1b54f53..60727a9 100644
--- a/wit/deps/cli/stdio.wit
+++ b/wit/deps/cli/stdio.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface stdin {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{input-stream};
+ use wasi:io/streams@0.2.4.{input-stream};
@since(version = 0.2.0)
get-stdin: func() -> input-stream;
@@ -10,7 +10,7 @@ interface stdin {
@since(version = 0.2.0)
interface stdout {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{output-stream};
+ use wasi:io/streams@0.2.4.{output-stream};
@since(version = 0.2.0)
get-stdout: func() -> output-stream;
@@ -19,7 +19,7 @@ interface stdout {
@since(version = 0.2.0)
interface stderr {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{output-stream};
+ use wasi:io/streams@0.2.4.{output-stream};
@since(version = 0.2.0)
get-stderr: func() -> output-stream;
diff --git a/wit/deps/clocks/monotonic-clock.wit b/wit/deps/clocks/monotonic-clock.wit
index c676fb8..175f8fe 100644
--- a/wit/deps/clocks/monotonic-clock.wit
+++ b/wit/deps/clocks/monotonic-clock.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
/// WASI Monotonic Clock is a clock API intended to let users measure elapsed
/// time.
///
@@ -10,7 +10,7 @@ package wasi:clocks@0.2.3;
@since(version = 0.2.0)
interface monotonic-clock {
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
/// An instant in time, in nanoseconds. An instant is relative to an
/// unspecified initial value, and can only be compared to instances from
diff --git a/wit/deps/clocks/timezone.wit b/wit/deps/clocks/timezone.wit
index b43e93b..658cb17 100644
--- a/wit/deps/clocks/timezone.wit
+++ b/wit/deps/clocks/timezone.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
@unstable(feature = clocks-timezone)
interface timezone {
diff --git a/wit/deps/clocks/wall-clock.wit b/wit/deps/clocks/wall-clock.wit
index e00ce08..f826cd1 100644
--- a/wit/deps/clocks/wall-clock.wit
+++ b/wit/deps/clocks/wall-clock.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
/// 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.
diff --git a/wit/deps/clocks/world.wit b/wit/deps/clocks/world.wit
index 05f04f7..9e20874 100644
--- a/wit/deps/clocks/world.wit
+++ b/wit/deps/clocks/world.wit
@@ -1,4 +1,4 @@
-package wasi:clocks@0.2.3;
+package wasi:clocks@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit/deps/filesystem/preopens.wit b/wit/deps/filesystem/preopens.wit
index cea9749..6e60039 100644
--- a/wit/deps/filesystem/preopens.wit
+++ b/wit/deps/filesystem/preopens.wit
@@ -1,4 +1,4 @@
-package wasi:filesystem@0.2.3;
+package wasi:filesystem@0.2.4;
@since(version = 0.2.0)
interface preopens {
diff --git a/wit/deps/filesystem/types.wit b/wit/deps/filesystem/types.wit
index d229a21..962cadf 100644
--- a/wit/deps/filesystem/types.wit
+++ b/wit/deps/filesystem/types.wit
@@ -1,4 +1,4 @@
-package wasi:filesystem@0.2.3;
+package wasi:filesystem@0.2.4;
/// 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.
@@ -26,9 +26,9 @@ package wasi:filesystem@0.2.3;
@since(version = 0.2.0)
interface types {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{input-stream, output-stream, error};
+ use wasi:io/streams@0.2.4.{input-stream, output-stream, error};
@since(version = 0.2.0)
- use wasi:clocks/wall-clock@0.2.3.{datetime};
+ use wasi:clocks/wall-clock@0.2.4.{datetime};
/// File size or length of a region within a file.
@since(version = 0.2.0)
@@ -508,6 +508,10 @@ interface types {
/// Create a hard link.
///
+ /// Fails with `error-code::no-entry` if the old path does not exist,
+ /// with `error-code::exist` if the new path already exists, and
+ /// `error-code::not-permitted` if the old path is not a file.
+ ///
/// Note: This is similar to `linkat` in POSIX.
@since(version = 0.2.0)
link-at: func(
diff --git a/wit/deps/filesystem/world.wit b/wit/deps/filesystem/world.wit
index 29405bc..7742ed6 100644
--- a/wit/deps/filesystem/world.wit
+++ b/wit/deps/filesystem/world.wit
@@ -1,4 +1,4 @@
-package wasi:filesystem@0.2.3;
+package wasi:filesystem@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit/deps/io/error.wit b/wit/deps/io/error.wit
index 97c6068..eb0600f 100644
--- a/wit/deps/io/error.wit
+++ b/wit/deps/io/error.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
@since(version = 0.2.0)
interface error {
diff --git a/wit/deps/io/poll.wit b/wit/deps/io/poll.wit
index 9bcbe8e..170deff 100644
--- a/wit/deps/io/poll.wit
+++ b/wit/deps/io/poll.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
/// A poll API intended to let users wait for I/O events on multiple handles
/// at once.
@@ -8,19 +8,19 @@ interface poll {
@since(version = 0.2.0)
resource pollable {
- /// Return the readiness of a pollable. This function never blocks.
- ///
- /// Returns `true` when the pollable is ready, and `false` otherwise.
- @since(version = 0.2.0)
- ready: func() -> bool;
+ /// Return the readiness of a pollable. This function never blocks.
+ ///
+ /// Returns `true` when the pollable is ready, and `false` otherwise.
+ @since(version = 0.2.0)
+ ready: func() -> bool;
- /// `block` returns immediately if the pollable is ready, and otherwise
- /// blocks until ready.
- ///
- /// This function is equivalent to calling `poll.poll` on a list
- /// containing only this pollable.
- @since(version = 0.2.0)
- block: func();
+ /// `block` returns immediately if the pollable is ready, and otherwise
+ /// blocks until ready.
+ ///
+ /// This function is equivalent to calling `poll.poll` on a list
+ /// containing only this pollable.
+ @since(version = 0.2.0)
+ block: func();
}
/// Poll for completion on a set of pollables.
diff --git a/wit/deps/io/streams.wit b/wit/deps/io/streams.wit
index 0de0846..bb9a31e 100644
--- a/wit/deps/io/streams.wit
+++ b/wit/deps/io/streams.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
/// WASI I/O is an I/O abstraction API which is currently focused on providing
/// stream types.
diff --git a/wit/deps/io/world.wit b/wit/deps/io/world.wit
index f1d2102..8e0fa5c 100644
--- a/wit/deps/io/world.wit
+++ b/wit/deps/io/world.wit
@@ -1,4 +1,4 @@
-package wasi:io@0.2.3;
+package wasi:io@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit/deps/random/insecure-seed.wit b/wit/deps/random/insecure-seed.wit
index 67d024d..45e8baf 100644
--- a/wit/deps/random/insecure-seed.wit
+++ b/wit/deps/random/insecure-seed.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
/// The insecure-seed interface for seeding hash-map DoS resistance.
///
/// It is intended to be portable at least between Unix-family platforms and
diff --git a/wit/deps/random/insecure.wit b/wit/deps/random/insecure.wit
index a07dfab..5ab5030 100644
--- a/wit/deps/random/insecure.wit
+++ b/wit/deps/random/insecure.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
/// The insecure interface for insecure pseudo-random numbers.
///
/// It is intended to be portable at least between Unix-family platforms and
diff --git a/wit/deps/random/random.wit b/wit/deps/random/random.wit
index 91957e6..9e5220d 100644
--- a/wit/deps/random/random.wit
+++ b/wit/deps/random/random.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
/// WASI Random is a random data API.
///
/// It is intended to be portable at least between Unix-family platforms and
diff --git a/wit/deps/random/world.wit b/wit/deps/random/world.wit
index 0c1218f..d890558 100644
--- a/wit/deps/random/world.wit
+++ b/wit/deps/random/world.wit
@@ -1,4 +1,4 @@
-package wasi:random@0.2.3;
+package wasi:random@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit/deps/sockets/ip-name-lookup.wit b/wit/deps/sockets/ip-name-lookup.wit
index c1d8a47..48b41a5 100644
--- a/wit/deps/sockets/ip-name-lookup.wit
+++ b/wit/deps/sockets/ip-name-lookup.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface ip-name-lookup {
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
@since(version = 0.2.0)
use network.{network, error-code, ip-address};
diff --git a/wit/deps/sockets/network.wit b/wit/deps/sockets/network.wit
index f3f60a3..aa4985e 100644
--- a/wit/deps/sockets/network.wit
+++ b/wit/deps/sockets/network.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface network {
@unstable(feature = network-error-code)
- use wasi:io/error@0.2.3.{error};
+ use wasi:io/error@0.2.4.{error};
/// An opaque resource that represents access to (a subset of) the network.
/// This enables context-based security for networking.
diff --git a/wit/deps/sockets/tcp.wit b/wit/deps/sockets/tcp.wit
index b4cd87f..b331133 100644
--- a/wit/deps/sockets/tcp.wit
+++ b/wit/deps/sockets/tcp.wit
@@ -1,11 +1,11 @@
@since(version = 0.2.0)
interface tcp {
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{input-stream, output-stream};
+ use wasi:io/streams@0.2.4.{input-stream, output-stream};
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
@since(version = 0.2.0)
- use wasi:clocks/monotonic-clock@0.2.3.{duration};
+ use wasi:clocks/monotonic-clock@0.2.4.{duration};
@since(version = 0.2.0)
use network.{network, error-code, ip-socket-address, ip-address-family};
diff --git a/wit/deps/sockets/udp.wit b/wit/deps/sockets/udp.wit
index 01901ca..cfc07ba 100644
--- a/wit/deps/sockets/udp.wit
+++ b/wit/deps/sockets/udp.wit
@@ -1,7 +1,7 @@
@since(version = 0.2.0)
interface udp {
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
@since(version = 0.2.0)
use network.{network, error-code, ip-socket-address, ip-address-family};
diff --git a/wit/deps/sockets/world.wit b/wit/deps/sockets/world.wit
index 2f0ad0d..82acdb9 100644
--- a/wit/deps/sockets/world.wit
+++ b/wit/deps/sockets/world.wit
@@ -1,4 +1,4 @@
-package wasi:sockets@0.2.3;
+package wasi:sockets@0.2.4;
@since(version = 0.2.0)
world imports {
diff --git a/wit/proxy.wit b/wit/proxy.wit
index de3bbe8..cd3af25 100644
--- a/wit/proxy.wit
+++ b/wit/proxy.wit
@@ -1,4 +1,4 @@
-package wasi:http@0.2.3;
+package wasi:http@0.2.4;
/// The `wasi:http/imports` world imports all the APIs for HTTP proxies.
/// It is intended to be `include`d in other worlds.
@@ -6,25 +6,25 @@ package wasi:http@0.2.3;
world imports {
/// HTTP proxies have access to time and randomness.
@since(version = 0.2.0)
- import wasi:clocks/monotonic-clock@0.2.3;
+ import wasi:clocks/monotonic-clock@0.2.4;
@since(version = 0.2.0)
- import wasi:clocks/wall-clock@0.2.3;
+ import wasi:clocks/wall-clock@0.2.4;
@since(version = 0.2.0)
- import wasi:random/random@0.2.3;
+ import wasi:random/random@0.2.4;
/// Proxies have standard output and error streams which are expected to
/// terminate in a developer-facing console provided by the host.
@since(version = 0.2.0)
- import wasi:cli/stdout@0.2.3;
+ import wasi:cli/stdout@0.2.4;
@since(version = 0.2.0)
- import wasi:cli/stderr@0.2.3;
+ import wasi:cli/stderr@0.2.4;
/// 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.
@since(version = 0.2.0)
- import wasi:cli/stdin@0.2.3;
+ import wasi:cli/stdin@0.2.4;
/// This is the default handler to use when user code simply wants to make an
/// HTTP request (e.g., via `fetch()`).
diff --git a/wit/types.wit b/wit/types.wit
index 9c0ce8b..254a1bb 100644
--- a/wit/types.wit
+++ b/wit/types.wit
@@ -4,13 +4,13 @@
@since(version = 0.2.0)
interface types {
@since(version = 0.2.0)
- use wasi:clocks/monotonic-clock@0.2.3.{duration};
+ use wasi:clocks/monotonic-clock@0.2.4.{duration};
@since(version = 0.2.0)
- use wasi:io/streams@0.2.3.{input-stream, output-stream};
+ use wasi:io/streams@0.2.4.{input-stream, output-stream};
@since(version = 0.2.0)
- use wasi:io/error@0.2.3.{error as io-error};
+ use wasi:io/error@0.2.4.{error as io-error};
@since(version = 0.2.0)
- use wasi:io/poll@0.2.3.{pollable};
+ use wasi:io/poll@0.2.4.{pollable};
/// This type corresponds to HTTP standard Methods.
@since(version = 0.2.0)