diff --git a/CHANGELOG.md b/CHANGELOG.md
index b21edd4b..2de3c31e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,9 @@
+### 1.7.0-RC3 ###
+* :star: Add unstable, non-spawning master and outstation task APIs behind the semver-exempt `unstable` feature, allowing applications to obtain runnable tasks/futures without the library calling `tokio::spawn` internally. See [#433](https://github.com/stepfunc/dnp3/pull/433).
+* :star: Add `EndpointList::into_connect_handler()` and `EndpointList::into_connect_handler_with_options()` to build a `ClientConnectionHandler` from an endpoint list, e.g. for use with `spawn_master_tcp_client_3`. See [#433](https://github.com/stepfunc/dnp3/pull/433).
+* :wrench: The no-spawn TCP outstation server APIs (`Server::add_outstation_no_spawn` and `Server::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 automatic `dnp3-outstation-tcp` / `tcp-server` spans should now wrap the returned future in their own span before spawning it. The prebuilt bindings (C/C++, .NET, Java) are unaffected. See [#433](https://github.com/stepfunc/dnp3/pull/433).
+
### 1.7.0-RC2 ###
* :star: 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](https://github.com/stepfunc/dnp3/issues/427).
* :shield: Update `rustls-webpki` to 0.103.13 to resolve [RUSTSEC-2026-0098](https://rustsec.org/advisories/RUSTSEC-2026-0098) and [RUSTSEC-2026-0099](https://rustsec.org/advisories/RUSTSEC-2026-0099), both concerning incorrect acceptance of X.509 name constraints. Exposure is limited to TLS configurations using `CertificateMode::AuthorityBased`; `SelfSigned` mode bypasses the affected code path.
diff --git a/Cargo.lock b/Cargo.lock
index dbbce8e0..75296a35 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -391,7 +391,7 @@ dependencies = [
[[package]]
name = "dnp3"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
dependencies = [
"assert_matches",
"chrono",
@@ -409,7 +409,7 @@ dependencies = [
[[package]]
name = "dnp3-bindings"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
dependencies = [
"dnp3-schema",
"oo-bindgen",
@@ -428,7 +428,7 @@ dependencies = [
[[package]]
name = "dnp3-ffi"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
dependencies = [
"dnp3",
"dnp3-schema",
@@ -446,7 +446,7 @@ dependencies = [
[[package]]
name = "dnp3-ffi-java"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
dependencies = [
"dnp3-ffi",
"dnp3-schema",
@@ -456,7 +456,7 @@ dependencies = [
[[package]]
name = "dnp3-schema"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
dependencies = [
"oo-bindgen",
"sfio-tokio-ffi",
diff --git a/conformance/pom.xml b/conformance/pom.xml
index bccca688..3995d2ca 100644
--- a/conformance/pom.xml
+++ b/conformance/pom.xml
@@ -11,7 +11,7 @@
UTF-8
2.13.4
- 1.7.0-RC2
+ 1.7.0-RC3
0.1.0-SNAPSHOT
4.4.0
diff --git a/dnp3/Cargo.toml b/dnp3/Cargo.toml
index a29b85a6..3740b70d 100644
--- a/dnp3/Cargo.toml
+++ b/dnp3/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "dnp3"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
authors = ["Step Function I/O LLC "]
description = "Rust implementation of DNP3 (IEEE 1815) with idiomatic bindings for C, C++, .NET, and Java"
diff --git a/dnp3/codegen/pom.xml b/dnp3/codegen/pom.xml
index 589fc9a1..cf47cd66 100644
--- a/dnp3/codegen/pom.xml
+++ b/dnp3/codegen/pom.xml
@@ -4,7 +4,7 @@
dev.gridio.dnp3
dnp3-model
- 1.7.0-RC2
+ 1.7.0-RC3
jar
dnp3-rs model
diff --git a/ffi/bindings/c/CMakeLists.txt b/ffi/bindings/c/CMakeLists.txt
index fcf09348..a192bb29 100644
--- a/ffi/bindings/c/CMakeLists.txt
+++ b/ffi/bindings/c/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.12)
project(dnp3_c LANGUAGES C CXX)
-set(DNP3_BACKUP_VERSION 1.7.0-RC2)
+set(DNP3_BACKUP_VERSION 1.7.0-RC3)
# 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/master/Master.csproj b/ffi/bindings/dotnet/examples/master/Master.csproj
index caf398d8..1c83bf5a 100644
--- a/ffi/bindings/dotnet/examples/master/Master.csproj
+++ b/ffi/bindings/dotnet/examples/master/Master.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/ffi/bindings/dotnet/examples/outstation/Outstation.csproj b/ffi/bindings/dotnet/examples/outstation/Outstation.csproj
index b56ac247..acbbd998 100644
--- a/ffi/bindings/dotnet/examples/outstation/Outstation.csproj
+++ b/ffi/bindings/dotnet/examples/outstation/Outstation.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/ffi/bindings/java/examples/pom.xml b/ffi/bindings/java/examples/pom.xml
index 4db0483d..f2e15869 100644
--- a/ffi/bindings/java/examples/pom.xml
+++ b/ffi/bindings/java/examples/pom.xml
@@ -4,7 +4,7 @@
io.stepfunc.dnp3
examples
- 1.7.0-RC2
+ 1.7.0-RC3
1.8
@@ -16,7 +16,7 @@
io.stepfunc
dnp3
- 1.7.0-RC2
+ 1.7.0-RC3
diff --git a/ffi/bindings/java/pom.xml b/ffi/bindings/java/pom.xml
index 7b822a66..9f5bccb7 100644
--- a/ffi/bindings/java/pom.xml
+++ b/ffi/bindings/java/pom.xml
@@ -4,7 +4,7 @@
io.stepfunc
dnp3-parent
- 1.7.0-RC2
+ 1.7.0-RC3
pom
diff --git a/ffi/dnp3-bindings/Cargo.toml b/ffi/dnp3-bindings/Cargo.toml
index 02fb622c..a8c4ddc1 100644
--- a/ffi/dnp3-bindings/Cargo.toml
+++ b/ffi/dnp3-bindings/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "dnp3-bindings"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
# inherit from workspace
rust-version.workspace = true
diff --git a/ffi/dnp3-ffi-java/Cargo.toml b/ffi/dnp3-ffi-java/Cargo.toml
index 9e971c55..c0a02800 100644
--- a/ffi/dnp3-ffi-java/Cargo.toml
+++ b/ffi/dnp3-ffi-java/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "dnp3-ffi-java"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
build = "build.rs"
# inherit from workspace
diff --git a/ffi/dnp3-ffi/Cargo.toml b/ffi/dnp3-ffi/Cargo.toml
index a47e3676..2cd035f0 100644
--- a/ffi/dnp3-ffi/Cargo.toml
+++ b/ffi/dnp3-ffi/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "dnp3-ffi"
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
# inherit from workspace
rust-version.workspace = true
diff --git a/ffi/dnp3-schema/Cargo.toml b/ffi/dnp3-schema/Cargo.toml
index e6b83b7c..d74141b8 100644
--- a/ffi/dnp3-schema/Cargo.toml
+++ b/ffi/dnp3-schema/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "dnp3-schema"
# this version is what gets applied to the FFI libraries
-version = "1.7.0-RC2"
+version = "1.7.0-RC3"
# inherit from workspace
rust-version.workspace = true
diff --git a/guide/sitedata.json b/guide/sitedata.json
index be1a15f2..d515ff14 100644
--- a/guide/sitedata.json
+++ b/guide/sitedata.json
@@ -1,4 +1,4 @@
{
- "version": "1.7.0-RC2",
+ "version": "1.7.0-RC3",
"github_url": "https://github.com/stepfunc/dnp3"
}
\ No newline at end of file