finds.dev← search

// the find

alttch/rmodbus

★ 169 · Rust · Apache-2.0 · updated Sep 2025

Modbus framework for Rust

rmodbus is a Modbus codec and context manager for Rust — it handles frame parsing and register storage but intentionally provides no transport layer. You wire it to whatever socket or serial port you're using. Built for industrial automation, it ships as part of the EVA ICS and RoboPLC stacks.

no_std support is genuine and well-thought-out, with multiple vector backends (std Vec, heapless, fixedvec) so it works on bare-metal MCUs without heap. Custom-sized storage via const generics means you're not paying 60KB for a device that only needs 100 registers. Fuzz testing on the frame parser is exactly right for protocol code — malformed frames from flaky hardware are a real problem. The transport-agnostic design is a feature, not laziness: it means the same codec works over TCP, RTU serial, ASCII, and UDP without a protocol abstraction layer in the way.

The README has a literal `<todo: insert version number here>` in the section on RegisterRepresentable — that's shipped documentation, not a draft. The client-side read loop (read 6 bytes, then read the rest) is exposed boilerplate that callers will copy-paste and get wrong when the socket returns partial reads; that should be in the library. No async-native path — the README points you to a third-party crate (RoboPLC) for anything beyond raw frame processing, which fragments the ecosystem for a crate at v0.9. Star count (169) is low for something claiming production use at 1M+ sensor deployments, which raises the question of whether the industrial users are on a private fork.

View on GitHub → Homepage ↗

// 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 →