finds.dev← search

// the find

stepfunc/rodbus

★ 107 · Rust · NOASSERTION · updated May 2026

Rust implementation of Modbus with idiomatic bindings for C, C++, .NET, and Java

A Rust Modbus implementation by Step Function I/O that covers TCP, RTU, and TLS transports, with idiomatic FFI bindings generated for C, C++, .NET, and Java from a single Rust core. Aimed at SCADA/industrial developers who need a memory-safe Modbus stack they can call from legacy language environments. The async core is built on Tokio.

1. The FFI binding strategy is genuinely well-thought-out: one Rust core, one schema definition (rodbus-schema), and generated bindings per language — so protocol bugs get fixed once and all four language targets benefit. 2. TLS support on top of Modbus TCP is rare in open-source implementations and actually matters for IIoT deployments where you can't trust the network. 3. The integration tests run against real client/server pairs (integration/tests/integration_test.rs), not mocked framing, which is the right way to validate a protocol library. 4. There's a PERFORMANCE_ANALYSIS.md and a dedicated perf example, suggesting they've actually measured throughput rather than just assumed Tokio is fast enough.

1. 107 stars and a commercial backer is a tricky combination — the repo is open-source (Apache/MIT presumably) but the company's business model may mean the interesting features or support end up behind a paywall, and there's no community roadmap visible in the repo. 2. Modbus RTU over serial is notoriously hardware-dependent and the serial implementation is thin — `rodbus/src/serial/` is small and there are no serial integration tests, so RTU reliability on real hardware is unclear. 3. The .NET and Java bindings are FFI wrappers over a native shared library, which means shipping and versioning native binaries per platform — fine for a product but painful for NuGet/Maven consumers who expect pure managed packages. 4. The README at the repo root is essentially a stub that points you to an external docs site, which is a sign that the open-source repo is secondary to the commercial product; if that site goes away, the docs go with it.

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 →