Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Bump MSRV to 1.75.0 by tnull · Pull Request #4002 · lightningdevkit/rust-lightning · GitHub
Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Bump MSRV to 1.75.0 by tnull · Pull Request #4002 · lightningdevkit/rust-lightning · GitHub
Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Bump MSRV to 1.75.0 by tnull · Pull Request #4002 · lightningdevkit/rust-lightning · GitHub
Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Bump MSRV to 1.75.0 by tnull · Pull Request #4002 · lightningdevkit/rust-lightning · GitHub
Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Bump MSRV to 1.75.0 by tnull · Pull Request #4002 · lightningdevkit/rust-lightning · GitHub
Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Bump MSRV to 1.75.0 by tnull · Pull Request #4002 · lightningdevkit/rust-lightning · GitHub
Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Bump MSRV to 1.75.0 by tnull · Pull Request #4002 · lightningdevkit/rust-lightning · GitHub
Skip to content

Bump MSRV to 1.75.0 - #4002

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85
Oct 25, 2025
Merged

Bump MSRV to 1.75.0#4002
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
tnull:2025-08-bump-msrv-to-1.85

Conversation

@tnull

@tnulltnull commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

We generally align our MSRV with Debian's stable channel. Debian 13 'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is only about ~7months old at this point, we opt to bump to the more conservative 1.75.0, which approaches two years of age.

@tnull
tnull requested a review from TheBlueMattAugust 11, 2025 09:13
@ldk-reviews-bot

ldk-reviews-bot commented Aug 11, 2025

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt 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.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 0b33c48 to 40dbf5bCompareAugust 11, 2025 09:16
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also addressed most MSRV-related TODOs in the code, only thing left is

short_channel_id:u64,// This should be NonZero<u64> eventually when we bump MSRV

@TheBlueMatt any opinion on whether to do it here, in a separate PR, or as part of #3973 ?

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 3 times, most recently from 8eb3354 to 17b08bcCompareAugust 11, 2025 11:09
@codecov

codecovBot commented Aug 11, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.10638% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.78%. Comparing base (7f20d47) to head (165a6b3).
⚠️ Report is 27 commits behind head on main.

Files with missing linesPatch %Lines
lightning-persister/src/utils.rs0.00%5 Missing ⚠️
lightning-liquidity/src/manager.rs33.33%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #4002 +/- ##
==========================================
- Coverage 88.80% 88.78% -0.02% 
==========================================
Files 180 180 Lines 137004 136986 -18 Branches 137004 136986 -18 ==========================================
- Hits 121660 121627 -33 - Misses 12522 12545 +23 + Partials 2822 2814 -8 
FlagCoverage Δ
fuzzing21.55% <6.81%> (+<0.01%)⬆️
tests88.63% <85.10%> (-0.02%)⬇️

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.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

We generally align our MSRV with Debian's stable channel

I don't think this is entirely true :). We generally align our MSRV with rust-bitcoin and the rest of the ecosystem. IIRC rust-bitcoin usually does something like min(2-year-old-rustc, debian stable, rustc that introduces materially useful features). The last time we bumped MSRV (#2681) the rustc we bumped to was a year and a few months old, and the release containing it wasn't until Dec, so rustc 1.63 was almost a year and a half old.

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

@TheBlueMatt
TheBlueMatt removed their request for review August 11, 2025 11:18
@tnull

tnull commented Aug 11, 2025

Copy link
Copy Markdown
ContributorAuthor

We generally align our MSRV with rust-bitcoin and the rest of the ecosystem.

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

1.85 is currently only around 7 months old, and while it contains the rust 2024 edition, its not clear to me what we get that's worth bumping to what, presumably, rust-bitcoin won't do. There's also async closures but async blocks seem to have done us just fine nearly everywhere.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.). Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec<Utxo>, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

IMO it makes a whole lot of sense to upgrade now that we can, if just because it makes our lives easier in many little places, but also because it allows us to expose a more coherent Rust-native API.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 2 times, most recently from 812cfd6 to 04836c6CompareAugust 11, 2025 11:49
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Do we? #2681 happened 8-9 months before rust-bitcoin bumped in rust-bitcoin/rust-bitcoin#3100. I also recall reading a comment where they indicated they had bumped earlier if they'd known LDK already went ahead / was fine with it. BDK is also looking to bump soon (bitcoindevkit/bdk#2009) and LDK Node will bump shortly: lightningdevkit/ldk-node#606

