Skip to content

Conversation

@TheBlueMatt
Copy link
Collaborator

Backport of #4189, #4186, #4192, #4191, #4187, and #4163 for 0.2.

TheBlueMatt and others added 10 commits October 30, 2025 18:26
This reverts commit 561da4c.

A user pointed out, when looking to upgrade to LDK 0.2, that the
`lazy` flag is actually quite important for performance when using
a `MonitorUpdatingPersister`, especially in synchronous persistence
mode.

Thus, we add it back here.

Fixes lightningdevkit#4188

Backport of 3b4c2ff
In the previous commit we reverted
561da4c. One of the motivations
for it (in addition to `lazy` removals being somewhat less, though
still arguably useful in an async context) was that the ordering
requirements of `lazy` removals is somewhat unclear.

Here we simply default to the simplest safe option, requiring a
total order across all `write` and `remove` operations to the same
key, `lazy` or not.

Backport of 0f9548b
While HTTP headers should be a unique K->V mapping, returning three
headers to a user in an event via a `HashMap` is substantially
overkill (and also not trivial to do in bindings). Instead, we
expose them as a `Vec`.

Backport of 031a987
`WebhookNotification` already has all fields `pub`, making its
`new` constructor somewhat redundant, but also conflicting with the
bindings-auto-generated `new` constructor. Thus we just drop it.

Backport of b10a4e8
If we're already passing `AChannelManagerRef` and `ChainMonitorRef`
to `can_support_additional_anchor_channel` there's no need to take
them by reference.

Backport of e4512d1
If we fail to load a `ChannelMonitor` due to the new limits in LDK
0.2, its useful to communicate which monitor failed, which we do
here.

Requested at
lightningdevkit#4146 (comment)

Backport of a4f4663
`crates.io` will show any README/README.md which apears in the
crate which is uploaded, but it doesn't consider the README from
the workspace, only if its in the crate itself.

Instead, add the `readme` field so that the workspace README also
gets uploaded.

Backport of 1605291
@TheBlueMatt TheBlueMatt added this to the 0.2 milestone Oct 30, 2025
@ldk-reviews-bot
Copy link

ldk-reviews-bot commented Oct 30, 2025

I've assigned @wpaulino as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@TheBlueMatt
Copy link
Collaborator Author

Also backported #4195 to fix clippy.

@codecov
Copy link

codecov bot commented Oct 30, 2025

Codecov Report

❌ Patch coverage is 72.16495% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.86%. Comparing base (1b4d8e4) to head (a107ca2).
⚠️ Report is 16 commits behind head on 0.2.

Files with missing lines Patch % Lines
lightning-persister/src/fs_store.rs 52.38% 5 Missing and 5 partials ⚠️
lightning/src/util/persist.rs 55.00% 7 Missing and 2 partials ⚠️
lightning-background-processor/src/lib.rs 0.00% 2 Missing ⚠️
lightning/src/util/anchor_channel_reserves.rs 0.00% 2 Missing ⚠️
lightning/src/util/test_utils.rs 60.00% 2 Missing ⚠️
lightning-liquidity/src/lsps2/service.rs 0.00% 1 Missing ⚠️
lightning-liquidity/src/lsps5/service.rs 75.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##              0.2    #4193      +/-   ##
==========================================
- Coverage   88.86%   88.86%   -0.01%     
==========================================
  Files         180      180              
  Lines      137770   137802      +32     
  Branches   137770   137802      +32     
==========================================
+ Hits       122433   122455      +22     
- Misses      12530    12537       +7     
- Partials     2807     2810       +3     
Flag Coverage Δ
fuzzing 21.45% <0.00%> (+0.58%) ⬆️
tests 88.70% <72.16%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot
Copy link

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt TheBlueMatt force-pushed the 2025-10-0.2-backports-2 branch from aa9a347 to fb6da9e Compare October 30, 2025 21:05
@TheBlueMatt
Copy link
Collaborator Author

TheBlueMatt commented Oct 30, 2025

Updated #4163 and the backported copy of it. That needs to land first anyway:

