finds.dev← search

// the find

LeonHartley/Coerce-rs

★ 753 · Rust · updated May 2024

Actor runtime and distributed systems framework for Rust

Coerce-rs is a Rust actor framework that also tries to be a full distributed systems toolkit: type-safe actors on top of Tokio, remoting between nodes, sharding with rebalancing, event-sourced persistence, and pubsub. It's aimed at people who'd otherwise reach for Akka/Orleans but want something native to Rust and don't mind a smaller ecosystem.

The scope is genuinely wide for a single-maintainer project — sharding with automatic rebalancing and node-loss recovery, JWT-secured remoting, and a pluggable persistence layer all exist as real code, not stubs. The test suite backs this up: there are dedicated tests for cluster formation, heartbeat, sharding rebalancing, and remote security, which is more coverage of the hard distributed-systems edges than most actor libraries bother with. The sharded-chat example ships actual k8s kustomize manifests, so it's clearly been run as a real multi-node deployment at some point, not just demoed on localhost. Built-in HTTP metrics/diagnostics endpoints are a nice touch most Rust actor libraries skip entirely.

No commits since May 2024 — over two years stale — and the MySQL persistence provider the README calls 'planned' never materialized, which is a bad sign for a project with this much distributed-systems surface area to maintain. It's effectively a one-person reimplementation of what Akka/Orleans teams built with much larger headcount, so expect rough edges in less-used paths like coerce-k8s discovery or the Redis journal that nobody's had reason to exercise lately. The tracing/valuable integration requires hand-editing rustflags in .cargo/config.toml just to get actor context in logs — flagged unstable, and friction you don't hit with simpler logging setups. The protobuf network protocol has no documented story for schema evolution across a rolling upgrade, so mixed-version clusters during a deploy are on you to figure out.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →