# Durable Execution

- Page: https://shared.btbytes.com/p/durable-execution
- Date: 2024-05-10

[Open Source Durable Execution | Temporal Technologies](https://temporal.io/)

> Durable Execution is a development abstraction that preserves complete application state so that upon host or software failure it can seamlessly migrate execution to another machine.

> Temporal is an open-source implementation of Durable Execution created by the originators of the abstraction. See [examples page](https://learn.temporal.io/examples/)

---

[Restate](https://restate.dev/) a system for workflows-as-code (durable execution). With SDKs in JS | Java | Kotlin and a lightweight runtime built in Rust/Tokio. Is licensed BSL. See [HN Threat](https://news.ycombinator.com/item?id=40659160)

- Restate's runtime is a single binary, self-contained, no dependencies aside from a durable disk. It contains basically a lightweight integrated version of a durable log, workflow state machine, state storage, etc. That makes it very compact and easy to run both on a laptop and a server.
- Restate implements durable execution not only for workflows, but the core building block is durable RPC handlers (or event handler). It adds a few concepts on top of durable execution, like virtual objects (turn RPC handlers into virtual actors), durable communication, and durable promises. Here are more details: [Programming model](http://web.archive.org/web/20240612142851/https://restate.dev/programming-model).

---

[dbos-inc/dbos-transact-py: Ultra-Lightweight Durable Execution in Python](https://github.com/dbos-inc/dbos-transact-py)

> Durable execution means your program is **resilient to any failure**. If it is ever interrupted or crashes, all your workflows will automatically resume from the last completed step.


> Under the hood, DBOS Transact works by storing your program's execution state (which workflows are currently executing and which steps they've completed) in a Postgres database. So all you need to use it is a Postgres database to connect to—there's no need for a "workflow server."
