Skip to content

0.2.1

Choose a tag to compare

@1amageek 1amageek released this 07 Jul 02:08

Distributed actors

  • ActorGroup scene declares a family of identically structured distributed actors, one per identity — nothing activates at boot; the factory runs when the first message addressed to an identity arrives. Declaring the scene also registers the actor invocation endpoint (POST /_swiftweb/actors/invoke).
  • WebSocketActorTransport: one socket is a symmetric, multiplexed actor message bus (calls correlated by callID, server → client push targets client-hosted observer actors). WebSocketSessionRouter routes pushes back to the right connection, and BrowserWebSocketActorChannel drives the transport over the browser's native WebSocket.
  • @ResolvableActor emits access modifiers matching the actor, so public actors conform to their public exporting protocols.

Environment

  • Scene-level .environment() flows to pages, actions, streams, and actors, with request-derived values winning over scene values.
  • App-defined ClientEnvironmentKeys auto-register in generated wasm entrypoints (public top-level conformances are discovered during package generation), so scene values reach @Environment in ClientComponents after hydration — verified end-to-end in a browser.
  • Mounted ClientComponents now receive environment provided outside the mount across re-renders (the mount's snapshot seeds the hydration session's root environment).

Host architecture

  • The runtime core is host-neutral: SwiftWebHostKit defines the lowering contracts, and the default host is SwiftWebHTTPServerHost on swift-http-server (it re-exports SwiftWebCore, matching the contract the Vapor host established). Platform adapters live in sibling packages: swift-web-cloudflare and swift-web-vapor.
  • Generated packages support SWIFTWEB_DO=1 (Durable Object wasm builds) and the client runtime builds against the FoundationEssentials-based swift-html.

Dependencies

  • Every dependency resolves behind a version requirement: async-http-client 1.35.0, swift-http-server 0.1.0, swift-http-api-proposal 0.2.0, swift-html 0.9.2. The 0.2.0 tag is superseded — it cannot be consumed with from:/exact: requirements because its HTTP stack was revision-pinned; use 0.2.1.