Build with current development
Current development · unreleased source. These guides describe the dev checkout. Its version may still read 0.11.0; record the commit as well. For the released package and preserved tutorial, use v0.11 installation or the local lab.
Choose the owner for your application
Section titled “Choose the owner for your application”| Your task | Start here |
|---|---|
| Send requests to other devices | Standalone BACnetClient; choose a transport and use the current API reference |
| Model a device with the full server’s service set | Standalone BACnetServer and its object database |
| Request and respond as one device through one transport | Shared endpoints for B/IP, SC or MS/TP |
| Associate a NORMAL B/IP socket with a Network Port object | Network Port registration |
| Learn and answer local network-number queries | Passive Number controls; no discovery command or startup announcement required |
| Connect through an SC hub | Current SC setup, with explicit trust, credentials and durable device identity |
Shared endpoints deliberately have a narrower responder than the full server. Transport implementation, language binding and actual runtime evidence are separate choices; compare the current transport matrix before selecting a path.
Build a source checkout
Section titled “Build a source checkout”Use a separate checkout and environment from a released installation:
git clone --branch dev https://github.com/jscott3201/rusty-bacnet.gitcd rusty-bacnetgit rev-parse HEADcargo build --lockedThe checked-in development toolchain is Rust 1.97.1; the declared minimum is 1.93. cargo build uses workspace default members, so select the CLI or Python binding explicitly when needed. Native prerequisites depend on the selected features and platform.
For the CLI, from this checkout:
cargo install --path crates/bacnet-cli --locked# Use this variant when you need BACnet/SC:cargo install --path crates/bacnet-cli --locked --features sc-tlsbacnet --versionbacnet --helpThe executable is bacnet. IPv6 is enabled through CLI dependencies; pcap is a separate optional feature requiring native capture dependencies. A CLI version string alone cannot distinguish a development build from the release.
For Python, use a fresh virtual environment and build the native extension:
python3 -m venv .venv# POSIX shells; on Windows use the virtual environment's Python directly.. .venv/bin/activatepython -m pip install "maturin>=1,<2"maturin develop --manifest-path crates/rusty-bacnet/Cargo.toml --lockedpython -c "import rusty_bacnet; print(rusty_bacnet.__file__)"This is a source-build workflow, not a claim that a matching development wheel is published. Use the installed extension and interpreter you intend to run when validating Python behavior. Native compilation alone does not exercise the Python API.
Use the reference for exact signatures
Section titled “Use the reference for exact signatures”The engineering documentation map links the canonical Rust API, Python API, CLI reference and conformance evidence. These task guides summarize those contracts rather than duplicate every method.
Before 1.0, APIs may be removed or changed directly. Keep the source revision, feature selection and installed native artifact together in your integration record. Review upgrade guidance when moving an existing application.
Next steps
Section titled “Next steps”Release v0.11.0 ·Current development. Follow the scope named on each page. Pre-1.0 APIs; partial conformance.Support & limitations