From 8777909de3d1cb5cdaee16f98d76c572d4b88b16 Mon Sep 17 00:00:00 2001 From: Bailey Hayes Date: Thu, 3 Oct 2024 15:54:18 -0400 Subject: [PATCH] release(wasip2): v0.2.2 (#621) Signed-off-by: Bailey Hayes --- wasip2/README.md | 14 +++--- wasip2/cli/command.wit | 2 +- wasip2/cli/imports.wit | 12 ++--- wasip2/cli/stdio.wit | 6 +-- wasip2/cli/wit.lock | 3 -- wasip2/cli/wit.toml | 8 --- wasip2/clocks/monotonic-clock.wit | 4 +- wasip2/clocks/timezone.wit | 2 +- wasip2/clocks/wall-clock.wit | 2 +- wasip2/clocks/wit.lock | 3 -- wasip2/clocks/wit.toml | 4 -- wasip2/clocks/world.wit | 2 +- wasip2/filesystem/preopens.wit | 2 +- wasip2/filesystem/types.wit | 12 ++--- wasip2/filesystem/wit.lock | 3 -- wasip2/filesystem/wit.toml | 5 -- wasip2/filesystem/world.wit | 2 +- wasip2/http/proxy.wit | 14 +++--- wasip2/http/types.wit | 82 +++++++++++++++++++------------ wasip2/http/wit.lock | 3 -- wasip2/http/wit.toml | 9 ---- wasip2/io/error.wit | 2 +- wasip2/io/poll.wit | 2 +- wasip2/io/streams.wit | 6 ++- wasip2/io/wit.lock | 3 -- wasip2/io/wit.toml | 1 - wasip2/io/world.wit | 2 +- wasip2/random/insecure-seed.wit | 2 +- wasip2/random/insecure.wit | 2 +- wasip2/random/random.wit | 2 +- wasip2/random/wit.lock | 3 -- wasip2/random/wit.toml | 1 - wasip2/random/world.wit | 2 +- wasip2/sockets/ip-name-lookup.wit | 4 +- wasip2/sockets/network.wit | 16 ++++++ wasip2/sockets/tcp.wit | 8 +-- wasip2/sockets/udp.wit | 8 +-- wasip2/sockets/wit.lock | 3 -- wasip2/sockets/wit.toml | 5 -- wasip2/sockets/world.wit | 2 +- 40 files changed, 123 insertions(+), 145 deletions(-) delete mode 100644 wasip2/cli/wit.lock delete mode 100644 wasip2/cli/wit.toml delete mode 100644 wasip2/clocks/wit.lock delete mode 100644 wasip2/clocks/wit.toml delete mode 100644 wasip2/filesystem/wit.lock delete mode 100644 wasip2/filesystem/wit.toml delete mode 100644 wasip2/http/wit.lock delete mode 100644 wasip2/http/wit.toml delete mode 100644 wasip2/io/wit.lock delete mode 100644 wasip2/io/wit.toml delete mode 100644 wasip2/random/wit.lock delete mode 100644 wasip2/random/wit.toml delete mode 100644 wasip2/sockets/wit.lock delete mode 100644 wasip2/sockets/wit.toml diff --git a/wasip2/README.md b/wasip2/README.md index 30aa443c..27474467 100644 --- a/wasip2/README.md +++ b/wasip2/README.md @@ -20,13 +20,13 @@ WASI Preview 2 contains the following APIs: | Proposal | Versions | | ------------------ | -------- | -| [wasi-io] | 0.2.1 | -| [wasi-clocks] | 0.2.1 | -| [wasi-random] | 0.2.1 | -| [wasi-filesystem] | 0.2.1 | -| [wasi-sockets] | 0.2.1 | -| [wasi-cli] | 0.2.1 | -| [wasi-http] | 0.2.1 | +| [wasi-io] | 0.2.2 | +| [wasi-clocks] | 0.2.2 | +| [wasi-random] | 0.2.2 | +| [wasi-filesystem] | 0.2.2 | +| [wasi-sockets] | 0.2.2 | +| [wasi-cli] | 0.2.2 | +| [wasi-http] | 0.2.2 | [wasi-io]: https://github.com/WebAssembly/wasi-io [wasi-clocks]: https://github.com/WebAssembly/wasi-clocks diff --git a/wasip2/cli/command.wit b/wasip2/cli/command.wit index dc064a3c..cc7a352c 100644 --- a/wasip2/cli/command.wit +++ b/wasip2/cli/command.wit @@ -1,4 +1,4 @@ -package wasi:cli@0.2.1; +package wasi:cli@0.2.2; @since(version = 0.2.0) world command { diff --git a/wasip2/cli/imports.wit b/wasip2/cli/imports.wit index b8339d3b..ebd7ba17 100644 --- a/wasip2/cli/imports.wit +++ b/wasip2/cli/imports.wit @@ -1,17 +1,17 @@ -package wasi:cli@0.2.1; +package wasi:cli@0.2.2; @since(version = 0.2.0) world imports { @since(version = 0.2.0) - include wasi:clocks/imports@0.2.1; + include wasi:clocks/imports@0.2.2; @since(version = 0.2.0) - include wasi:filesystem/imports@0.2.1; + include wasi:filesystem/imports@0.2.2; @since(version = 0.2.0) - include wasi:sockets/imports@0.2.1; + include wasi:sockets/imports@0.2.2; @since(version = 0.2.0) - include wasi:random/imports@0.2.1; + include wasi:random/imports@0.2.2; @since(version = 0.2.0) - include wasi:io/imports@0.2.1; + include wasi:io/imports@0.2.2; @since(version = 0.2.0) import environment; diff --git a/wasip2/cli/stdio.wit b/wasip2/cli/stdio.wit index d1d26eb6..860313ee 100644 --- a/wasip2/cli/stdio.wit +++ b/wasip2/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.1.{input-stream}; + use wasi:io/streams@0.2.2.{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.1.{output-stream}; + use wasi:io/streams@0.2.2.{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.1.{output-stream}; + use wasi:io/streams@0.2.2.{output-stream}; @since(version = 0.2.0) get-stderr: func() -> output-stream; diff --git a/wasip2/cli/wit.lock b/wasip2/cli/wit.lock deleted file mode 100644 index b7329043..00000000 --- a/wasip2/cli/wit.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by wit. -# It is not intended for manual editing. -version = 1 diff --git a/wasip2/cli/wit.toml b/wasip2/cli/wit.toml deleted file mode 100644 index 8a57fe6b..00000000 --- a/wasip2/cli/wit.toml +++ /dev/null @@ -1,8 +0,0 @@ -version = "0.2.1" - -[dependencies] -"wasi:io" = { path = "../io" } -"wasi:clocks" = { path = "../clocks" } -"wasi:filesystem" = { path = "../filesystem" } -"wasi:sockets" = { path = "../sockets" } -"wasi:random" = { path = "../random" } diff --git a/wasip2/clocks/monotonic-clock.wit b/wasip2/clocks/monotonic-clock.wit index 3c24840c..233cace4 100644 --- a/wasip2/clocks/monotonic-clock.wit +++ b/wasip2/clocks/monotonic-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.1; +package wasi:clocks@0.2.2; /// WASI Monotonic Clock is a clock API intended to let users measure elapsed /// time. /// @@ -10,7 +10,7 @@ package wasi:clocks@0.2.1; @since(version = 0.2.0) interface monotonic-clock { @since(version = 0.2.0) - use wasi:io/poll@0.2.1.{pollable}; + use wasi:io/poll@0.2.2.{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/wasip2/clocks/timezone.wit b/wasip2/clocks/timezone.wit index 212da668..349fb570 100644 --- a/wasip2/clocks/timezone.wit +++ b/wasip2/clocks/timezone.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.1; +package wasi:clocks@0.2.2; @unstable(feature = clocks-timezone) interface timezone { diff --git a/wasip2/clocks/wall-clock.wit b/wasip2/clocks/wall-clock.wit index 6be069a3..ec05a1f1 100644 --- a/wasip2/clocks/wall-clock.wit +++ b/wasip2/clocks/wall-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.1; +package wasi:clocks@0.2.2; /// 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/wasip2/clocks/wit.lock b/wasip2/clocks/wit.lock deleted file mode 100644 index b7329043..00000000 --- a/wasip2/clocks/wit.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by wit. -# It is not intended for manual editing. -version = 1 diff --git a/wasip2/clocks/wit.toml b/wasip2/clocks/wit.toml deleted file mode 100644 index 1942e29f..00000000 --- a/wasip2/clocks/wit.toml +++ /dev/null @@ -1,4 +0,0 @@ -version = "0.2.1" - -[dependencies] -"wasi:io" = { path = "../io" } diff --git a/wasip2/clocks/world.wit b/wasip2/clocks/world.wit index 9251ac64..e36802cc 100644 --- a/wasip2/clocks/world.wit +++ b/wasip2/clocks/world.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.1; +package wasi:clocks@0.2.2; @since(version = 0.2.0) world imports { diff --git a/wasip2/filesystem/preopens.wit b/wasip2/filesystem/preopens.wit index ca2f726a..410bec1d 100644 --- a/wasip2/filesystem/preopens.wit +++ b/wasip2/filesystem/preopens.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.1; +package wasi:filesystem@0.2.2; @since(version = 0.2.0) interface preopens { diff --git a/wasip2/filesystem/types.wit b/wasip2/filesystem/types.wit index db3d9686..49e0a30b 100644 --- a/wasip2/filesystem/types.wit +++ b/wasip2/filesystem/types.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.1; +package wasi:filesystem@0.2.2; /// 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.1; @since(version = 0.2.0) interface types { @since(version = 0.2.0) - use wasi:io/streams@0.2.1.{input-stream, output-stream, error}; + use wasi:io/streams@0.2.2.{input-stream, output-stream, error}; @since(version = 0.2.0) - use wasi:clocks/wall-clock@0.2.1.{datetime}; + use wasi:clocks/wall-clock@0.2.2.{datetime}; /// File size or length of a region within a file. @since(version = 0.2.0) @@ -523,12 +523,6 @@ interface types { /// Open a file or directory. /// - /// The returned descriptor is not guaranteed to be the lowest-numbered - /// descriptor not currently open/ it is randomized to prevent applications - /// from depending on making assumptions about indexes, since this is - /// error-prone in multi-threaded contexts. The returned descriptor is - /// guaranteed to be less than 2**31. - /// /// If `flags` contains `descriptor-flags::mutate-directory`, and the base /// descriptor doesn't have `descriptor-flags::mutate-directory` set, /// `open-at` fails with `error-code::read-only`. diff --git a/wasip2/filesystem/wit.lock b/wasip2/filesystem/wit.lock deleted file mode 100644 index b7329043..00000000 --- a/wasip2/filesystem/wit.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by wit. -# It is not intended for manual editing. -version = 1 diff --git a/wasip2/filesystem/wit.toml b/wasip2/filesystem/wit.toml deleted file mode 100644 index 2ae378bc..00000000 --- a/wasip2/filesystem/wit.toml +++ /dev/null @@ -1,5 +0,0 @@ -version = "0.2.1" - -[dependencies] -"wasi:io" = { path = "../io" } -"wasi:clocks" = { path = "../clocks" } diff --git a/wasip2/filesystem/world.wit b/wasip2/filesystem/world.wit index af0146cb..8064bd64 100644 --- a/wasip2/filesystem/world.wit +++ b/wasip2/filesystem/world.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.1; +package wasi:filesystem@0.2.2; @since(version = 0.2.0) world imports { diff --git a/wasip2/http/proxy.wit b/wasip2/http/proxy.wit index 415d2ee1..fadb89a3 100644 --- a/wasip2/http/proxy.wit +++ b/wasip2/http/proxy.wit @@ -1,4 +1,4 @@ -package wasi:http@0.2.1; +package wasi:http@0.2.2; /// 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.1; world imports { /// HTTP proxies have access to time and randomness. @since(version = 0.2.0) - import wasi:clocks/monotonic-clock@0.2.1; + import wasi:clocks/monotonic-clock@0.2.2; @since(version = 0.2.0) - import wasi:clocks/wall-clock@0.2.1; + import wasi:clocks/wall-clock@0.2.2; @since(version = 0.2.0) - import wasi:random/random@0.2.1; + import wasi:random/random@0.2.2; /// 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.1; + import wasi:cli/stdout@0.2.2; @since(version = 0.2.0) - import wasi:cli/stderr@0.2.1; + import wasi:cli/stderr@0.2.2; /// 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.1; + import wasi:cli/stdin@0.2.2; /// This is the default handler to use when user code simply wants to make an /// HTTP request (e.g., via `fetch()`). diff --git a/wasip2/http/types.wit b/wasip2/http/types.wit index 3c45cd08..40ee7706 100644 --- a/wasip2/http/types.wit +++ b/wasip2/http/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.1.{duration}; + use wasi:clocks/monotonic-clock@0.2.2.{duration}; @since(version = 0.2.0) - use wasi:io/streams@0.2.1.{input-stream, output-stream}; + use wasi:io/streams@0.2.2.{input-stream, output-stream}; @since(version = 0.2.0) - use wasi:io/error@0.2.1.{error as io-error}; + use wasi:io/error@0.2.2.{error as io-error}; @since(version = 0.2.0) - use wasi:io/poll@0.2.1.{pollable}; + use wasi:io/poll@0.2.2.{pollable}; /// This type corresponds to HTTP standard Methods. @since(version = 0.2.0) @@ -124,12 +124,12 @@ interface types { /// setting or appending to a `fields` resource. @since(version = 0.2.0) variant header-error { - /// This error indicates that a `field-key` or `field-value` was + /// This error indicates that a `field-name` or `field-value` was /// syntactically invalid when used with an operation that sets headers in a /// `fields`. invalid-syntax, - /// This error indicates that a forbidden `field-key` was used when trying + /// This error indicates that a forbidden `field-name` was used when trying /// to set a header in a `fields`. forbidden, @@ -138,8 +138,23 @@ interface types { immutable, } + /// Field names are always strings. + /// + /// Field names should always be treated as case insensitive by the `fields` + /// resource for the purposes of equality checking. + @since(version = 0.2.1) + type field-name = field-key; + /// Field keys are always strings. + /// + /// Field keys should always be treated as case insensitive by the `fields` + /// resource for the purposes of equality checking. + /// + /// # Deprecation + /// + /// This type has been deprecated in favor of the `field-name` type. @since(version = 0.2.0) + @deprecated(version = 0.2.2) type field-key = string; /// Field values should always be ASCII strings. However, in @@ -171,70 +186,73 @@ interface types { /// /// The resulting `fields` is mutable. /// - /// The list represents each key-value pair in the Fields. Keys + /// The list represents each name-value pair in the Fields. Names /// which have multiple values are represented by multiple entries in this - /// list with the same key. + /// list with the same name. /// - /// The tuple is a pair of the field key, represented as a string, and + /// The tuple is a pair of the field name, represented as a string, and /// Value, represented as a list of bytes. /// - /// An error result will be returned if any `field-key` or `field-value` is + /// An error result will be returned if any `field-name` or `field-value` is /// syntactically invalid, or if a field is forbidden. @since(version = 0.2.0) from-list: static func( - entries: list> + entries: list> ) -> result; - /// Get all of the values corresponding to a key. If the key is not present + /// Get all of the values corresponding to a name. If the name is not present /// in this `fields` or is syntactically invalid, an empty list is returned. - /// However, if the key is present but empty, this is represented by a list + /// However, if the name is present but empty, this is represented by a list /// with one or more empty field-values present. @since(version = 0.2.0) - get: func(name: field-key) -> list; + get: func(name: field-name) -> list; - /// Returns `true` when the key is present in this `fields`. If the key is + /// Returns `true` when the name is present in this `fields`. If the name is /// syntactically invalid, `false` is returned. @since(version = 0.2.0) - has: func(name: field-key) -> bool; + has: func(name: field-name) -> bool; - /// Set all of the values for a key. Clears any existing values for that - /// key, if they have been set. + /// Set all of the values for a name. Clears any existing values for that + /// name, if they have been set. /// /// Fails with `header-error.immutable` if the `fields` are immutable. /// - /// Fails with `header-error.invalid-syntax` if the `field-key` or any of + /// Fails with `header-error.invalid-syntax` if the `field-name` or any of /// the `field-value`s are syntactically invalid. @since(version = 0.2.0) - set: func(name: field-key, value: list) -> result<_, header-error>; + set: func(name: field-name, value: list) -> result<_, header-error>; - /// Delete all values for a key. Does nothing if no values for the key + /// Delete all values for a name. Does nothing if no values for the name /// exist. /// /// Fails with `header-error.immutable` if the `fields` are immutable. /// - /// Fails with `header-error.invalid-syntax` if the `field-key` is + /// Fails with `header-error.invalid-syntax` if the `field-name` is /// syntactically invalid. @since(version = 0.2.0) - delete: func(name: field-key) -> result<_, header-error>; + delete: func(name: field-name) -> result<_, header-error>; - /// Append a value for a key. Does not change or delete any existing - /// values for that key. + /// Append a value for a name. Does not change or delete any existing + /// values for that name. /// /// Fails with `header-error.immutable` if the `fields` are immutable. /// - /// Fails with `header-error.invalid-syntax` if the `field-key` or + /// Fails with `header-error.invalid-syntax` if the `field-name` or /// `field-value` are syntactically invalid. @since(version = 0.2.0) - append: func(name: field-key, value: field-value) -> result<_, header-error>; + append: func(name: field-name, value: field-value) -> result<_, header-error>; - /// Retrieve the full set of keys and values in the Fields. Like the - /// constructor, the list represents each key-value pair. + /// Retrieve the full set of names and values in the Fields. Like the + /// constructor, the list represents each name-value pair. /// - /// The outer list represents each key-value pair in the Fields. Keys + /// The outer list represents each name-value pair in the Fields. Names /// which have multiple values are represented by multiple entries in this - /// list with the same key. + /// list with the same name. + /// + /// The names and values are always returned in the original casing and in + /// the order in which they will be serialized for transport. @since(version = 0.2.0) - entries: func() -> list>; + entries: func() -> list>; /// Make a deep copy of the Fields. Equivalent in behavior to calling the /// `fields` constructor on the return value of `entries`. The resulting diff --git a/wasip2/http/wit.lock b/wasip2/http/wit.lock deleted file mode 100644 index b7329043..00000000 --- a/wasip2/http/wit.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by wit. -# It is not intended for manual editing. -version = 1 diff --git a/wasip2/http/wit.toml b/wasip2/http/wit.toml deleted file mode 100644 index 27454ba6..00000000 --- a/wasip2/http/wit.toml +++ /dev/null @@ -1,9 +0,0 @@ -version = "0.2.1" - -[dependencies] -"wasi:io" = { path = "../io" } -"wasi:clocks" = { path = "../clocks" } -"wasi:cli" = { path = "../cli" } -"wasi:filesystem" = { path = "../filesystem" } -"wasi:random" = { path = "../random" } -"wasi:sockets" = { path = "../sockets" } diff --git a/wasip2/io/error.wit b/wasip2/io/error.wit index 4ea29c46..717135f8 100644 --- a/wasip2/io/error.wit +++ b/wasip2/io/error.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.1; +package wasi:io@0.2.2; @since(version = 0.2.0) interface error { diff --git a/wasip2/io/poll.wit b/wasip2/io/poll.wit index b25ac729..49c1c5ed 100644 --- a/wasip2/io/poll.wit +++ b/wasip2/io/poll.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.1; +package wasi:io@0.2.2; /// A poll API intended to let users wait for I/O events on multiple handles /// at once. diff --git a/wasip2/io/streams.wit b/wasip2/io/streams.wit index b697e24d..330f7095 100644 --- a/wasip2/io/streams.wit +++ b/wasip2/io/streams.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.1; +package wasi:io@0.2.2; /// WASI I/O is an I/O abstraction API which is currently focused on providing /// stream types. @@ -18,6 +18,9 @@ interface streams { /// The last operation (a write or flush) failed before completion. /// /// More information is available in the `error` payload. + /// + /// After this, the stream will be closed. All future operations return + /// `stream-error::closed`. last-operation-failed(error), /// The stream is closed: no more input will be accepted by the /// stream. A closed output-stream will return this error on all @@ -205,6 +208,7 @@ interface streams { /// The created `pollable` is a child resource of the `output-stream`. /// Implementations may trap if the `output-stream` is dropped before /// all derived `pollable`s created with this function are dropped. + @since(version = 0.2.0) subscribe: func() -> pollable; /// Write zeroes to a stream. diff --git a/wasip2/io/wit.lock b/wasip2/io/wit.lock deleted file mode 100644 index b7329043..00000000 --- a/wasip2/io/wit.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by wit. -# It is not intended for manual editing. -version = 1 diff --git a/wasip2/io/wit.toml b/wasip2/io/wit.toml deleted file mode 100644 index 8d16a47b..00000000 --- a/wasip2/io/wit.toml +++ /dev/null @@ -1 +0,0 @@ -version = "0.2.1" diff --git a/wasip2/io/world.wit b/wasip2/io/world.wit index 6405a4e4..f7001ccf 100644 --- a/wasip2/io/world.wit +++ b/wasip2/io/world.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.1; +package wasi:io@0.2.2; @since(version = 0.2.0) world imports { diff --git a/wasip2/random/insecure-seed.wit b/wasip2/random/insecure-seed.wit index 7e708dc5..cdea716c 100644 --- a/wasip2/random/insecure-seed.wit +++ b/wasip2/random/insecure-seed.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.1; +package wasi:random@0.2.2; /// 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/wasip2/random/insecure.wit b/wasip2/random/insecure.wit index 3cdb53df..b71e8587 100644 --- a/wasip2/random/insecure.wit +++ b/wasip2/random/insecure.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.1; +package wasi:random@0.2.2; /// The insecure interface for insecure pseudo-random numbers. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/wasip2/random/random.wit b/wasip2/random/random.wit index 2b5035d1..0c57e8c8 100644 --- a/wasip2/random/random.wit +++ b/wasip2/random/random.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.1; +package wasi:random@0.2.2; /// WASI Random is a random data API. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/wasip2/random/wit.lock b/wasip2/random/wit.lock deleted file mode 100644 index b7329043..00000000 --- a/wasip2/random/wit.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by wit. -# It is not intended for manual editing. -version = 1 diff --git a/wasip2/random/wit.toml b/wasip2/random/wit.toml deleted file mode 100644 index 8d16a47b..00000000 --- a/wasip2/random/wit.toml +++ /dev/null @@ -1 +0,0 @@ -version = "0.2.1" diff --git a/wasip2/random/world.wit b/wasip2/random/world.wit index c615e96d..16d68acf 100644 --- a/wasip2/random/world.wit +++ b/wasip2/random/world.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.1; +package wasi:random@0.2.2; @since(version = 0.2.0) world imports { diff --git a/wasip2/sockets/ip-name-lookup.wit b/wasip2/sockets/ip-name-lookup.wit index dc56f300..d3ab88ae 100644 --- a/wasip2/sockets/ip-name-lookup.wit +++ b/wasip2/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.1.{pollable}; + use wasi:io/poll@0.2.2.{pollable}; @since(version = 0.2.0) use network.{network, error-code, ip-address}; @@ -48,7 +48,7 @@ interface ip-name-lookup { /// Create a `pollable` which will resolve once the stream is ready for I/O. /// - /// Note: this function is here for WASI Preview2 only. + /// Note: this function is here for WASI 0.2 only. /// It's planned to be removed when `future` is natively supported in Preview3. @since(version = 0.2.0) subscribe: func() -> pollable; diff --git a/wasip2/sockets/network.wit b/wasip2/sockets/network.wit index 8c13b348..7f2d86a4 100644 --- a/wasip2/sockets/network.wit +++ b/wasip2/sockets/network.wit @@ -1,5 +1,8 @@ @since(version = 0.2.0) interface network { + @unstable(feature = network-error-code) + use wasi:io/error@0.2.2.{error}; + /// An opaque resource that represents access to (a subset of) the network. /// This enables context-based security for networking. /// There is no need for this to map 1:1 to a physical network interface. @@ -105,6 +108,19 @@ interface network { permanent-resolver-failure, } + /// Attempts to extract a network-related `error-code` from the stream + /// `error` provided. + /// + /// Stream operations which return `stream-error::last-operation-failed` + /// have a payload with more information about the operation that failed. + /// This payload can be passed through to this function to see if there's + /// network-related information about the error to return. + /// + /// Note that this function is fallible because not all stream-related + /// errors are network-related errors. + @unstable(feature = network-error-code) + network-error-code: func(err: borrow) -> option; + @since(version = 0.2.0) enum ip-address-family { /// Similar to `AF_INET` in POSIX. diff --git a/wasip2/sockets/tcp.wit b/wasip2/sockets/tcp.wit index bae5a29e..728822df 100644 --- a/wasip2/sockets/tcp.wit +++ b/wasip2/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.1.{input-stream, output-stream}; + use wasi:io/streams@0.2.2.{input-stream, output-stream}; @since(version = 0.2.0) - use wasi:io/poll@0.2.1.{pollable}; + use wasi:io/poll@0.2.2.{pollable}; @since(version = 0.2.0) - use wasi:clocks/monotonic-clock@0.2.1.{duration}; + use wasi:clocks/monotonic-clock@0.2.2.{duration}; @since(version = 0.2.0) use network.{network, error-code, ip-socket-address, ip-address-family}; @@ -353,7 +353,7 @@ interface tcp { /// See /// for more information. /// - /// Note: this function is here for WASI Preview2 only. + /// Note: this function is here for WASI 0.2 only. /// It's planned to be removed when `future` is natively supported in Preview3. @since(version = 0.2.0) subscribe: func() -> pollable; diff --git a/wasip2/sockets/udp.wit b/wasip2/sockets/udp.wit index b289e494..d8acb2d2 100644 --- a/wasip2/sockets/udp.wit +++ b/wasip2/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.1.{pollable}; + use wasi:io/poll@0.2.2.{pollable}; @since(version = 0.2.0) use network.{network, error-code, ip-socket-address, ip-address-family}; @@ -184,7 +184,7 @@ interface udp { /// Create a `pollable` which will resolve once the socket is ready for I/O. /// - /// Note: this function is here for WASI Preview2 only. + /// Note: this function is here for WASI 0.2 only. /// It's planned to be removed when `future` is natively supported in Preview3. @since(version = 0.2.0) subscribe: func() -> pollable; @@ -220,7 +220,7 @@ interface udp { /// Create a `pollable` which will resolve once the stream is ready to receive again. /// - /// Note: this function is here for WASI Preview2 only. + /// Note: this function is here for WASI 0.2 only. /// It's planned to be removed when `future` is natively supported in Preview3. @since(version = 0.2.0) subscribe: func() -> pollable; @@ -280,7 +280,7 @@ interface udp { /// Create a `pollable` which will resolve once the stream is ready to send again. /// - /// Note: this function is here for WASI Preview2 only. + /// Note: this function is here for WASI 0.2 only. /// It's planned to be removed when `future` is natively supported in Preview3. @since(version = 0.2.0) subscribe: func() -> pollable; diff --git a/wasip2/sockets/wit.lock b/wasip2/sockets/wit.lock deleted file mode 100644 index b7329043..00000000 --- a/wasip2/sockets/wit.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by wit. -# It is not intended for manual editing. -version = 1 diff --git a/wasip2/sockets/wit.toml b/wasip2/sockets/wit.toml deleted file mode 100644 index 2ae378bc..00000000 --- a/wasip2/sockets/wit.toml +++ /dev/null @@ -1,5 +0,0 @@ -version = "0.2.1" - -[dependencies] -"wasi:io" = { path = "../io" } -"wasi:clocks" = { path = "../clocks" } diff --git a/wasip2/sockets/world.wit b/wasip2/sockets/world.wit index a1d42670..6e349c75 100644 --- a/wasip2/sockets/world.wit +++ b/wasip2/sockets/world.wit @@ -1,4 +1,4 @@ -package wasi:sockets@0.2.1; +package wasi:sockets@0.2.2; @since(version = 0.2.0) world imports {