Releases: restatedev/restate
v0.7.0
Restate 0.7.0 is here 🎉
The latest Restate release comes with a ton of new useful features for you. Enjoy the release and give us feedback on discord to further improve Restate!
New features
- The Restate CLI is here. It provides a much simpler interaction with a running Restate server and advanced introspection and observability of what is happening.
- We are now offering project templates with which you can get a Restate project bootstrapped with a single command via the CLI:
restate examples typescript-hello-world-lambda
. - Stopping running invocations which are no longer of interest or stuck is now possible with invocation cancelations and invocation killings. Cancelations even allow to keep your system state consistent by running compensations.
- Deploying Restate to the cloud with one click via
restate-cdk
. Learn more about Restate's CDK support.
Notable improvements
- We are now offering new ways to install Restate's CLI and server:
- CLI
- via Homebrew:
brew install restatedev/tap/restate
- via npx:
npx @restatedev/restate
- via Homebrew:
- Server
- via Homebrew:
brew install restatedev/tap/restate-server
- via npx:
npx @restatedev/restate-server
- via Homebrew:
- Check out our new download page for more information.
- CLI
- We started improving Restate's performance which lead to noticeable throughput improvements.
Breaking changes
The new release contains a few breaking changes which require you to start the server with a clean storage directory.
- Extending the Restate protocol to make it support future use cases
- Fixing a problem in the timer keys which lead to wrong binary orderings
- Renaming service endpoints to service deployments which led to new REST paths
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Breaking changes
- Due to some breaking changes to the metadata storage format, we recommend existing users to start with a new cluster and wipe all existing state.
- We have restricted the service key format for keyed services to only
string
keys. If you have any feedback about this change, let us know here #955
New features
- We now have a Java SDK to build Restate applications: https://docs.restate.dev/quickstart
- We now expose the table of the enqueued invocations in the sql introspection interface as
sys_inbox
- We're publishing the container images on https://hub.docker.com/r/restatedev/restate
Notable changes
- Now the Admin API expose more metadata about service endpoints.
- Improved DELETE /invocations/:id command
We've also included some bug fixes and small improvements.
Enjoy!
Full Changelog: v0.5.1...v0.6.0
v0.5.1
Fixes
- Enable the strictest sync mode for RocksDB's WAL.
- Extend sys_status and sys_invocation_state with endpoint_id to make tables more expressive
Full Changelog: v0.5.0...v0.5.1
v0.5.0
Breaking changes
- Due to some breaking changes to the metadata storage format, we recommend existing users to start with a new cluster and wipe all existing state.
New features
- You can now invoke Lambdas directly by providing an ARN during discovery; an API gateway is no longer needed. See https://docs.restate.dev/services/deployment/lambda to see how!
We've also included some bug fixes and small improvements.
Enjoy!
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Breaking changes
- Due to some breaking changes to the storage format, we recommend existing users to start with a new cluster and wipe all existing state.
- We've updated the default ports allocation, to reduce potential conflicts with other commonly used tools. See https://docs.restate.dev/restate/deployment.
- We've simplified the definition of Protobuf service contracts for event handlers. See https://docs.restate.dev/services/sdk/kafka.
- Introduced non-backward compatible change in the built-in service
dev.restate.Ingress
. See https://github.com/restatedev/proto/blob/main/dev/restate/services.proto. - This release works only with sdk-typescript >= 0.3.1
New features
- You can now provide an idempotency key when sending requests to Restate from an external client. This allows to implement end-to-end exactly once processing of requests. See https://docs.restate.dev/services/invocation#invoke-a-service-idempotently.
- The introspection SQL interface has been expanded with two new tables:
sys_invocation_state
to inspect the status of in-flight invocations.sys_journal
to inspect the invocation journal.
- External ingress invocation traces now have client socket info
Among the other changes, we've also included a plethora of bug fixes and small improvements.
Enjoy!
Full Changelog: v0.3.0...v0.4.0
v0.3.0
Breaking changes
Due to some breaking changes to the storage format, we recommend existing users to start with a new cluster and wipe all existing state.
Changes
- New feature: Add Kafka ingress, to read events from Kafka directly in restate services. Check the documentation https://docs.restate.dev/services/sdk/kafka for more details.
- New feature: Now you can use the function
key_to_json
in SQL queries to convert the service key to json - Improvements: Now
GET /service
in the Admin API returns more metadata about service methods - Various fixes
Full changelog: v0.2.1...v0.3.0
v0.2.1
What's Changed
- Rename Meta REST Operational API into Admin API by @tillrohrmann in #736
- Make Storage::Transaction a GAT by @tillrohrmann in #738
- Presize serialization buffers of storage types by @tillrohrmann in #739
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Breaking changes
Due to the amount of breaking changes, we recommend existing users to start with a new cluster and wipe all existing state. This release is compatible only with SDK versions starting from 0.2.0 (using the new versioning scheme).
Changes
- Breaking: Invocation identifiers and Awakeable identifiers now have a new string format, they are shorter and bounded (both around ~30 characters). You can safely include these identifiers in path parameters, or in headers, without any risk to hit size limits. Awakeable identifiers created with a previous release are not compatible with this release.
- New feature: Implement the
dev.restate.Awakeables
built-in service, to complete awakeables directly from the ingress - New feature: Added support to reject Awakeables, that is completing an awakeable with a failure value.
- New feature: Added
GET /endpoints
in the admin api to retrieve the list of registered endpoints - Breaking: Modified the
DELETE /invocations
in the admin api to accept the id of the invocation as path parameter:DELETE /invocations/:invocation_id
- Breaking: Modified the
PartitionKey
type tou64
- Various fixes
Full Changelog: v0.1.7...v0.2.0
v0.1.7
Overview
- Adding support for querying the storage via SQL. This allows getting access to the state and status table of the system which helps understanding and debugging the system.
What's Changed
- Fix using the otlp exporter and the jager file exporter at the same time by @slinkydeveloper in #631
- Make sure we don't generate spans with negative duration. by @slinkydeveloper in #634
- Provide a knob to configure HTTP/2 keep-alive by @slinkydeveloper in #632
- Fix keepalive documentation by @slinkydeveloper in #635
- Ignore multiple completions for awakeables by @slinkydeveloper in #637
- Remove GitHub actions for building and releasing CLI by @tillrohrmann in #645
- Support gRPC health check service by @slinkydeveloper in #644
- Add /health endpoint in the META REST API by @slinkydeveloper in #647
- Use docs subdomain by @jackkleeman in #650
- Remove "unstable" feature from h2 dependency in restate_invoker_impl package by @tillrohrmann in #651
- ingress_service_invocation -> ingress_invoke $method by @jackkleeman in #656
- Rename timeouts and set abort_timeout to 60s by default by @tillrohrmann in #659
- Rename docker workflow input artifactInsteadOfPush to uploadImageAsTarball by @tillrohrmann in #660
- Don't store requires_ack = true by @slinkydeveloper in #649
- Put Restate under Business Source License by @tillrohrmann in #657
- Remove the Ok variant from UserErrorCode by @tillrohrmann in #662
- Update release documentation by @tillrohrmann in #663
Full Changelog: v0.1.6...v0.1.7
v0.1.6
Overview
- Tracing improvements. Now the traces will look more natural, as if they're published by services. Look at the documentation to configure observability.
- (Breaking) Upgrade and versioning of services. Registering services now works differently, and supports different service revisions. For more details, look at the documentation.
What's Changed
- Extract interface for worker apis and move it to separate package by @slinkydeveloper in #531
- Correct logging of invoking invocations when popping the inbox by @tillrohrmann in #539
- Move
ConversionError
fromrestate_common
torestate_storage_api
by @slinkydeveloper in #532 - Replace
GenericError
withanyhow::Error
by @slinkydeveloper in #533 - Merge
restate_journal
intorestate_common
by @slinkydeveloper in #541 - Merge
restate_service_metadata
types intorestate_common
. by @slinkydeveloper in #545 - Use opentelemetry-otlp for exporting spans to OTLP compatible systems by @tillrohrmann in #553
- Invoker concurrency quota by @slinkydeveloper in #548
- Set force-frame-pointers=yes on arm machines on arm linux by @jackkleeman in #557
- Fix arm64 rustflags by @jackkleeman in #568
- Move storage related types from common to storage_api by @slinkydeveloper in #536
- Refactor
common
by @slinkydeveloper in #551 - Introduce restate_benchmarks package with sequential and parallel throughput benchmark by @tillrohrmann in #561
- Schema registry design proposal by @slinkydeveloper in #511
- Expand the rust-guidelines.md with the new conventions by @slinkydeveloper in #556
- Remove unnecessary format! calls in Consensus module by @tillrohrmann in #571
- Integrate the new schema registry by @slinkydeveloper in #559
- Remove
EndpointMetadata.delivery_options.retry_policy
by @slinkydeveloper in #570 - Introduce ServiceRevision, and support registering new endpoints by @slinkydeveloper in #563
- Introduce META REST endpoint to get a service endpoint by id by @slinkydeveloper in #565
- Remove /services/discover, rename /endpoints/discover to /endpoints by @slinkydeveloper in #572
- Update README.md by @slinkydeveloper in #579
- Update the Meta Endpoint to discover services in the benchmarks by @slinkydeveloper in #578
- Record the endpoint id used when invoking a service, and restore it when replaying. by @slinkydeveloper in #573
- META endpoints API ergonomics/inconsistency fixes by @slinkydeveloper in #584
- Always push main docker images by @jackkleeman in #587
- Revert "Always push main docker images" by @jackkleeman in #588
- Always push main docker images by @jackkleeman in #589
- Make it possible to build debug docker images by @jackkleeman in #590
- Ensure debug field is set on chef cook too by @jackkleeman in #591
- Port bincode to 2.0 in restate_queue by @slinkydeveloper in #576
- Set force = true by default on /endpoints registration by @slinkydeveloper in #598
- Introduce explicit TracingGuard for shutting Tracing down from outside the Tokio thread by @tillrohrmann in #593
- Add support for configuring Restate in benchmarks via env variables by @tillrohrmann in #597
- Tracing improvements by @jackkleeman in #558
- Profiling benchmarks on Linux by @slinkydeveloper in #610
- Public and private services by @slinkydeveloper in #585
- Avoid the alloc/dealloc cycle in SegmentQueue by @slinkydeveloper in #613
- Add service instance type check when updating a service by @slinkydeveloper in #608
- Fix span relation assert by @jackkleeman in #616
- Remove service endpoints by @slinkydeveloper in #594
- Remove the ServiceInvocationFactory interface by @slinkydeveloper in #617
- Update to 0.1.6 by @slinkydeveloper in #618
Full Changelog: v0.1.5...v0.1.6