$ git diff-tree -U1 aa9a347531 fb6da9e545
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4839d6423..513a026f62 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -92,2 +92,4 @@
    `KVStore` to restore custom logic for specific storage objects (#3905).
+ * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by
+   default, #3726). You can use `NodeIdMessageRouter` to enable dummy hops.
  * `ProbabilisticScoringFeeParameters::probing_diversity_penalty` was added to
@@ -150,4 +152,2 @@
    marginally when forwarding gossip to a slow peer (#4093, #4096).
- * `BlindedMessagePath::new_with_dummy_hops` was added (but is not used by
-   default, #3726).
  * Blinded path serialization is now padded to better hide its contents (#3177).

`ChannelManager::splice_channel` initiates a splice which
ultimately generates a series of events. The most important of
which, `FundingTransactionReadyForSigning` (which must always be
handled, unlike the others), was not documented.

Here we mention the event generation.

Backport of 00e06a0
Users implementing the "onion message mailbox" feature and handling
`OnionMessageIntercepted` events need to also handle
`Event::OnionMessagePeerConnected` events.

Here we update the event docs for both to add additional references
and be more explicit about what implementors need to do.

Backport of 683d03c
`clippy` now complains that `Default` for the interactive tx
constructor `StateMachine` can be auto-derived, but its a bit weird
to have a `Default` that loads an invalid ("indeterminate") state.
Instead, we replace the one line that actually cares about the
`Default` (which uses `core::mem::take`) with `core::mem::replace`,
making it more explict.

Backport of a8b990a
`clippy` now complains about more instances of useless `vec!`s, so
we drop them here.

Backport of 3c1159c
@TheBlueMatt TheBlueMatt force-pushed the 2025-10-0.2-backports-2 branch from fb6da9e to a107ca2 Compare October 30, 2025 22:09
@TheBlueMatt
Copy link
Collaborator Author

Updated backports of #4163.

$ git diff-tree -U1 fb6da9e545 a107ca264d
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 513a026f62..0480191933 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -33,3 +33,3 @@
    LDK-based LSPs wishing to support often-offline senders and recipients should
-   set `UserConfig::enable_htlc_hold`, support the existing "onion mesage
+   set `UserConfig::enable_htlc_hold`, support the existing "onion message
    mailbox" feature (setting `intercept_messages_for_offline_peers` on
@@ -39,3 +39,3 @@
    force-closure risk for feerate disagreements by using a fixed, zero fee on
-   presigned transactions, relying on anchor bumps instead. They also utilize
+   pre-signed transactions, relying on anchor bumps instead. They also utilize
    the new TRUC + ephemeral dust policy in Bitcoin Core 29 to substantially
@@ -127,3 +127,3 @@
    full available buffer (#3640).
- * structs in `lightning-liquidity` were renamed to be globally unique (#3583).
+ * Structs in `lightning-liquidity` were renamed to be globally unique (#3583).
  * Renamed `SpendableOutputDescriptor::outpoint` to `spendable_outpoint` (#3634)
@@ -147,3 +147,3 @@
    fixed (#4168).
- * The fields in `SocketAddress::OnionV3` are now corectly parsed, and the
+ * The fields in `SocketAddress::OnionV3` are now correctly parsed, and the
    `Display` for such addresses is now lowercase (#4090).
@@ -170,5 +170,5 @@
  * Blinded message paths generated by previous versions of LDK, except those
-   generated for inclusion in `Bolt12Offer`s will no longer be accepted. As most
-   blinded message paths are ephemeral, this should only invalidate issued
-   `Refund`s in practice (#3917).
+   generated for inclusion in BOLT 12 `Offer`s will no longer be accepted. As
+   most blinded message paths are ephemeral, this should only invalidate issued
+   BOLT 12 `Refund`s in practice (#3917).
  * Once a channel has been spliced, LDK can no longer be downgraded.
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index d52668eef6..632d897043 100644
--- a/lightning/src/ln/channelmanager.rs
+++ b/lightning/src/ln/channelmanager.rs
@@ -4685,5 +4685,4 @@ where
 	///
-	/// After initial signatures have been exchanged, if we contributed any inputs,
-	/// [`Event::FundingTransactionReadyForSigning`] will be generated and
-	/// [`ChannelManager::funding_transaction_signed`] should be called.
+	/// After initial signatures have been exchanged, [`Event::FundingTransactionReadyForSigning`]
+	/// will be generated and [`ChannelManager::funding_transaction_signed`] should be called.
 	///

@TheBlueMatt TheBlueMatt merged commit ef789f4 into lightningdevkit:0.2 Oct 31, 2025
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants