What changed, and why it matters
This commit is a routine release-candidate version bump from v25.12rc2 to v25.12rc3. It updates version strings across packaging files and adds changelog notes for the new release candidate. The commit itself does not change any executable logic, cryptographic code, network handling, or security-sensitive behavior.
No action required for this commit. If reviewing for security, examine the actual code changes in PRs #8735 and #8741 separately.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff is purely administrative: .version, CHANGELOG.md, Python package init.py and pyproject.toml files, tools/reckless, and uv.lock are updated to reflect the v25.12rc3 release tag. The CHANGELOG adds two new fixed-issue entries (PRs #8735 and #8741), but the actual fixes are not present in this commit. No source code implementing those fixes is included, so this commit cannot be evaluated for the security content of the referenced issues.
Changed components
Inspect captured patch +16 / −11
diff --git a/.version b/.version
index 8a08be9e..5247f42f 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-v25.12rc2
+v25.12rc3
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ef4f5612..5b2cfe9f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -59,9 +59,11 @@ Note: You should always set `allow-deprecated-apis=false` to test for changes.
### Fixed
+ - lightningd: we could miss tx spends which happened in the past blocks when we restarted. ([#8735])
- lightningd: multiple significant speedups for large nodes, especially preventing "freezes" under exceptionally high load. ([#8677])
- `xpay` will not try to send too many HTLCs through unknown channels (6, as that is Phoenix's limit) unless it has no choice ([#8537])
- `xpay` fixed clash with simultaneous payments via routehints and blinded paths. ([#8685])
+ - `xpay`: error messages no longer incorrectly label intermediate channels as "the invoice's route hint". ([#8741])
- JSON-RPC: `signpsbt` no longer crashes if asked to sign an already-signed PSBT with taproot paths. ([#8546])
- Offers: require peers for blinded paths to have `option_onion_messages`, due to reports of LND not forwarding our blinded payments correctly. ([#8682])
- Protocol: we now re-transmit unseen funding transactions on startup, for more robustness. ([#8546])
@@ -94,6 +96,9 @@ Note: You should always set `allow-deprecated-apis=false` to test for changes.
- Splicing: Fixed crash when we splice a channel which hasn't been announced yet. ([#8555])
- JSON-RPC: `cancelrecurringinvoice` command to send new "don't expect any more invoice requests" msg to recurring bolt12 invoices. ([#8398])
+
+[#8741]: https://github.com/ElementsProject/lightning/pull/8741
+[#8735]: https://github.com/ElementsProject/lightning/pull/8735
[#8702]: https://github.com/ElementsProject/lightning/pull/8702
[#8506]: https://github.com/ElementsProject/lightning/pull/8506
[#8646]: https://github.com/ElementsProject/lightning/pull/8646
diff --git a/contrib/pyln-client/pyln/client/__init__.py b/contrib/pyln-client/pyln/client/__init__.py
index 10afa3b3..0e3a0b21 100644
--- a/contrib/pyln-client/pyln/client/__init__.py
+++ b/contrib/pyln-client/pyln/client/__init__.py
@@ -4,7 +4,7 @@ from .gossmap import Gossmap, GossmapNode, GossmapChannel, GossmapHalfchannel, G
from .gossmapstats import GossmapStats
from .version import NodeVersion
-__version__ = "v25.12rc2"
+__version__ = "v25.12rc3"
__all__ = [
"LightningRpc",
diff --git a/contrib/pyln-client/pyproject.toml b/contrib/pyln-client/pyproject.toml
index 17d2a616..8e6a6eb2 100644
--- a/contrib/pyln-client/pyproject.toml
+++ b/contrib/pyln-client/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-client"
-version = "v25.12rc2"
+version = "v25.12rc3"
description = "Client library and plugin library for Core Lightning"
authors = [{ name = "Christian Decker", email = "decker.christian@gmail.com" }]
license = { text = "BSD-MIT" }
diff --git a/contrib/pyln-proto/pyln/proto/__init__.py b/contrib/pyln-proto/pyln/proto/__init__.py
index 981b3b3c..1ab75543 100644
--- a/contrib/pyln-proto/pyln/proto/__init__.py
+++ b/contrib/pyln-proto/pyln/proto/__init__.py
@@ -4,7 +4,7 @@ from .invoice import Invoice
from .onion import OnionPayload, TlvPayload, LegacyOnionPayload
from .wire import LightningConnection, LightningServerSocket
-__version__ = "v25.12rc2"
+__version__ = "v25.12rc3"
__all__ = [
"Invoice",
diff --git a/contrib/pyln-proto/pyproject.toml b/contrib/pyln-proto/pyproject.toml
index 5c4eb392..5fba9182 100644
--- a/contrib/pyln-proto/pyproject.toml
+++ b/contrib/pyln-proto/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-proto"
-version = "v25.12rc2"
+version = "v25.12rc3"
description = "This package implements some of the Lightning Network protocol in pure python. It is intended for protocol testing and some minor tooling only. It is not deemed secure enough to handle any amount of real funds (you have been warned!)."
authors = [
{name = "Christian Decker", email = "decker.christian@gmail.com"}
diff --git a/contrib/pyln-testing/pyln/testing/__init__.py b/contrib/pyln-testing/pyln/testing/__init__.py
index 687506b3..b51cd21b 100644
--- a/contrib/pyln-testing/pyln/testing/__init__.py
+++ b/contrib/pyln-testing/pyln/testing/__init__.py
@@ -1,4 +1,4 @@
-__version__ = "v25.12rc2"
+__version__ = "v25.12rc3"
__all__ = [
"__version__",
diff --git a/contrib/pyln-testing/pyproject.toml b/contrib/pyln-testing/pyproject.toml
index 278526bf..87df3faa 100644
--- a/contrib/pyln-testing/pyproject.toml
+++ b/contrib/pyln-testing/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyln-testing"
-version = "v25.12rc2"
+version = "v25.12rc3"
description = "Test your Core Lightning integration, plugins or whatever you want"
authors = [{ name = "Christian Decker", email = "decker.christian@gmail.com" }]
license = { text = "BSD-MIT" }
diff --git a/tools/reckless b/tools/reckless
index ce705f70..4834f601 100755
--- a/tools/reckless
+++ b/tools/reckless
@@ -21,7 +21,7 @@ from urllib.error import HTTPError
import venv
-__VERSION__ = 'v25.12rc2'
+__VERSION__ = 'v25.12rc3'
logging.basicConfig(
level=logging.INFO,
diff --git a/uv.lock b/uv.lock
index 2e3418c9..9db2982a 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1355,7 +1355,7 @@ dev = [{ name = "pyln-proto", editable = "contrib/pyln-proto" }]
[[package]]
name = "pyln-client"
-version = "25.12rc2"
+version = "25.12rc3"
source = { editable = "contrib/pyln-client" }
dependencies = [
{ name = "pyln-bolt7" },
@@ -1413,7 +1413,7 @@ dev = [
[[package]]
name = "pyln-proto"
-version = "25.12rc2"
+version = "25.12rc3"
source = { editable = "contrib/pyln-proto" }
dependencies = [
{ name = "base58" },
@@ -1442,7 +1442,7 @@ dev = [{ name = "pytest", specifier = ">=8.0.0" }]
[[package]]
name = "pyln-testing"
-version = "25.12rc2"
+version = "25.12rc3"
source = { editable = "contrib/pyln-testing" }
dependencies = [
{ name = "cheroot" },
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.