Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: wasm32-unknown-unknown,wasm32-wasip2
- name: Install cargo binstall
uses: cargo-bins/cargo-binstall@main
- name: Install cargo component
Expand Down Expand Up @@ -67,10 +65,6 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
components: rustfmt
target: wasm32-unknown-unknown
- name: Install cargo binstall
uses: cargo-bins/cargo-binstall@main
- name: Install wkg
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ A WASM component client for Valkey (and Redis).
## Build

Prereqs:
- a rust toolchain with `wasm32-unknown-unknown` and `wasm32-wasip2` targets (`rustup target add wasm32-unknown-unknown` and `rustup target add wasm32-wasip2`)
- a rust toolchain
- [`cargo component`](https://github.com/bytecodealliance/cargo-component)
- [`wac`](https://github.com/bytecodealliance/wac)
- [`wkg`](https://github.com/bytecodealliance/wasm-pkg-tools)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package wasi:cli@0.2.3;
package wasi:cli@0.2.6;

@since(version = 0.2.0)
interface environment {
Expand Down Expand Up @@ -28,6 +28,17 @@ interface exit {
/// Exit the current instance and any linked instances.
@since(version = 0.2.0)
exit: func(status: result);

/// Exit the current instance and any linked instances, reporting the
/// specified status code to the host.
///
/// The meaning of the code depends on the context, with 0 usually meaning
/// "success", and other values indicating various types of failure.
///
/// 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)
exit-with-code: func(status-code: u8);
}

@since(version = 0.2.0)
Expand All @@ -40,7 +51,7 @@ interface run {
@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.6.{input-stream};

@since(version = 0.2.0)
get-stdin: func() -> input-stream;
Expand All @@ -49,7 +60,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.6.{output-stream};

@since(version = 0.2.0)
get-stdout: func() -> output-stream;
Expand All @@ -58,7 +69,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.6.{output-stream};

@since(version = 0.2.0)
get-stderr: func() -> output-stream;
Expand Down Expand Up @@ -134,11 +145,11 @@ world imports {
@since(version = 0.2.0)
import exit;
@since(version = 0.2.0)
import wasi:io/error@0.2.3;
import wasi:io/error@0.2.6;
@since(version = 0.2.0)
import wasi:io/poll@0.2.3;
import wasi:io/poll@0.2.6;
@since(version = 0.2.0)
import wasi:io/streams@0.2.3;
import wasi:io/streams@0.2.6;
@since(version = 0.2.0)
import stdin;
@since(version = 0.2.0)
Expand All @@ -156,33 +167,35 @@ world imports {
@since(version = 0.2.0)
import terminal-stderr;
@since(version = 0.2.0)
import wasi:clocks/monotonic-clock@0.2.3;
import wasi:clocks/monotonic-clock@0.2.6;
@since(version = 0.2.0)
import wasi:clocks/wall-clock@0.2.3;
import wasi:clocks/wall-clock@0.2.6;
@unstable(feature = clocks-timezone)
import wasi:clocks/timezone@0.2.6;
@since(version = 0.2.0)
import wasi:filesystem/types@0.2.3;
import wasi:filesystem/types@0.2.6;
@since(version = 0.2.0)
import wasi:filesystem/preopens@0.2.3;
import wasi:filesystem/preopens@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/network@0.2.3;
import wasi:sockets/network@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/instance-network@0.2.3;
import wasi:sockets/instance-network@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/udp@0.2.3;
import wasi:sockets/udp@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/udp-create-socket@0.2.3;
import wasi:sockets/udp-create-socket@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/tcp@0.2.3;
import wasi:sockets/tcp@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/tcp-create-socket@0.2.3;
import wasi:sockets/tcp-create-socket@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/ip-name-lookup@0.2.3;
import wasi:sockets/ip-name-lookup@0.2.6;
@since(version = 0.2.0)
import wasi:random/random@0.2.3;
import wasi:random/random@0.2.6;
@since(version = 0.2.0)
import wasi:random/insecure@0.2.3;
import wasi:random/insecure@0.2.6;
@since(version = 0.2.0)
import wasi:random/insecure-seed@0.2.3;
import wasi:random/insecure-seed@0.2.6;
}
@since(version = 0.2.0)
world command {
Expand All @@ -191,11 +204,11 @@ world command {
@since(version = 0.2.0)
import exit;
@since(version = 0.2.0)
import wasi:io/error@0.2.3;
import wasi:io/error@0.2.6;
@since(version = 0.2.0)
import wasi:io/poll@0.2.3;
import wasi:io/poll@0.2.6;
@since(version = 0.2.0)
import wasi:io/streams@0.2.3;
import wasi:io/streams@0.2.6;
@since(version = 0.2.0)
import stdin;
@since(version = 0.2.0)
Expand All @@ -213,33 +226,35 @@ world command {
@since(version = 0.2.0)
import terminal-stderr;
@since(version = 0.2.0)
import wasi:clocks/monotonic-clock@0.2.3;
import wasi:clocks/monotonic-clock@0.2.6;
@since(version = 0.2.0)
import wasi:clocks/wall-clock@0.2.3;
import wasi:clocks/wall-clock@0.2.6;
@unstable(feature = clocks-timezone)
import wasi:clocks/timezone@0.2.6;
@since(version = 0.2.0)
import wasi:filesystem/types@0.2.3;
import wasi:filesystem/types@0.2.6;
@since(version = 0.2.0)
import wasi:filesystem/preopens@0.2.3;
import wasi:filesystem/preopens@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/network@0.2.3;
import wasi:sockets/network@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/instance-network@0.2.3;
import wasi:sockets/instance-network@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/udp@0.2.3;
import wasi:sockets/udp@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/udp-create-socket@0.2.3;
import wasi:sockets/udp-create-socket@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/tcp@0.2.3;
import wasi:sockets/tcp@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/tcp-create-socket@0.2.3;
import wasi:sockets/tcp-create-socket@0.2.6;
@since(version = 0.2.0)
import wasi:sockets/ip-name-lookup@0.2.3;
import wasi:sockets/ip-name-lookup@0.2.6;
@since(version = 0.2.0)
import wasi:random/random@0.2.3;
import wasi:random/random@0.2.6;
@since(version = 0.2.0)
import wasi:random/insecure@0.2.3;
import wasi:random/insecure@0.2.6;
@since(version = 0.2.0)
import wasi:random/insecure-seed@0.2.3;
import wasi:random/insecure-seed@0.2.6;

@since(version = 0.2.0)
export run;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package wasi:clocks@0.2.3;
package wasi:clocks@0.2.6;

interface monotonic-clock {
use wasi:io/poll@0.2.3.{pollable};
use wasi:io/poll@0.2.6.{pollable};

type instant = u64;

Expand All @@ -27,3 +27,17 @@ interface wall-clock {
resolution: func() -> datetime;
}

interface timezone {
use wall-clock.{datetime};

record timezone-display {
utc-offset: s32,
name: string,
in-daylight-saving-time: bool,
}

display: func(when: datetime) -> timezone-display;

utc-offset: func(when: datetime) -> s32;
}

Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package wasi:filesystem@0.2.3;
package wasi:filesystem@0.2.6;

interface types {
use wasi:io/streams@0.2.3.{input-stream, output-stream, error};
use wasi:clocks/wall-clock@0.2.3.{datetime};
use wasi:io/streams@0.2.6.{input-stream, output-stream, error};
use wasi:clocks/wall-clock@0.2.6.{datetime};

type filesize = u64;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package wasi:http@0.2.3;
package wasi:http@0.2.6;

/// 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.
@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.6.{duration};
@since(version = 0.2.0)
use wasi:io/streams@0.2.3.{input-stream, output-stream};
use wasi:io/streams@0.2.6.{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.6.{error as io-error};
@since(version = 0.2.0)
use wasi:io/poll@0.2.3.{pollable};
use wasi:io/poll@0.2.6.{pollable};

/// This type corresponds to HTTP standard Methods.
@since(version = 0.2.0)
Expand Down Expand Up @@ -59,7 +59,7 @@ interface types {
}

/// These cases are inspired by the IANA HTTP Proxy Error Types:
/// <https://www.iana.org/assignments/http-proxy-status/http-proxy-status.xhtml#table-http-proxy-error-types>
/// <https://www.iana.org/assignments/http-proxy-status/http-proxy-status.xhtml#table-http-proxy-error-types>
@since(version = 0.2.0)
variant error-code {
DNS-timeout,
Expand Down Expand Up @@ -156,7 +156,7 @@ interface types {
/// A `fields` may be mutable or immutable. A `fields` created using the
/// constructor, `from-list`, or `clone` will be mutable, but a `fields`
/// resource given by other means (including, but not limited to,
/// `incoming-request.headers`, `outgoing-request.headers`) might be be
/// `incoming-request.headers`, `outgoing-request.headers`) might be
/// immutable. In an immutable fields, the `set`, `append`, and `delete`
/// operations will fail with `header-error.immutable`.
@since(version = 0.2.0)
Expand Down Expand Up @@ -389,6 +389,18 @@ interface types {
/// other argument to `incoming-handler.handle`.
@since(version = 0.2.0)
resource response-outparam {
/// 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.
@unstable(feature = informational-outbound-responses)
send-informational: func(status: u16, headers: headers) -> result<_, error-code>;
/// Set the value of the `response-outparam` to either send a response,
/// or indicate an error.
///
Expand Down Expand Up @@ -665,23 +677,23 @@ interface outgoing-handler {
@since(version = 0.2.0)
world imports {
@since(version = 0.2.0)
import wasi:io/poll@0.2.3;
import wasi:io/poll@0.2.6;
@since(version = 0.2.0)
import wasi:clocks/monotonic-clock@0.2.3;
import wasi:clocks/monotonic-clock@0.2.6;
@since(version = 0.2.0)
import wasi:clocks/wall-clock@0.2.3;
import wasi:clocks/wall-clock@0.2.6;
@since(version = 0.2.0)
import wasi:random/random@0.2.3;
import wasi:random/random@0.2.6;
@since(version = 0.2.0)
import wasi:io/error@0.2.3;
import wasi:io/error@0.2.6;
@since(version = 0.2.0)
import wasi:io/streams@0.2.3;
import wasi:io/streams@0.2.6;
@since(version = 0.2.0)
import wasi:cli/stdout@0.2.3;
import wasi:cli/stdout@0.2.6;
@since(version = 0.2.0)
import wasi:cli/stderr@0.2.3;
import wasi:cli/stderr@0.2.6;
@since(version = 0.2.0)
import wasi:cli/stdin@0.2.3;
import wasi:cli/stdin@0.2.6;
@since(version = 0.2.0)
import types;
@since(version = 0.2.0)
Expand All @@ -694,23 +706,23 @@ world imports {
@since(version = 0.2.0)
world proxy {
@since(version = 0.2.0)
import wasi:io/poll@0.2.3;
import wasi:io/poll@0.2.6;
@since(version = 0.2.0)
import wasi:clocks/monotonic-clock@0.2.3;
import wasi:clocks/monotonic-clock@0.2.6;
@since(version = 0.2.0)
import wasi:clocks/wall-clock@0.2.3;
import wasi:clocks/wall-clock@0.2.6;
@since(version = 0.2.0)
import wasi:random/random@0.2.3;
import wasi:random/random@0.2.6;
@since(version = 0.2.0)
import wasi:io/error@0.2.3;
import wasi:io/error@0.2.6;
@since(version = 0.2.0)
import wasi:io/streams@0.2.3;
import wasi:io/streams@0.2.6;
@since(version = 0.2.0)
import wasi:cli/stdout@0.2.3;
import wasi:cli/stdout@0.2.6;
@since(version = 0.2.0)
import wasi:cli/stderr@0.2.3;
import wasi:cli/stderr@0.2.6;
@since(version = 0.2.0)
import wasi:cli/stdin@0.2.3;
import wasi:cli/stdin@0.2.6;
@since(version = 0.2.0)
import types;
@since(version = 0.2.0)
Expand Down
Loading