{
  "id": 18653543,
  "title": "Boundary change, not version bump",
  "url": "https://urgent.news/2026/11/07/boundary-change-not-version-bump",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-07T06:25:36.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/randomchaos/boundary-change-not-version-bump-1l19"
  },
  "original_language": "en",
  "account": "The WebAssembly Subgroup ratified WASI 0.3.0, with significant changes to the WebAssembly Component Model's canonical ABI. Previously, each component had its own event loop and async runtime, limiting composition when components utilized streaming or async APIs. In 0.3, stream T, future T, and async are now first-class constructs. The host owns a single event loop, and the runtime takes care of scheduling. When a value is delivered to a future, it wakes the awaiting task, regardless of component boundaries. The writer could be the host, another component, or the same component holding the read end. Stream T and future T behave like resource types with ownership transfer on boundary crossing, unlike borrowable resource types. WASI 0.3 introduces completion-based completion-based behavior, closer to Linux io_uring and Windows IoRing than readiness-based APIs like epoll or kqueue. Components now export and import async functions directly, eliminating the previous three-step invocation process. Stream status fixes inline surface terminal errors, providing a cleaner separation between clean closes and errors. Most interface changes are mechanical, with bindings now emitting native async code in supported languages. The ABI supports both stackless and stackful coroutines, with progress on Python, JavaScript, C#, C, and Go support. The wasi:http/handler now exposes two worlds: service imports client and exports handler, while middleware enables service chaining by forwarding requests between handlers. These changes aim to simplify component composition and improve performance, with Wasmtime 46 scheduled to ship the 0.3.0 release with Component Model Async enabled by default.",
  "summary": "The WASI Subgroup voted to ratify WASI 0.3.0, and the change sitting under the version number is that stream<T> , future<T> , and async are now first-class constructs in the WebAssembly Component Model's canonical ABI. The host owns a single event loop, shared by every component it runs, and the runtime does the scheduling. That reframes what a WASI version means here. In 0.2 each component…",
  "key_points": [
    "WASI 0.3.0 ratified with major changes to WebAssembly Component Model",
    "Stream T, future T, and async now first-class constructs across components",
    "WASI 0.3 introduces completion-based behavior closer to Linux iouring"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}