Skip to content

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.

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.

Use a separate checkout and environment from a released installation:

Terminal window
git clone --branch dev https://github.com/jscott3201/rusty-bacnet.git
cd rusty-bacnet
git rev-parse HEAD
cargo build --locked

The 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:

Terminal window
cargo install --path crates/bacnet-cli --locked
# Use this variant when you need BACnet/SC:
cargo install --path crates/bacnet-cli --locked --features sc-tls
bacnet --version
bacnet --help

The 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:

Terminal window
python3 -m venv .venv
# POSIX shells; on Windows use the virtual environment's Python directly.
. .venv/bin/activate
python -m pip install "maturin>=1,<2"
maturin develop --manifest-path crates/rusty-bacnet/Cargo.toml --locked
python -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.

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.

Release v0.11.0 ·Current development. Follow the scope named on each page. Pre-1.0 APIs; partial conformance.Support & limitations