From 46005fe83dff01d29bc4140b2c655ec25cad1363 Mon Sep 17 00:00:00 2001 From: jadamcrain Date: Thu, 28 May 2026 13:42:17 -0700 Subject: [PATCH 1/4] release 1.5.0-RC2 Bump workspace version 1.5.0-RC1 -> 1.5.0-RC2 across all crates, bindings, and the guide, and refresh Cargo.lock. Collapse the 1.5.0 and 1.5.0-RC1 changelog sections into a single 1.5.0-RC2 section and add the non-spawning client task entry (#180). --- CHANGELOG.md | 5 ++--- Cargo.lock | 20 +++++++++---------- examples/client/Cargo.toml | 2 +- examples/perf/Cargo.toml | 2 +- examples/server/Cargo.toml | 2 +- ffi/bindings/c/CMakeLists.txt | 2 +- .../dotnet/examples/client/client.csproj | 2 +- .../dotnet/examples/server/server.csproj | 2 +- ffi/bindings/java/examples/pom.xml | 2 +- ffi/bindings/java/rodbus-tests/pom.xml | 2 +- ffi/rodbus-bindings/Cargo.toml | 2 +- ffi/rodbus-ffi-java/Cargo.toml | 2 +- ffi/rodbus-ffi/Cargo.toml | 2 +- ffi/rodbus-schema/Cargo.toml | 2 +- guide/sitedata.json | 2 +- integration/Cargo.toml | 2 +- rodbus-client/Cargo.toml | 2 +- rodbus-client/src/main.rs | 2 +- rodbus/Cargo.toml | 2 +- 19 files changed, 29 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7985744b..500d833a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,6 @@ -### 1.5.0 ### +### 1.5.0-RC2 ### +* :star: Add non-spawning `create_tcp_client_task_with_options()`, `create_tls_client_task_with_options()`, and `create_rtu_client_task()` that return a `ClientTask` for the caller to spawn, enabling custom task instrumentation. See [#180](https://github.com/stepfunc/rodbus/pull/180). * :lock: Update `rustls-webpki` to 0.103.13 to resolve [RUSTSEC-2026-0098](https://rustsec.org/advisories/RUSTSEC-2026-0098.html), [RUSTSEC-2026-0099](https://rustsec.org/advisories/RUSTSEC-2026-0099.html), and [RUSTSEC-2026-0104](https://rustsec.org/advisories/RUSTSEC-2026-0104.html). The two name-constraint advisories (0098, 0099) are theoretically reachable during TLS handshake but require certificate misissuance to exploit; the CRL panic (0104) is unreachable as Rodbus does not use CRLs. - -### 1.5.0-RC1 ### * :star: Add configurable limit on consecutive client response timeouts. See [#166](https://github.com/stepfunc/rodbus/pull/166). * :wrench: Use aws-lc-rs crypto provider for TLS on most platforms. See [#164](https://github.com/stepfunc/rodbus/pull/164). * :wrench: Tunable connection logging to reduce verbosity during disrupted communication. See [#163](https://github.com/stepfunc/rodbus/pull/163). diff --git a/Cargo.lock b/Cargo.lock index 836f29a0..18702fce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -404,7 +404,7 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "example-client" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "rodbus", "tokio", @@ -416,7 +416,7 @@ dependencies = [ [[package]] name = "example-perf" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "clap", "rodbus", @@ -427,7 +427,7 @@ dependencies = [ [[package]] name = "example-server" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "rodbus", "tokio", @@ -633,7 +633,7 @@ dependencies = [ [[package]] name = "integration" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "rodbus", "tokio", @@ -1025,7 +1025,7 @@ dependencies = [ [[package]] name = "rodbus" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "crc", "rx509", @@ -1042,7 +1042,7 @@ dependencies = [ [[package]] name = "rodbus-bindings" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "oo-bindgen", "rodbus-schema", @@ -1052,7 +1052,7 @@ dependencies = [ [[package]] name = "rodbus-client" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "clap", "rodbus", @@ -1064,7 +1064,7 @@ dependencies = [ [[package]] name = "rodbus-ffi" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "lazy_static", "num_cpus", @@ -1082,7 +1082,7 @@ dependencies = [ [[package]] name = "rodbus-ffi-java" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "jni", "oo-bindgen", @@ -1092,7 +1092,7 @@ dependencies = [ [[package]] name = "rodbus-schema" -version = "1.5.0-RC1" +version = "1.5.0-RC2" dependencies = [ "oo-bindgen", "sfio-tokio-ffi", diff --git a/examples/client/Cargo.toml b/examples/client/Cargo.toml index a51fe647..391cb54a 100644 --- a/examples/client/Cargo.toml +++ b/examples/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "example-client" -version = "1.5.0-RC1" +version = "1.5.0-RC2" # inherit from workspace authors.workspace = true diff --git a/examples/perf/Cargo.toml b/examples/perf/Cargo.toml index 9f8c7b8a..174b0f01 100644 --- a/examples/perf/Cargo.toml +++ b/examples/perf/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "example-perf" -version = "1.5.0-RC1" +version = "1.5.0-RC2" # inherit from workspace authors.workspace = true diff --git a/examples/server/Cargo.toml b/examples/server/Cargo.toml index 6acf364d..76142a87 100644 --- a/examples/server/Cargo.toml +++ b/examples/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "example-server" -version = "1.5.0-RC1" +version = "1.5.0-RC2" # inherit from workspace authors.workspace = true diff --git a/ffi/bindings/c/CMakeLists.txt b/ffi/bindings/c/CMakeLists.txt index f9aa22d1..f013b1bc 100644 --- a/ffi/bindings/c/CMakeLists.txt +++ b/ffi/bindings/c/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.12) project(rodbus_c LANGUAGES C CXX) -set(RODBUS_BACKUP_VERSION "1.5.0-RC1") +set(RODBUS_BACKUP_VERSION "1.5.0-RC2") # Determine the architecture if(WIN32 AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64" AND CMAKE_SIZEOF_VOID_P EQUAL 8) diff --git a/ffi/bindings/dotnet/examples/client/client.csproj b/ffi/bindings/dotnet/examples/client/client.csproj index a1d6d0d7..03e7e1b3 100644 --- a/ffi/bindings/dotnet/examples/client/client.csproj +++ b/ffi/bindings/dotnet/examples/client/client.csproj @@ -14,7 +14,7 @@ - + diff --git a/ffi/bindings/dotnet/examples/server/server.csproj b/ffi/bindings/dotnet/examples/server/server.csproj index a1d6d0d7..03e7e1b3 100644 --- a/ffi/bindings/dotnet/examples/server/server.csproj +++ b/ffi/bindings/dotnet/examples/server/server.csproj @@ -14,7 +14,7 @@ - + diff --git a/ffi/bindings/java/examples/pom.xml b/ffi/bindings/java/examples/pom.xml index 49442b13..f304ad18 100644 --- a/ffi/bindings/java/examples/pom.xml +++ b/ffi/bindings/java/examples/pom.xml @@ -16,7 +16,7 @@ io.stepfunc rodbus - 1.5.0-RC1 + 1.5.0-RC2 diff --git a/ffi/bindings/java/rodbus-tests/pom.xml b/ffi/bindings/java/rodbus-tests/pom.xml index ba72f65c..0f743780 100644 --- a/ffi/bindings/java/rodbus-tests/pom.xml +++ b/ffi/bindings/java/rodbus-tests/pom.xml @@ -26,7 +26,7 @@ io.stepfunc rodbus - 1.5.0-RC1 + 1.5.0-RC2 org.junit.jupiter diff --git a/ffi/rodbus-bindings/Cargo.toml b/ffi/rodbus-bindings/Cargo.toml index 1e41186d..f193509c 100644 --- a/ffi/rodbus-bindings/Cargo.toml +++ b/ffi/rodbus-bindings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rodbus-bindings" -version = "1.5.0-RC1" +version = "1.5.0-RC2" description = "application to generate bindings for Rodbus" readme = "../README.md" diff --git a/ffi/rodbus-ffi-java/Cargo.toml b/ffi/rodbus-ffi-java/Cargo.toml index 0c851279..62f81a30 100644 --- a/ffi/rodbus-ffi-java/Cargo.toml +++ b/ffi/rodbus-ffi-java/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rodbus-ffi-java" -version = "1.5.0-RC1" +version = "1.5.0-RC2" authors = ["Step Function I/O LLC "] edition = "2021" build = "build.rs" diff --git a/ffi/rodbus-ffi/Cargo.toml b/ffi/rodbus-ffi/Cargo.toml index 5ce35a5a..f73ad5b8 100644 --- a/ffi/rodbus-ffi/Cargo.toml +++ b/ffi/rodbus-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rodbus-ffi" -version = "1.5.0-RC1" +version = "1.5.0-RC2" authors = ["Step Function I/O LLC "] edition = "2021" description = "FFI for Rodbus" diff --git a/ffi/rodbus-schema/Cargo.toml b/ffi/rodbus-schema/Cargo.toml index 15a805f2..ca67d84d 100644 --- a/ffi/rodbus-schema/Cargo.toml +++ b/ffi/rodbus-schema/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rodbus-schema" # this is the version that all the FFI libraries get, since it's in their schema -version = "1.5.0-RC1" +version = "1.5.0-RC2" description = "oobindgen schema for Rodbus" readme = "../README.md" diff --git a/guide/sitedata.json b/guide/sitedata.json index b34b2649..02ac6af8 100644 --- a/guide/sitedata.json +++ b/guide/sitedata.json @@ -1,4 +1,4 @@ { - "version": "1.5.0-RC1", + "version": "1.5.0-RC2", "github_url": "https://github.com/stepfunc/rodbus" } \ No newline at end of file diff --git a/integration/Cargo.toml b/integration/Cargo.toml index 708da1d1..b17621f5 100644 --- a/integration/Cargo.toml +++ b/integration/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "integration" -version = "1.5.0-RC1" +version = "1.5.0-RC2" autobins = false autotests = false autobenches = false diff --git a/rodbus-client/Cargo.toml b/rodbus-client/Cargo.toml index c5fcdc24..2a1cb938 100644 --- a/rodbus-client/Cargo.toml +++ b/rodbus-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rodbus-client" -version = "1.5.0-RC1" +version = "1.5.0-RC2" description = "A command line program for making Modbus client requests using the Rodbus crate" readme = "README.md" diff --git a/rodbus-client/src/main.rs b/rodbus-client/src/main.rs index b02afc1f..8b79bf5a 100644 --- a/rodbus-client/src/main.rs +++ b/rodbus-client/src/main.rs @@ -41,7 +41,7 @@ enum Error { #[command( about = "A command line program for making Modbus client requests using the Rodbus crate" )] -#[command(version = "1.5.0-RC1")] +#[command(version = "1.5.0-RC2")] struct Cli { #[arg( short = 'i', diff --git a/rodbus/Cargo.toml b/rodbus/Cargo.toml index 81752479..315f75b9 100644 --- a/rodbus/Cargo.toml +++ b/rodbus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rodbus" -version = "1.5.0-RC1" +version = "1.5.0-RC2" description = "A high-performance async implementation of the Modbus protocol using tokio" readme = "README.md" From e49f96f3425b784784447ac3c9c4d1ba3cb51d6a Mon Sep 17 00:00:00 2001 From: jadamcrain Date: Thu, 28 May 2026 13:44:20 -0700 Subject: [PATCH 2/4] derive rodbus-client CLI version from CARGO_PKG_VERSION Avoids manually bumping the hardcoded version string on every release. --- rodbus-client/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rodbus-client/src/main.rs b/rodbus-client/src/main.rs index 8b79bf5a..9f38bdbf 100644 --- a/rodbus-client/src/main.rs +++ b/rodbus-client/src/main.rs @@ -41,7 +41,7 @@ enum Error { #[command( about = "A command line program for making Modbus client requests using the Rodbus crate" )] -#[command(version = "1.5.0-RC2")] +#[command(version = env!("CARGO_PKG_VERSION"))] struct Cli { #[arg( short = 'i', From 4472ee880c2ed68a89756c08a6f5a1370841777a Mon Sep 17 00:00:00 2001 From: jadamcrain Date: Thu, 28 May 2026 13:47:37 -0700 Subject: [PATCH 3/4] changelog: add TCP client performance optimizations (#177) Also note the ReadBuffer shift-condition fix from the same PR. These landed after 1.5.0-RC1 and were missing from the release notes. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 500d833a..494d51d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ### 1.5.0-RC2 ### * :star: Add non-spawning `create_tcp_client_task_with_options()`, `create_tls_client_task_with_options()`, and `create_rtu_client_task()` that return a `ClientTask` for the caller to spawn, enabling custom task instrumentation. See [#180](https://github.com/stepfunc/rodbus/pull/180). * :lock: Update `rustls-webpki` to 0.103.13 to resolve [RUSTSEC-2026-0098](https://rustsec.org/advisories/RUSTSEC-2026-0098.html), [RUSTSEC-2026-0099](https://rustsec.org/advisories/RUSTSEC-2026-0099.html), and [RUSTSEC-2026-0104](https://rustsec.org/advisories/RUSTSEC-2026-0104.html). The two name-constraint advisories (0098, 0099) are theoretically reachable during TLS handshake but require certificate misissuance to exploit; the CRL panic (0104) is unreachable as Rodbus does not use CRLs. +* :star: TCP client performance optimizations: ~33% fewer heap allocations and ~3.4% fewer instructions per request, including an iterative MBAP parser and `ExactSizeIterator` impls for the response iterators. See [#177](https://github.com/stepfunc/rodbus/pull/177). +* :bug: Fix a `ReadBuffer` shift condition that compared the buffer position against the wrong length. See [#177](https://github.com/stepfunc/rodbus/pull/177). * :star: Add configurable limit on consecutive client response timeouts. See [#166](https://github.com/stepfunc/rodbus/pull/166). * :wrench: Use aws-lc-rs crypto provider for TLS on most platforms. See [#164](https://github.com/stepfunc/rodbus/pull/164). * :wrench: Tunable connection logging to reduce verbosity during disrupted communication. See [#163](https://github.com/stepfunc/rodbus/pull/163). From bc911a17b8648062012d2fd2653fbb1f7e74b34a Mon Sep 17 00:00:00 2001 From: jadamcrain Date: Thu, 28 May 2026 13:52:31 -0700 Subject: [PATCH 4/4] changelog: clarify ReadBuffer fix impact (rare spurious disconnect) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 494d51d6..4162dcee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ * :star: Add non-spawning `create_tcp_client_task_with_options()`, `create_tls_client_task_with_options()`, and `create_rtu_client_task()` that return a `ClientTask` for the caller to spawn, enabling custom task instrumentation. See [#180](https://github.com/stepfunc/rodbus/pull/180). * :lock: Update `rustls-webpki` to 0.103.13 to resolve [RUSTSEC-2026-0098](https://rustsec.org/advisories/RUSTSEC-2026-0098.html), [RUSTSEC-2026-0099](https://rustsec.org/advisories/RUSTSEC-2026-0099.html), and [RUSTSEC-2026-0104](https://rustsec.org/advisories/RUSTSEC-2026-0104.html). The two name-constraint advisories (0098, 0099) are theoretically reachable during TLS handshake but require certificate misissuance to exploit; the CRL panic (0104) is unreachable as Rodbus does not use CRLs. * :star: TCP client performance optimizations: ~33% fewer heap allocations and ~3.4% fewer instructions per request, including an iterative MBAP parser and `ExactSizeIterator` impls for the response iterators. See [#177](https://github.com/stepfunc/rodbus/pull/177). -* :bug: Fix a `ReadBuffer` shift condition that compared the buffer position against the wrong length. See [#177](https://github.com/stepfunc/rodbus/pull/177). +* :bug: Fix a `ReadBuffer` shift condition that, in a rare buffer-full edge case, caused a spurious disconnect (no data corruption). See [#177](https://github.com/stepfunc/rodbus/pull/177). * :star: Add configurable limit on consecutive client response timeouts. See [#166](https://github.com/stepfunc/rodbus/pull/166). * :wrench: Use aws-lc-rs crypto provider for TLS on most platforms. See [#164](https://github.com/stepfunc/rodbus/pull/164). * :wrench: Tunable connection logging to reduce verbosity during disrupted communication. See [#163](https://github.com/stepfunc/rodbus/pull/163).