github restatedev/restate v1.8.0

5 hours ago

Restate v1.8.0 ๐ŸŽ‰

โœจ Release Highlights

๐Ÿšฆ VQueues On by Default

Virtual Queues, the new invocation scheduler powering Restate's flow control features, are now on for every cluster, no opt-in required. Scopes, limit keys and scoped Virtual Object targets work out of the box.

โš ๏ธ Read before upgrading: all nodes must run v1.7.3 or newer first, and each partition runs a one-time migration during which it is unavailable. See Upgrade & Rollback Guidance โ†’

๐Ÿค– A CLI Built for Scripts, CI and AI Agents

The restate CLI was revamped to be first-class for automation while staying friendly for humans:

  • A global --json flag prints one parseable JSON document; failures come as structured error objects with distinct exit codes.
  • State-changing commands share a --dry-run / --yes preview-then-apply flow.
  • New commands: invocations journal (inspect and decode journals), sql describe (table schemas), search (free-text command discovery, e.g. restate search pause a stuck invocation) and openapi (dump the Admin API contract).
restate invocations list --status backing-off --json | jq '.items[].id'
restate invocations cancel --service Checkout --dry-run

๐Ÿ“ก Service Protocol v7 by Default

Service protocol v7, opt-in since v1.7, is now negotiated by default: direct failure handling (pause or fail without retrying), lighter ctx.run() acknowledgements, structured suspension events, and end-to-end propagation of scope, limit key and idempotency key.

โ˜๏ธ Google Cloud Storage for Cluster Metadata

The object-store metadata backend now accepts gs:// paths in addition to s3://, with credentials from service account keys, Application Default Credentials, or GKE Workload Identity. Thanks to @ismymiddlename for the original contribution (#5335)!

[metadata-client]
type = "object-store"
path = "gs://<bucket>/<prefix>"

๐Ÿ†• More New Features

  • Compact schema metadata encoding โ€” opt-in experimental encoding that shrinks the metadata store footprint, letting you register more deployments ๐Ÿงช
  • OpenAPI improvements โ€” the Admin API document now works with standard client generators, and per-service OpenAPI covers all /restate/ endpoints ๐Ÿ“œ
  • Storage tuning options โ€” fixed-rate RocksDB write limiter mode, more selective partition-store filters, and a configurable VQueue metadata cache ๐Ÿงฐ
  • Paced invocation cleanup โ€” purging completed invocations no longer spikes tail latencies of other requests โฑ๏ธ

โš ๏ธ Important Breaking Changes

Service Protocol v3 and Older No Longer Supported

Invocations against deployments using service protocol v3 or older fail immediately with RT0020 instead of retrying, completing the deprecation started in v1.4.0. Check for pinned invocations before upgrading. See migration guidance โ†’

Invoker Concurrency Limit Is Now Per Node

worker.invoker.concurrent-invocations-limit now caps the whole node instead of each partition processor, and its default rose from 1000 to 24000. A value tuned per partition is likely too low now. See migration guidance โ†’

Ingress Drops Client-Supplied x-restate-* Headers

The x-restate-* header namespace is reserved for the ingress; client-supplied headers with this prefix are dropped before reaching your service, so ingress metadata can no longer be spoofed. Rename any custom metadata headers to a different prefix. See details โ†’

Also in this release: the restate CLI's human-readable output was redesigned (scripts should use --json); sys_keyed_service_status is replaced by sys_locks; the deprecated /cluster-health Admin endpoint now returns 404; the inactive runtime trace exporter was removed; and the SQL interface no longer accepts SET or transaction statements. See all breaking changes โ†’


๐Ÿ“– Full Release Notes โ†’


Install

Pull the Docker images

docker pull docker.restate.dev/restatedev/restate:1.8.0
docker pull docker.restate.dev/restatedev/restate-cli:1.8.0

Install prebuilt binaries via Homebrew

brew install restatedev/tap/restate-server
brew install restatedev/tap/restate
brew install restatedev/tap/restatectl

Install prebuilt binaries into your npm project

npm install @restatedev/restate-server@1.8.0
npm install @restatedev/restate@1.8.0
npm install @restatedev/restatectl@1.8.0

Download binary archives

File Platform Checksum
restate-server-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
restate-server-x86_64-apple-darwin.tar.xz Intel macOS checksum
restate-server-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
restate-server-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum
restate-cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
restate-cli-x86_64-apple-darwin.tar.xz Intel macOS checksum
restate-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
restate-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum
restatectl-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
restatectl-x86_64-apple-darwin.tar.xz Intel macOS checksum
restatectl-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
restatectl-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Don't miss a new restate release

NewReleases is sending notifications on new releases.