Releases

Finitomata brings compile-time checked workflows to Rust state machines

Finitomata pushes Rust state machines past enum-and-match plumbing, with compile-time checks, persistence, and supervision built into the workflow model.

Nina Kowalski··2 min read
Published
Listen to this article0:00 min
Finitomata brings compile-time checked workflows to Rust state machines
Source: OneUptime | One Complete Observability platform

Finitomata landed in the Rust Programming Language Forum’s announcements on June 22, 2026, with a pitch aimed straight at the kind of workflow code Rust teams usually end up hand-rolling. The crate’s README says it provides compile-time validated finite state machines, rich lifecycle callbacks, persistence, and actor-based supervision via joerl.

That combination makes the project feel less like a lightweight enum wrapper and more like an attempt to manage long-lived business processes in Rust itself. In the README’s framing, state changes are not just in-memory transitions, but events that need to survive restarts, retries, and changing business rules. That is the practical divide the library is trying to cross: away from brittle match arms and ad hoc async tasks, and toward workflow orchestration where transitions, side effects, and error handling stay aligned.

AI-generated illustration
AI-generated illustration

The repository’s Turnstile example makes the design concrete. It uses Mermaid FSM syntax and defines three states, locked, unlocked, and off, with callbacks named on_transition, on_enter, on_exit, and on_terminate. The example also wires up FinitomataSupervisor::<Turnstile>::new("turnstile_sup", graph).with_auto_terminate(true), which shows supervision is not an afterthought but part of the API surface. For Rust developers who have been using enum-plus-match state handling or spawning background tasks to fake lifecycle control, that is the sharpest difference: Finitomata is trying to make recovery and shutdown behavior explicit from the start.

The crate’s lineage explains the ambition. Finitomata.rs is a Rust port of the Elixir Finitomata library, and the original Elixir project has long advertised timer-driven behavior through an on_timer/2 callback for recurrent updates. The Rust version also leans on joerl, a sibling crate described as an Erlang-inspired actor model library named in tribute to Joe Armstrong. Joerl’s feature list includes supervision trees, links and monitors, bounded mailboxes, and Tokio-based async/await, which gives Finitomata a runtime story that goes beyond isolated state transitions.

That places it in a different lane from other Rust state-machine crates. rust-fsm is presented as a simple, universal framework for building state machines with a StateMachineImpl trait, while state-machines is a learning-focused port of Ruby’s state_machines gem with typestate, guards, callbacks, sync and async support, and no_std compatibility. Finitomata is aiming higher up the stack, at workflows like payments, onboarding, background jobs, and publishing pipelines where persistence and supervision matter as much as state syntax.

The project is still visibly early, with a public repository on main, but the message is already clear. Finitomata is testing whether Rust can treat workflow logic as a first-class system of record, not just a tidy set of transitions.

This article was produced by Prism’s automated news system from verified source data, official records, and press releases, then run through automated quality and moderation checks before publishing. The system is built and supervised by the people who set the standards it runs under. Read our full AI policy.

Know something we missed? Have a correction or additional information?

Submit a Tip

Never miss a story.

Get Rust Programming updates weekly. The top stories delivered to your inbox.

Free forever · Unsubscribe anytime

Discussion

More Rust Programming News