Releases: stepfunc/dnp3
Releases · stepfunc/dnp3
Release list
1.7.0-RC3
- ⭐ Add unstable, non-spawning master and outstation task APIs behind the semver-exempt
unstablefeature, allowing applications to obtain runnable tasks/futures without the library callingtokio::spawninternally. See #433. - ⭐ Add
EndpointList::into_connect_handler()andEndpointList::into_connect_handler_with_options()to build aClientConnectionHandlerfrom an endpoint list, e.g. for use withspawn_master_tcp_client_3. See #433. - 🔧 The no-spawn TCP outstation server APIs (
Server::add_outstation_no_spawnandServer::bind_no_spawn) no longer attach a tracing span to the futures they return. This is intentional so that non-spawning callers retain full control over instrumentation. Rust callers that relied on the previous automaticdnp3-outstation-tcp/tcp-serverspans should now wrap the returned future in their own span before spawning it. The prebuilt bindings (C/C++, .NET, Java) are unaffected. See #433.
1.7.0-RC2
- ⭐ Add
Database::discard_unselected_events()to drop undelivered events of selected classes on demand, e.g. from a disconnect handler. Returns per-class discard counts. Opt-in and lossy by design. See #427. - 🛡️ Update
rustls-webpkito 0.103.13 to resolve RUSTSEC-2026-0098 and RUSTSEC-2026-0099, both concerning incorrect acceptance of X.509 name constraints. Exposure is limited to TLS configurations usingCertificateMode::AuthorityBased;SelfSignedmode bypasses the affected code path. - 🔔 This update only affects the prebuilt binary distributions of the bindings (C/C++, .NET, Java). Rust consumers of the
dnp3crate pick up the patchedrustls-webpkiautomatically on rebuild.
1.7.0-RC1
- ⭐ Add outstation ConnectionManager with fine-grained connection control for TCP and TLS clients. See #381, #406.
- New Rust API:
spawn_outstation_tcp_client_2()andspawn_outstation_tls_client_2()functions withClientConnectionHandlertrait - New FFI API:
outstation_create_tcp_client_with_handler()andoutstation_create_tls_client_with_handler()functions - Provides dynamic endpoint selection, custom retry logic, connection lifecycle notifications, and DNS resolution handling
- Per-connection master address override via
ConnectionInfo::set_master_address()for failover scenarios
- New Rust API:
- ⭐ Add DirectWriteAbsTime time sync procedure for non-conformant outstations. See #403.
- Writes Group 50 Var 1 directly without delay measurement for outstations that don't properly implement IEEE-1815 time sync
- ⭐ Add optional support for parsing and transmission of zero-length octet strings via global setting. See #379.
- ⭐ Add optional support for AWS libcrypto (aws-lc-rs) as TLS backend. See #378.
- ⭐ Make OctetString constructor public in Java bindings. See #402.
- ⭐ Make HeaderInfo constructor public for mockability in tests. See #404.
- 🛡️ Add security policy and automated supply chain scanning. See #394.
- 🔧 Add quality gate to prevent releases when tests fail. See #393.
- 🔧 Automate cargo publish to crates.io in CI release process. See #407.
- 🔧 Better CLI examples with improved organization and documentation. See #375.
- 🔧 Refactor release workflow into separate idempotent jobs for improved reliability.
- 📖 Update TLS documentation to clarify empty string behavior for certificate passwords and improve grammar. See #389.
1.6.0
- ⭐ Add master station support for writing files to the outstation. See #338.
- ⭐ Add master station support for command events (groups 13 and 43). See #332.
- ⭐ Add master station support for group 102. See #335.
- ⭐ Add master and outstation support for UDP. See #353.
- ⭐ Add master station support for acting as a TCP server. See #358.
- ⭐ Add ability to update flags and timestamp without knowing the current value. See #365.
- ⭐ Obtain TCP port from server in Rust API. #331.
1.5.2
- 🐛 Fix bug where the outstation would sleep before all unsolicited data was transmitted. See #341.
1.6.0-M1
1.5.1
- 🔧 Update to oo-bindgen 0.8.6 to improve Java native library loading. See oo-bindgen #124.
- 🔔 This release only affects the Java distribution. It is equivalent to 1.5.0 for other distributions.
1.5.1-rc2
1.5.0
- ⭐ Add configuration option that allows outstation to respond to any master. See #316.
- ⭐ Add optional serde support for public config types in Rust. See #303.
- 🔧 Fix cmake download when building C/C++ examples. See #307.
- 📖 Fix FFI docs for g12v1 and remove g12v0 and g41v0. See #308
- 🐛 Fix master task scheduling CPU thrashing under certain conditions. See #312.
- 🐛 Fix bug where
AssociationInformation::task_failwas not properly being called for some tasks. See #313. - 🐛 Update rx509 to 0.2.1 to fix ASN.1 GeneralizedTime parsing. See RASN #2.
1.5.0-rc1
- ⭐ Add configuration option that allows outstation to respond to any master. See #316.
- ⭐ Add optional serde support for public config types in Rust. See #303.
- 🔧 Fix cmake download when building C/C++ examples. See #307.
- 📖 Fix FFI docs for g12v1 and remove g12v0 and g41v0. See #308
- 🐛 Fix master task scheduling CPU thrashing under certain conditions. See #312.
- 🐛 Fix bug where
AssociationInformation::task_failwas not properly being called for some tasks. See #313.