wirebit is a Rust port of the C++ header-only wirebit library:
simulated hardware communication interfaces (serial, CAN, ethernet)
exchanging timed frames over shared memory, with optional bridges to
real Linux interfaces (PTY / TTY, SocketCAN, TAP, TUN).
The crate ships:
- Shared-memory transport —
ShmLink/FrameRingfor in-process and cross-process simulation. - Protocol endpoints —
CanEndpoint,SerialEndpoint,EthEndpointwith the wire-level behaviours (bus-off confinement, baud pacing, MAC filtering + link up/down). - CAN bus hub with pluggable arbiter — FIFO, CAN priority, CSMA-CD, TDMA, master-slave.
- Declarative topology builder —
Topology→Builtwithtake_can/take_serial/take_eth. - C FFI (
include/wirebit.h) and Python bindings (pyo3, abi3-py39).
nix develop # stable toolchain (default)
nix develop .#nightly # stable + miri
nix develop .#python # stable + python312 + maturin (for the
# `python` feature and wheel builds)
nix develop .#python --command maturin build --release --features python
Outputs target/wheels/wirebit-<version>-cp39-abi3-linux_x86_64.whl.