finds.dev← search

// the find

slowtec/msr

★ 56 · Rust · Apache-2.0 · updated Feb 2024

A Rust library for industrial automation

A Rust crate workspace for building small industrial-automation and PLC-style control systems — PID control, finite-state machines, a real-time worker abstraction, and CSV-backed event journaling / register recording, with a Modbus TCP example. Aimed at people who want to write control loops and closed-loop automation logic in Rust instead of C/C++ or vendor PLC tooling.

It has real architecture documentation (an mdBook under doc/ with C4 diagrams) instead of just a README, which is unusual at this size and signals the author actually thought about component boundaries. The realtime worker module is split into dedicated thread/progress submodules with colocated tests, showing genuine attention to timing and determinism, which is the part of "industrial automation" that's easy to get wrong. CI runs build-and-test plus a separate cargo-audit security workflow, and pre-commit hooks are configured — better hygiene than most crates this size bother with. The plugin crates (csv-event-journal, csv-register-recorder) follow a command/query/event split, so extension points are intentional rather than bolted onto a monolithic core.

The README has no usage code at all — just a Cargo.toml snippet — so you're reading tests and the single Modbus example to learn the API. It's still 0.3.x with an explicit "breaking changes might occur" disclaimer, and there's been no push since February 2024, so it's been sitting in that unstable state for a year and a half. msr-legacy exists side by side with msr-core, which reads like an unfinished migration and leaves it unclear which crate's API you're actually supposed to build on. At 56 stars and 5 forks there's essentially no outside production use to have exercised the realtime/timing guarantees the worker module is built around.

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 →