Skip to content

Build from source

Use this path to work on the repository or test an unreleased change. For application integration against the release, start with Build and integrate.

Build from source when you need a change that is not released yet, or a feature set the release builds leave out. 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

To build the release itself, clone with --branch v0.15.0 instead. A dev checkout may already hold changes past the release while its version still reads 0.15.0, so record the commit.

The checked-in development toolchain is Rust 1.99.0. The workspace uses edition 2024 and requires Rust 1.95, as the v0.15.0 release does. The minimum increases only in minor releases, to a stable Rust release at least about six months old. 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. The terminal UI (tui) is a default feature (--no-default-features leaves it out), and MS/TP needs --features serial. The MCP server (bacnet mcp serve) needs --features mcp, which includes the terminal UI. A CLI version string alone cannot distinguish a source build from the release.

A Rust project can depend on the dev branch instead of a release, for example bacnet-client = { git = "https://github.com/jscott3201/rusty-bacnet", branch = "dev" }. Its Cargo.lock records the commit.

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; the published wheels are described on the installation page. Use the installed extension and interpreter you intend to run when validating Python behavior. Native compilation alone does not exercise the Python API.

Read the repository’s agent and contributor guidance, architecture map and CI and merge evidence before proposing a change. These links follow the development branch; release API references remain pinned to the release.

Improve the documentation · Application integration

Release v0.15.0 ·Build and integrate. Pre-1.0 APIs; partial conformance.Support & limitations