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(OutstationServerin bindings). Rename creation methods.ClassZeroConfig::octet_strings->ClassZeroConfig::octet_string.
- Move response timeouts from
MasterChannelConfigtoAssociationConfig. See #167. - Add
HeaderInfo::is_eventandHeaderInfo::has_flagsfields. See #143. - Add
AssociationInformationto 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 (
0x07and0x08) for read requests. See #179. - Re-order TLS channel arguments order.
EventBufferConfigis 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 aMaybeAsynctype to allow for asynchronous operations. See #166 and #183.- Remove
NullReadHandler,DefaultAssociationHandler,DefaultOutstationApplicationandDefaultOutstationInformationimpls. 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.Byteswas completely removed.ReadHandler::handle_octet_string()gets a&'a [u8]instead.- Rename
OctetStringError->OctetStringLengthError. OutstationConfigtimeouts 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.tomlfile 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->SerialSettingsControl->ControlFieldFreezeResult::Success->FreezeResult::OkWriteTimeResult::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_staticCMake target. See #128.
0.9.0
- 🎉 First official release