Repository navigation
v0.2.0 — two typed directions
A Dapr application is now pure typed domain logic — it never touches HTTP or gRPC in either direction. The provider components translate the wire on both sides.
Highlights
- Typed inbound (Dapr → app). Seven
*-callbackinterfaces (named after Dapr'sAppCallback): service invocation, pub/sub, input bindings, jobs, actor hosting, configuration updates, health. Previously only outbound was typed. - App-side SDK
dapr-app. Implement theDaprApptrait (every callback defaulted — override only what you use) andexport_app!; call Dapr through re-exported typed interfaces. - Providers split per direction × transport (4 components).
wasi-http-outbound/wasi-http-inbound/wasi-grpc-outbound/wasi-grpc-inbound. Splitting outbound from inbound keeps the composition graphoutbound → app → inboundacyclic (a single bidirectional provider would form an illegalapp ↔ providerinstantiation cycle). The two directions are independent, so transports mix (e.g. gRPC out + HTTP in). wasi-grpc-inboundhand-rolls Dapr'sAppCallbackgRPC server overwasi:http/incoming-handler(verified over Spin h2c withgrpcurl).- Outbound additions:
configuration.subscribe/unsubscribe. compose.wac— awac composerecipe for the acyclic three-component graph.
Published modules (ghcr.io/sideeffffect)
dapr-wasm-components-interface, -wasi-http-outbound, -wasi-http-inbound, -wasi-grpc-outbound, -wasi-grpc-inbound — tag 0.2.0.
Notes
Follow-ups (incl. an automated daprd --app-protocol grpc E2E) are tracked in ROADMAP.md. Breaking vs 0.1.0: the WIT worlds are now app / dapr-outbound / dapr-inbound (the dapr-client / dapr-server worlds were removed).