Changelog
Ruby SDK Changelog
v0.10.0 - 2026-10-08
Added
- Adds
RetryAfterError, which allows for custom retry strategies.
v0.9.0 - 2026-09-23
Added
- Added
pauseandunpausemethods to the workflows client (hatchet.workflows.pause(workflow_id, queue_ttl:)) and to workflows (workflow.pause(queue_ttl:)).queue_ttlis how long runs stay queued while the workflow is paused, in seconds or as a duration string, and the behavior (QUEUEorDROP) for cron and scheduled runs triggered while paused can optionally be set, both defaulting toQUEUE.
v0.8.1 - 2026-10-05
Fixed
- Durable tasks with many concurrent waits no longer flood the engine with worker status requests. The durable listener sent one worker status request per wait, each listing every pending wait, which was quadratic in the number of waits; each request now lists only the waits registered since the previous one.
- The periodic worker status request lists only waits that have been pending for more than two seconds, is sent every five seconds instead of every second, and is split into requests of at most 10,000 entries so it stays under the gRPC message size limit.
v0.8.0 - 2026-09-02
Added
- Added support for tenant-scoped shared concurrency strategies: declare a
ConcurrencyExpressionwithis_tenant_scoped: trueand aname, and every task declaring the same name (across workflows) consumes the same concurrency limit. Re-declaring a name updates the strategy in place, and tenant-scoped entries mix freely with workflow-scoped entries in one chain. max_runsonConcurrencyExpressionnow accepts anIntegeror aString: a string is a CEL expression over task input computing the max runs for each concurrency group, so different groups (e.g. pricing tiers) can have different limits.
v0.7.0 - 2026-08-26
Changed
- Adds support for
CANCEL_QUEUED_EXCEPT_NEWESTandCANCEL_QUEUED_EXCEPT_OLDESTconcurrency strategies.
v0.6.0 - 2026-07-23
Changed
- Adds beta
batch_taskmethods to both tasks and workflows, allowing for dynamic batching based on either time or batch size.
v0.5.0 - 2026-07-22
Added
- Adds support for terminal status-based idempotency keys, which are released when the task holding the key reaches a terminal state (either completed, cancelled, or having failed and exhausted all retries).
v0.4.0 - 2026-06-03
Added
- Adds support for defining idempotency keys on workflows and standalone tasks via an
idempotencyoption, which ensures that they're only run once in a provided time window, based on a CEL expression. Triggers that collide with an existing run raise anIdempotencyCollisionErrorcontaining the existing run's ID.
v0.3.1 - 2026-06-12
Fixed
- Fixed an issue where errors raised by child tasks spawned inside a durable parent task were not propagated back to the parent. The parent can now catch the child's error and handle it gracefully.
v0.3.0 - 2026-04-28
Added
- Durable execution primitives for Ruby workers, including
Hatchet::DurableContext. - Durable eviction support via
Hatchet::EvictionPolicyand worker-side eviction management/cache. - Engine-version gating helpers (
Hatchet::MinEngineVersion, semver parsing/comparison utilities). - Durable eviction examples for Ruby (
workerandpush_event) in both SDK and top-level examples. - New exception and type-surface additions for durable features.
Changed
- Worker runtime and runner internals to support durable replay, event waits, and eviction lifecycle behavior.
- gRPC dispatcher/admin clients and generated contracts to align with durable execution and eviction flows.
- Task/workflow definitions and worker object wiring to expose durable/eviction configuration in the public API.
- RBS signatures expanded across durable context, eviction policy/manager/cache, worker runner, task/workflow, and gRPC clients.
- Test coverage expanded with focused specs for durable context, eviction manager/cache, listener behavior, runner integration, and engine version helpers.
v0.2.0 - 2026-03-03
Added
- Adds
desired_worker_labelssupport totrigger_workflowandbulk_trigger_workflowto allow dynamically routing task runs to a specific worker at trigger time - Cron expressions now support an optional leading seconds field (6-part expressions), e.g.
30 * * * * *to trigger at 30 seconds past every minute.
v0.1.1 - 2026-02-27
Changed
- Updated internal dependencies to address security advisories.
v0.1.0 - 2025-02-15
- Initial release of the Ruby SDK for Hatchet
- Task orchestration with simple tasks, DAGs, and child/fanout workflows
- Durable execution with durable tasks, durable events, and durable sleep
- Concurrency control (limit, round-robin, cancel in progress, cancel newest, multiple keys, workflow-level)
- Rate limiting
- Event-driven workflows
- Cron and scheduled workflows
- Retries with configurable backoff strategies
- Timeout management with refresh support
- On-failure and on-success callbacks
- Streaming support
- Webhook integration
- Bulk operations (fanout, replay)
- Priority scheduling
- Sticky and affinity worker assignment
- Deduplication
- Manual slot release
- Dependency injection
- Unit testing helpers
- Logging integration
- Run detail inspection
- RBS type signatures for IDE support
- REST and gRPC client support
Last updated on October 9, 2026