We don't wait for rust-bitcoin, but we definitely coordinate around specific version of rustc.

What we get is a lot of little things, most importantly general reduction of friction (a period where we don't constantly have to fight with pinned-back dependencies, where all crates have the same MSRV, where cargo fmt and cargo +1.85 fmt have the exact same output, etc. etc.).

This doesn't sound 1.85-specific?

Note we can then also finally switch to 'proper' async traits, which is IMO crucial since we're about to ship the async KVStore interface, which is currently pretty clunky to use (return values of Pin<Box<dyn Future<Output = Result<Vec, ()>> + Send + 'a>> are not exactly ergonomic to type, to say the least).

Sadly even with rustc nightly we wouldn't want to change that. Our async KVStore requires ordering, which is not possible with native rust async methods as they do not run any code at all until polled. I guess in theory we could require "ordering after the first poll" and poll once whenever we persist, but that seems even more brittle than the current version which at least exposes the concept to the implementer.

We also get some language features (GATs, let-else bindings, both stabilized with 1.65, for example), which some devs were looking forward to be able to use finally.

We should also want 1.68 for the pin macro, afair (removes allocations in each loop of the BP).

@tnulltnull moved this to Goal: Merge in Weekly GoalsAug 12, 2025
@tnulltnull self-assigned this Aug 12, 2025
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 04836c6 to bf9764cCompareSeptember 10, 2025 09:42
@tnulltnull changed the title Bump MSRV to 1.85.0Bump MSRV to 1.75.0Sep 10, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

Per https://pkgs.org/download/rustc (and packages.ubuntu.com) the latest Ubuntu LTS is on rustc 1.75, which given its also the lightning-transaction-sync MSRV seems like an obvious candidate.

While I'd personally still be in favor of 1.85, I now switched this PR to bump to 1.75.0.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 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.

@tnull

Copy link
Copy Markdown
ContributorAuthor

error: package `backtrace v0.3.75` cannot be built because it requires rustc 1.82.0 or newer, while the currently active rustc version is 1.75.0
Either upgrade to rustc 1.82.0 or newer, or use
cargo update backtrace@0.3.75 --precise ver
where `ver` is the latest version of `backtrace` supporting rustc 1.75.0

Ah, missed re-adding the deleted pin for this.

Also should we wait for 0.3 for this? I don't see a strong reason to do it now vs in three weeks.

I guess? Also don't see a strong argument to wait? Or do you mean so that the 0.2 release would still have the old MSRV? Then again, 1.75.0 is ancient by now.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Or do you mean so that the 0.2 release would still have the old MSRV?

This.

@tnull

Copy link
Copy Markdown
ContributorAuthor

Putting in draft until then.

@tnull
tnull marked this pull request as draft September 12, 2025 07:37
@tnulltnull removed the status in Weekly GoalsSep 12, 2025
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch 4 times, most recently from dfd2f69 to e213da2CompareOctober 22, 2025 21:04
@tnull
tnull marked this pull request as ready for review October 22, 2025 21:04
@tnull

tnull commented Oct 22, 2025

Copy link
Copy Markdown
ContributorAuthor

Rebased on current main and addressed remaining linter warnings.

@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from e213da2 to 1751807CompareOctober 22, 2025 21:10
We generally align our MSRV with Debian's stable channel. Debian 13
'Trixie' was just released, shipping rustc 1.85. However, as 1.85.0 is
only about ~7months old at this point, we opt to bump to the more
conservative 1.75.0, which approaches two years of age.
.. now that we can, addressing a TODO.
@tnull
tnullforce-pushed the 2025-08-bump-msrv-to-1.85 branch from 1751807 to 165a6b3CompareOctober 22, 2025 21:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Now actually whack-a-mole'd all remaining lints.

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @TheBlueMatt! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@TheBlueMattTheBlueMatt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. We should also move lightning-transaction-sync back into the workspace now that they have the same MSRV. There's probably some Box::pin we can drop now too.

@TheBlueMatt
TheBlueMatt merged commit be24841 into lightningdevkit:mainOct 25, 2025
22 of 25 checks passed
Sign up for freeto 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.

3 participants

@tnull@ldk-reviews-bot@TheBlueMatt