Skip to content

v0.7.0 — authority-split interfaces, subscription resource, typed workflow status

Choose a tag to compare

@sideeffffect sideeffffect released this 12 Oct 17:06
9df43ce

Interfaces split by authority, configuration subscriptions as a resource, and typed workflow status. This release has breaking changes to the dapr-wasm-components:interfaces WIT package since v0.6.0. Motivation: dapr4s Wasm components proposal.

Breaking

  • Read interfaces split out (W1). Five interfaces now have a read-only twin that owns the shared types:
    • state-read: get, get-bulk, query. state: save, delete, execute-transaction.
    • secrets-read: get-secret. secrets: get-bulk-secret.
    • configuration-read: get. configuration: subscribe.
    • jobs-read: get. jobs: schedule, delete.
    • workflow-read: get. workflow: start, terminate, raise-event, pause, resume, purge.
    • Update imports and use paths. dapr-app re-exports both halves.
  • Configuration subscription is a resource (W2). subscribe returns a subscription handle with id(). Dropping it unsubscribes. The free unsubscribe function and unsubscribe-error are gone.
  • Typed workflow-instance (W3). New fields: workflow-name, runtime-status (enum), input, output, failure. These keys are removed from properties.
  • No workflow-component parameter (W4). Providers always use dapr. workflow-error.component-not-found now means "workflow engine not available".

New

  • The import list is the authority list. A component imports only the interfaces and functions it calls. An app that only reads state imports state-read with only get. CI checks this in e2e/tests/authority.rs.
    • Every app also imports state-read and configuration-read with no functions, because the callback exports use their types. These give no authority.
  • runtime-status enum. It has daprd's 8 statuses, including canceled, plus unknown. Matching ignores case. For unknown, the raw string stays in properties["dapr.workflow.runtime_status"].

Fixes and notes

  • If unsubscribe fails when a subscription is dropped, the HTTP provider logs it and does not trap.
  • The gRPC provider still does not support subscribe.
  • The subscription resource and typed workflow get are tested against the mock sidecar only. Real-Dapr coverage is on the ROADMAP.