Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ project follows [Semantic Versioning](https://semver.org/).
before acquiring more work. Task and cancellation authority deadlines retain
their original bounds.

## [2.5.0] - 2026-10-18

### Added

- Replay cooperative cancellation at an original completion-waiting Nexus
service call. Cooperative workers advertise support for the owned
`workflow_run` binding. Delivery requires a compatible runtime and preserves
the original cancellation request and cleanup deadline.

## [2.4.2] - 2026-10-15

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
}
},
"durable-workflow": {
"product-train": "2.4.2",
"product-train": "2.5.0",
"supported-server-versions": "2.5.0",
"worker-protocol-version": "1.20",
"control-plane-version": "2",
Expand Down
10 changes: 7 additions & 3 deletions docs/portal/build/workflows-activities.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,6 @@ fresh-construction correction is not released.

## Call a registered service

This authoring API is introduced in the PHP SDK 2.3 prerelease. Install it with
`composer require durable-workflow/sdk:^2.3@RC`.

Use `serviceOperation()` inside a workflow to invoke a Server service endpoint.
The call pauses until Server records its result. Worker restarts replay the same
call identity and result without submitting another operation.
Expand Down Expand Up @@ -110,6 +107,13 @@ Service operations currently run sequentially outside cancellation scopes and
operation groups. The worker reports `service_operations_unavailable` when the
connected runtime does not advertise the command.

With cooperative cancellation enabled, a completion-waiting call can deliver
cancellation at its original service-call boundary. The runtime must advertise
`nexus_cooperative_cancellation` for the `workflow_run` binding. The caller
keeps its original cleanup deadline while its owned target finishes cleanup.
Admission-only calls do not gain this waiting boundary, and returning an
existing workflow does not grant cancellation ownership over it.

## Fan out durable work and join it once

`all()` (also available as `parallel()`) captures one durable operation from each closure, schedules every leaf in one workflow-task completion, then suspends the Fiber until the group can join. The returned array always follows declaration order, even when the Server records completions in another order:
Expand Down
6 changes: 3 additions & 3 deletions docs/quickstart-contract.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"schema_version": 2,
"package": {
"name": "durable-workflow/sdk",
"published_version": "2.4.2",
"composer_requirement": "2.4.2",
"onboarding_requirement": "^2.4"
"published_version": "2.5.0",
"composer_requirement": "2.5.0",
"onboarding_requirement": "^2.5"
},
"runtime_targets": {
"server": {
Expand Down
Loading