Skip to content

1.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 29 Oct 05:50
235533a
  • 🚨 Security advisory: A specially crafted request can panic the outstation, stopping it until the application recreates it. Every earlier release is affected. See GHSA-9f93-5j9q-v692.
  • πŸ›‘οΈ Hardened against panics. Lints deny common sources of panics throughout the core library, and CI now proves that important parts of it can't panic for any input.
  • πŸ”” License update. The license now prohibits using the library to build or test other implementations of the protocol, including by mining it with AI tools or using it as an oracle, and reserves AI training. See #712.
  • πŸ”” The minimum supported Rust version is now 1.88. See #502.
  • πŸ”” Binary output status points default to g10v2 instead of g10v1, in Rust and in the bindings. See #853.
  • πŸ”” RetryStrategy raises a delay of zero to 1 ms and swaps a reversed minimum and maximum. See #570.
  • πŸ”” Defining a string device attribute longer than 255 bytes fails with the new AttrDefError::BadValue. See #567.
  • πŸ”” Deprecate WriteError::IinError, TimeSyncError::IinError, TimeSyncError::SystemTimeNotUnix, CommandResponseError::Request and ObjectParseError::UnsupportedQualifierCode, which are never returned. They will be removed in 2.0. See #556.
  • πŸ”” Tasks whose response objects can't be parsed fail with MalformedResponse. See #696 and #702.
  • πŸ”” Outstations answer a read of a point type that has no points with IIN2.1, and a range read that includes missing points with IIN2.2 while still returning the points that exist, as the standard requires. Masters that poll types or ranges the outstation doesn't have will see these errors where they saw none before. See #487.
  • πŸ”” Outstations report a counter, frozen counter or analog input that isn't simply ONLINE in a variation with flags, even when the master asked for one without, so a response can mix the two. See #484.
  • πŸ”” Outstations report events recorded without time in variations without time, and binary and double-bit input events recorded while unsynchronized with relative time. See #744 and #646.
  • πŸ”” Analog values: adding a point with a NaN or negative deadband fails, and NaN values, deadbands and commands are handled as the standard requires. See #551, #649, #650, #651 and #652.
  • πŸ”” The master processes responses that set IIN2 error bits instead of discarding them, and no longer confirms unsolicited responses it can't parse. See #536, #554 and #598.
  • πŸ”” The master confirms the response to any request when the outstation asks for a confirmation. See #689.
  • πŸ”” The master's automatic time sync runs before the integrity scan at startup and after a restart. See #708.
  • πŸ”” File and directory reads that end early send one CLOSE, and fail with the cause. See #621 and #626.
  • πŸ”” Expected traffic, such as frames for other outstations and repeated segments, is logged at debug instead of warn. See #685.
  • πŸ”” Many small conformance corrections. See #508, #522, #541, #633, #529, #525, #560, #561, #691, #625, #573, #749, #501, #530 and #648.
  • πŸ›‘οΈ Time out TLS handshakes after 5 seconds, in the outstation server and in TLS clients, so a peer that stalls a handshake can't hold up other connections or retries. See #532 and #533.
  • πŸ›‘οΈ Keep TCP servers accepting connections after an accept error, such as running out of file descriptors. See #638.
  • πŸ›‘οΈ Keep UDP masters and outstations running after unexpected or undeliverable datagrams. See #544, #637, #699, #510 and #524.
  • πŸ›‘οΈ Budget the work an outstation spends on a READ or an ASSIGN_CLASS, scaled to the size of its database, so that a request repeating headers that name every point or event is answered with IIN2.2 instead of consuming the CPU. See #855.
  • πŸ›‘οΈ Leave file AUTHENTICATE passwords and auth keys out of decode logging and Debug output. See #520.
  • πŸ›‘οΈ Each file attached to a GitHub release has a build provenance attestation that gh attestation verify checks, and the jars on Maven Central are signed with a new key, DFD7 6A43 C349 DBF5 46AB 9033 C6FB 909E 94CB 1619. See #879.
  • ⭐ The outstation processes ASSIGN_CLASS (function code 22), which subset level 3 requires, by default. OutstationApplication::support_assign_class turns it off, and new callbacks report each accepted request so the application can persist it. See #856.
  • ⭐ Add master support for DIRECT_OPERATE_NO_ACK (function code 0x06) in Rust and all bindings. See #466.
  • ⭐ The bindings' ReadHandler receives analog input deadbands (group 34). See #854.
  • ⭐ Every public type implements Debug, dnp3::link exports its error types, and master task errors gain unsupported_response, unsupported_or_bad_response and SystemTimeNotAvailable. See #519, #539, #653 and #753.
  • πŸ› Fix the outstation losing the events of an unsolicited response that was never confirmed. See #546.
  • πŸ› Fix an outstation READ including events of a class it didn't ask for. See #634.
  • πŸ› Flush TLS writes so the last frame isn't left buffered when the socket is under backpressure. Affects masters and outstations. See #462.
  • πŸ› Fix a double free in the bindings when an outstation server fails to bind, for example because the port is already in use. See #469.
  • πŸ› Other outstation fixes. See #852, #504, #513, #619, #644, #697 and #545.
  • πŸ› Master fixes in file transfer, device attributes, commands, channels shared by several outstations, automatic tasks and keep-alives, and parsing. See #547, #631, #548, #517, #728, #500, #565, #613, #636, #553, #614, #620, #552, #632, #647, #708, #791 and #593.
  • πŸ› Link and transport layer fixes. See #586, #550, #658, #635 and #645.
  • πŸ”§ The prebuilt libraries for the C/C++, .NET and Java bindings are about 20% smaller and faster. See #798 and #799.
  • πŸ”§ The prebuilt bindings use AWS-LC for TLS on every platform. The musl and 32-bit ARM Linux libraries switch from ring, which adds post-quantum key exchange and makes them 0.7 to 2.2 MB larger. See #861.
  • πŸ“– Consistent variation descriptions in logging and the bindings' docs, and a guide page on the master's automatic tasks and scheduling. See #781, #787 and #700.