wasd 0.5.0
wasd: ^0.5.0 copied to clipboard
A pure Dart WebAssembly runtime for Dart and Flutter, with WASI Preview1 plus Dart VM runners for stable WASI 0.2.12 command/proxy and 0.3.0 command/service components.
0.5.0 #
- Execute stable WASI 0.3.0
wasi:cli/commandandwasi:http/servicecomponents on the native Dart VM backend. - Bind the frozen six-package, eight-world WASI 0.3.0 contract across
random,clocks,filesystem,sockets,cli, andhttp; keepwasi:clocks/timezoneexplicitly outside the release contract. - Complete the async Canonical ABI paths required by those worlds, including task/subtask scheduling, waitables, futures, streams, cancellation, backpressure, resource ownership, and scoped component types.
- Add native Preview3 filesystem, socket, outgoing HTTP, command, and HTTP service execution while keeping Node.js and browser runner support unclaimed.
- Keep explicit native TCP bind unsupported rather than exposing Dart's
already-listening
ServerSocket.bindas a false WASI bound state; unbound TCP listen and connect remain available. - Reject static absolute-path, parent-traversal, and symlink escapes from native Preview3 preopens; document that path-based Dart filesystem APIs do not prevent races with an external actor replacing path nodes concurrently.
- Record the frozen Component Model async gates separately: WASD strict decode
37/37,wasm-toolsvalidation31/31, and Wasmtime reference execution31/31. The latter two are upstream validation/reference evidence, not WASD WAST execution. - Pass
39/45frozen officialwasm32-wasip3wasi-testsuite fixtures. The six native TCP bind-dependent fixtures (sockets-tcp-bind,sockets-tcp-listen,sockets-echo,sockets-tcp-connect,sockets-tcp-receive, andsockets-tcp-send) fail with the documentednot-supportedcapability boundary; there are no skips, expected failures, or unexpected passes. - Pin the official WASI, Component Model, wasi-testsuite source, and precompiled fixture revisions used by the Preview3 release gate.
0.4.0 #
- Execute stable WASI 0.2.12
wasi:cli/commandandwasi:http/proxycomponents on the native Dart VM backend. - Implement the synchronous Canonical ABI paths required by those verified WASI 0.2.12 worlds and fixtures, including lowering/lifting, indirect values, post-return, nested component index spaces, and nominal resource ownership.
- Add scoped resource cleanup and ownership enforcement across Preview2 CLI, filesystem, I/O, sockets, and HTTP hosts.
- Align stable host semantics for stream permits and terminal errors, symlink-safe filesystem paths and byte-accurate metadata, socket and DNS lifecycles, dependency-free IDNA ToASCII names, and wire-faithful HTTP redirects, content coding, body, and trailer completion.
- Verify command execution against a Wasmtime Preview2 fixture and proxy execution against components generated from the official WASI 0.2.12 WIT.
- Keep Dart
HttpClienttrailer limitations explicit: outgoing-handler requests and incoming responses that declare trailers reportHTTP-protocol-error, while proxy response trailers remain available.
0.3.0 #
- Stabilize Preview1 command-module support with real host filesystem preopens across Dart VM and Node.js, including host-backed file, directory, symlink, and timestamp behavior.
- Record the current WebAssembly core and WASI Preview1 conformance gates in an
executable TODO under
doc/. - Add Preview2 component host/import coverage for standard
wasi:io,wasi:cli,wasi:filesystem, andwasi:socketspackages. - Add Preview3 component host/filesystem/async-profile scaffolding without claiming full Preview3 runtime coverage.
- Keep unsupported Preview2 and Preview3 operations explicit through WASI error results instead of reporting fake success.
0.2.0 #
- Restructure the package around explicit
package:wasd/wasm.dartandpackage:wasd/wasi.dartentrypoints, withpackage:wasd/wasd.dartre-exporting both surfaces. - Ship the pure Dart WebAssembly runtime split into JS and native backends with regression-tested
compile,instantiate,validate, typed exports, memory/table/global/tag wrappers, and host import support. - Replace the old WASI API with a single
WASIPreview1 surface aligned with the current 0.2 package design, covering command-style execution plus virtual filesystem basics on native and browser runtimes. - Refresh examples and docs around the new 0.2 API, including the Flutter DOOM demo under
example/doom.
0.1.0 #
- Promote the package to the first minor release with a stable public entrypoint at
package:wasd/wasd.dart. - Expand runtime coverage with regression-tested module execution, host imports, and validator behavior.
- Ship WASI Preview1 support with
WasiPreview1andWasiRunnerexecution paths. - Add component-model decoding/instantiation and canonical ABI invocation helpers.
- Improve tooling and examples, including conformance runners and the Flutter
example/doomdemo.
0.0.1 #
- Rename project to WASD (Wasm And Dart System / WebAssembly System for Dart).
- Publish initial open-source package structure on pub.dev.
- Add
lib/wasd.dartas the primary package entrypoint. - Update examples, tests, and demo app imports to
package:wasd/wasd.dart. - Keep
lib/pure_wasm_runtime.dartas a compatibility alias.