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
12 changes: 2 additions & 10 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,12 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: 1.84.1
components: rustfmt
target: wasm32-unknown-unknown,wasm32-wasip2
- name: Install cargo binstall
uses: cargo-bins/cargo-binstall@main
- name: Install cargo component
run: cargo binstall --force cargo-component
- name: Install wkg
run: cargo binstall --force wkg
- name: Install cargo-component
run: cargo binstall --force cargo-component
- name: Install wasm-tools
run: cargo binstall --force wasm-tools
- name: Fetch wit
Expand Down Expand Up @@ -61,10 +57,6 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: 1.84.1
components: rustfmt
target: wasm32-unknown-unknown
- name: Install cargo binstall
uses: cargo-bins/cargo-binstall@main
- name: Install wkg
Expand Down
5 changes: 2 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ components: $(foreach component,$(COMPONENTS),lib/$(component).wasm $(foreach co
define BUILD_COMPONENT

lib/$1.wasm: Cargo.toml Cargo.lock wit/deps $(shell find components/$1 -type f)
@$(eval TARGET := $(if $(findstring $1,keyvalue-to-filesystem),wasm32-wasip2,wasm32-unknown-unknown))
cargo component build -p $1 --target $(TARGET) --release
cp target/$(TARGET)/release/$(subst -,_,$1).wasm lib/$1.wasm
cargo component build -p $1 --target wasm32-unknown-unknown --release
cp target/wasm32-unknown-unknown/release/$(subst -,_,$1).wasm lib/$1.wasm
cp components/$1/README.md lib/$1.wasm.md

lib/$1.debug.wasm: Cargo.toml Cargo.lock wit/deps $(shell find components/$1 -type f)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ A collection of utility components that remix wasi:cli types and interfaces.
## Build

Prereqs:
- a rust toolchain with a recent nightly (`rustup toolchain install nightly`)
- a rust toolchain
- [`cargo component`](https://github.com/bytecodealliance/cargo-component)
- [`wkg`](https://github.com/bytecodealliance/wasm-pkg-tools)

Expand Down
3 changes: 3 additions & 0 deletions rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[toolchain]
channel = "1.91"
targets = [ "wasm32-unknown-unknown", "wasm32-wasip2" ]
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,4 +1,4 @@
package wasi:io@0.2.3;
package wasi:io@0.2.6;

interface error {
resource error {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package wasi:random@0.2.3;
package wasi:random@0.2.6;

interface random {
get-random-bytes: func(len: u64) -> list<u8>;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package wasi:sockets@0.2.3;
package wasi:sockets@0.2.6;

interface network {
use wasi:io/error@0.2.6.{error};

resource network;

enum error-code {
Expand Down Expand Up @@ -57,6 +59,8 @@ interface network {
ipv4(ipv4-socket-address),
ipv6(ipv6-socket-address),
}

network-error-code: func(err: borrow<error>) -> option<error-code>;
}

interface instance-network {
Expand All @@ -66,7 +70,7 @@ interface instance-network {
}

interface udp {
use wasi:io/poll@0.2.3.{pollable};
use wasi:io/poll@0.2.6.{pollable};
use network.{network, error-code, ip-socket-address, ip-address-family};

record incoming-datagram {
Expand Down Expand Up @@ -115,9 +119,9 @@ interface udp-create-socket {
}

interface tcp {
use wasi:io/streams@0.2.3.{input-stream, output-stream};
use wasi:io/poll@0.2.3.{pollable};
use wasi:clocks/monotonic-clock@0.2.3.{duration};
use wasi:io/streams@0.2.6.{input-stream, output-stream};
use wasi:io/poll@0.2.6.{pollable};
use wasi:clocks/monotonic-clock@0.2.6.{duration};
use network.{network, error-code, ip-socket-address, ip-address-family};

enum shutdown-type {
Expand Down Expand Up @@ -166,7 +170,7 @@ interface tcp-create-socket {
}

interface ip-name-lookup {
use wasi:io/poll@0.2.3.{pollable};
use wasi:io/poll@0.2.6.{pollable};
use network.{network, error-code, ip-address};

resource resolve-address-stream {
Expand Down
8 changes: 4 additions & 4 deletions wit/worlds.wit
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package componentized:cli;

world stderr-to-stdout {
import wasi:cli/stdout@0.2.3;
export wasi:cli/stderr@0.2.3;
import wasi:cli/stdout@0.2.6;
export wasi:cli/stderr@0.2.6;
}

world stdout-to-stderr {
import wasi:cli/stderr@0.2.3;
export wasi:cli/stdout@0.2.3;
import wasi:cli/stderr@0.2.6;
export wasi:cli/stdout@0.2.6;
}
6 changes: 3 additions & 3 deletions wkg.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ name = "wasi:cli"
registry = "wasi.dev"

[[packages.versions]]
requirement = "=0.2.3"
version = "0.2.3"
digest = "sha256:8f97d837e1f856a225422869d5c34752204d1befb5a04d0cd80541aec17a20c1"
requirement = "=0.2.6"
version = "0.2.6"
digest = "sha256:fdbe84136b3dd46d94305ef37f24f3cf04a70cc2026dca2592ac2ec0c9de15c7"