Versioning
Our library follows the semantic versioning specification. Refer to the specification for the meaning of the <major>.<minor>.<patch>
fields of the version number.
Changelog
1.1.0
- ⭐ TCP/TLS server can now filter IPv4 addresses with wildcards. See #208.
- ⭐ Rust crate and FFI/JNI libraries can now be compiled without TLS and/or serial support. See #212.
- ⭐ Add a way to spawn a serial outstation that is tolerant to the port being removed from the OS. See #215.
- ⭐ Produce enhanced third-party license reports for FFI and JNI bindings.
1.0.1
- 🐛 Fix panic when creating serial outstation #203.
- ⭐ Log when OVERFLOW or EVENT classes available IIN bits causes a poll to be scheduled. #25.
- ⭐ Build all Linux FFI/JNI artifacts using rust-cross #197.
- ⭐ Newer rust-cross version produces more portable Linux libraries (older GLIBC).
1.0.0
- Public API changes (affects both Rust and bindings):
- User-controlled DB locking in callbacks. See #189.
- Multiple renamings to more closely follow the spec. See #164 and others.
Notably the following:
- Binary -> BinaryInput
- DoubleBitBinary -> DoubleBitBinaryInput
- Analog -> AnalogInput
TcpServer
->Server
(OutstationServer
in bindings). Rename creation methods.ClassZeroConfig::octet_strings
->ClassZeroConfig::octet_string
.
- Move response timeouts from
MasterChannelConfig
toAssociationConfig
. See #167. - Add
HeaderInfo::is_event
andHeaderInfo::has_flags
fields. See #143. - Add
AssociationInformation
to carry information about tasks success and failures. See #182. - Add
AssociationHandle::read_with_handle()
to send a read request with a custom read handler. See #178. - Add support for limited count qualifiers (
0x07
and0x08
) for read requests. See #179. - Re-order TLS channel arguments order.
EventBufferConfig
is now part of theOutstationConfig
.- Rename
UpdateOptions::initialized()
->UpdateOptions::no_event()
. AddUpdateOptions::detect_event
.
- Rust-only changes:
- Add feature flag for TLS support. See #171.
ReadHandler::begin()
,ReadHandler::end()
,ControlHandler::end()
andListener<T>::update()
now returns aMaybeAsync
type to allow for asynchronous operations. See #166 and #183.- Remove
NullReadHandler
,DefaultAssociationHandler
,DefaultOutstationApplication
andDefaultOutstationInformation
impls. All their methods have default implementations, so it is very easy to recreate them. - Remove
EventClasses::to_classes()
andClasses::to_request()
. - Add
Classes::class123()
andClasses::class0()
. OutstationApplication::write_absolute_time()
andOutstationApplication::freeze_counter()
returns aRequestError
.Bytes
was completely removed.ReadHandler::handle_octet_string()
gets a&'a [u8]
instead.- Rename
OctetStringError
->OctetStringLengthError
. OutstationConfig
timeouts useTimeout
. RenameRangeError
->TimeoutRangeError
.- Rename
AssociationHandler::get_system_time()
->Associationhandler::get_current_time()
. - Rename
EndpointAddress::from()
->EndpointAddress::try_new()
Association::check_link_status()
returnsResult<(), TaskError>
.Channel::remove_association()
returnsResult<(), Shutdown>
instead ofResult<(), AssociationError>
.- The
Cargo.toml
file is now commited in the repository for reproducibility. - Move to Rust 2021 edition.
- Bindings (C, C++, .NET and Java) changes:
- Add C++ bindings. See oo-bindgen#79.
- Windows 32-bit (x86) support. See oo-bindgen#87.
- MacOS x64 builds included in the pre-built packages (but not officially supported). See #168.
- Other unsupported platforms can be built manually. Instructions were added in the docs. See oo-bindgen#83.
- Better code documentation generation in all languages.
- [C#] NuGet package now properly copies the DLL on .NET Framework using a MSBuild target files. See #147.
- [Java] Fix issue when loading the native library on a few platforms. See #177.
- [C#] and [Java] now have builder methods that can be chained. See oo-bindgen#79.
- Octet string is now a byte iterator instead of an iterator of a struct. See #162.
- Rename
WriteTimeResult::InvalidValue
->WriteTimeResult::ParameterError
. - Add
Request::all_objects()
,Request::one_byte_range()
andRequest::two_byte_range()
. - Add
ControlCode::from_op_type()
andControlCode::from_tcc_and_op_type()
. - Add
Group12Var1::from_code()
- Renamings:
SerialPortSettings
->SerialSettings
Control
->ControlField
FreezeResult::Success
->FreezeResult::Ok
WriteTimeResult::InvalidValue
->WriteTimeResult::ParameterError
- General refactoring of the code generator.
- Miscellaneous:
0.10.0
- ⭐ Add TLS support through
rustls
. See #135. - 🐛 Fix issue where C# callbacks would be executed in Rust thread. See oo-bindgen#5e95cf0f3989ad2d7b13eb8bba812e7e66805cea.
- 🔧 C# and Java now checks that the native library has the same version as the generated code. See oo-bindgen#75.
- 🐛 Fix issue where C# DLL was not properly copied when using .NET Framework. oo-bindgen#75.
0.9.2
- 🐛 Fix range scan issue where old values were reported. See #148.
- 🐛 Fix leak of tracing::Span in bindings. See #139.
- ⭐ Add Linux AArch64 support in Java and .NET. See #137.
- ⭐ Add support for serial ports on Windows. See #134.
0.9.1
- ⭐ C bindings now provides static libraries with the
dnp3_static
CMake target. See #128.
0.9.0
- 🎉 First official release