bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

@TheBlueMatt@tnull@Kixunil@arik-so@vincenzopalazzo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

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

bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

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

bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

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

bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

@TheBlueMatt@tnull@Kixunil@arik-so@vincenzopalazzo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

@TheBlueMatt@tnull@Kixunil@arik-so@vincenzopalazzo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

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

bitcoin 0.32 upgrade followups - #3249

Merged
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1
Aug 19, 2024
Merged

bitcoin 0.32 upgrade followups#3249
TheBlueMatt merged 9 commits into
lightningdevkit:mainfrom
TheBlueMatt:2024-08-feature-cleanup-1

Conversation

@TheBlueMatt

@TheBlueMattTheBlueMatt commented Aug 16, 2024

Copy link
Copy Markdown
Collaborator

Mostly feature list cleanups now that we can, but also tiny tweaks to BufReader.

Fixes#3097

@TheBlueMattTheBlueMatt added this to the 0.0.124 milestone Aug 16, 2024
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 4b8dd7d to ff558f6CompareAugust 16, 2024 22:04
@codecov

codecovBot commented Aug 16, 2024

Copy link
Copy Markdown

Codecov Report

Attention: Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.

Project coverage is 89.72%. Comparing base (dd37077) to head (8049f99).
Report is 13 commits behind head on main.

FilesPatch %Lines
lightning/src/util/ser.rs15.38%8 Missing and 3 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3249 +/- ##
=======================================
Coverage 89.72% 89.72% =======================================
Files 124 124 Lines 102386 102352 -34 Branches 102386 102352 -34 =======================================
- Hits 91867 91840 -27 + Misses 7819 7816 -3 + Partials 2700 2696 -4 

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

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly looks good to me, just a few questions.

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

CI-shellcheck is unhappy, btw.

Comment threadlightning/src/util/ser.rs Outdated
}
}

// Drop this entirely if rust-bitcoin releases a version bump with https://github.com/rust-bitcoin/rust-bitcoin/pull/3173

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Prefix with TODO or FIXME for discoverability? Maybe also open an issue for it to make really sure we don't forget as shipping this might have quite an impact on efficiency?

Comment threadlightning/src/util/ser.rs
Comment threadlightning-invoice/Cargo.toml
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from ff558f6 to 066be33CompareAugust 17, 2024 15:20
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

I'm honestly not entirely sure about the patch changes yet. Will have to see how working with hard-coded patch will be in practice.

When working directly on LDK it seems to be fine (just have to get used to cargo -p) but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 9f001e5 to 2e4480fCompareAugust 17, 2024 21:12
@TheBlueMattTheBlueMatt changed the title [1/2] bitcoin 0.32 upgrade followupsbitcoin 0.32 upgrade followupsAug 17, 2024
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Added two more commits but I think sadly we can't materially change the feature set on the lightning crate just cause we have no-std-specific dependencies, which Cargo.toml can't represent. I think with this PR as-is we can cut an 0.0.124 beta.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 31c4206 to 3cc9c8eCompareAugust 17, 2024 21:53
@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from 3cc9c8e to af6c226CompareAugust 17, 2024 22:24
@tnull

Copy link
Copy Markdown
Contributor

but it may be a bit more annoying for you cause you'll need to manually patch all the LDK crates if you're working on a project that depends on LDK and you want to point to a local lightning. I can walk it back and do it all via path if you feel strongly, but rust-bitcoin is doing it this way it it seemed a bit nicer than the current half-fixes we have in-tree.

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command as I frequently do so for lightning-liquidity and LDK Node, but reverting to the way it has been (i.e., having to patch all of them individually) isn't the end of the world.

@tnull

tnull commented Aug 18, 2024

Copy link
Copy Markdown
Contributor

CI is unhappy as you seem to have introduced a bunch of (mostly unused import) warnings.

Feel free to squash the fixup.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from 3adf57d to fe79cf0CompareAugust 18, 2024 13:42
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Mh, yeah, that's what I thought. It would def. make my life easier if we'd find a solution that would allow me to patch the whole workspace with a single command

Okay, moved them all to paths in every Cargo.toml. I'll make my life easier for bindings, too, just a lot more verbose.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch 2 times, most recently from fa79998 to a07ec51CompareAugust 18, 2024 15:35
Comment threadci/ci-tests.sh Outdated
done

for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
for DIR in lightning lightning-rapid-gossip-sync; do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we need a separate loop for the bindings tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

Grouping by RUSTFLAGS avoids rebuilding the dependencies again and again.

@Kixunil

Copy link
Copy Markdown
Contributor

FYI regarding [patch] we use it because we have a "dependency hole". secp256k1 is not in our git tree so if we didn't use [patch] we would have no way to tell it to use the new version of hashes which it optionally depends on. [patch] solves this well. If you don't have such problem then it's not clear to me which approach is better.

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think.

Feel free to squash the fixups. I don't feel too strongly about patch vs. paths, so feel free to go either way.

@TheBlueMatt
TheBlueMattforce-pushed the 2024-08-feature-cleanup-1 branch from a07ec51 to 983feafCompareAugust 19, 2024 13:59
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Squashed without further changes, gonna keep paths everywhere.

tnull
tnull previously approved these changes Aug 19, 2024
When we reach EOF we may return a full buffer when we should return
an empty one.
`rust-bitcoin` doesn't ever actually *use* its `BufRead`
requirement when deserializing objects, and forcing it is somewhat
inefficient, so we optimize the only (actual) case here by passing
reads straight through to the backing stream.
In order to ensure our crates depend on the workspace copies of
each other in test builds we need to override the crates.io
dependency with a local `path`.
We can do this in one of two ways - either specify the `path` in
the dependency listing in each crate's `Cargo.toml` or use the
workspace `Cargo.toml` to `patch` all dependencies. The first is
tedious while the second lets us have it all in one place. However,
the second option does break `cargo *` in individual crate
directories (forcing the use of `cargo -p crate *` instead) and
makes it rather difficult to depend on local versions of workspace
crates.
Thus, here we drop the `patch.crates-io` from our top-level
`Cargo.toml` entirely.
Still, we do update the `ci/ci-tests.sh` script here to use
`cargo -p crate` instead of switching to each crate's directory as
it allows `cargo` to use a shared `target` and may speed up tests.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes the first step by removing the `no-std` feature entirely
from the `lightning-background-processor` crate and removing most
feature implications on dependencies from the remaining `std`
feature.
It also addresses a CI oversight where we were not testing
`lightning-background-processor` without the `std` feature in CI at
all.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-invoice` crate and removing all feature
implications on dependencies from the remaining `std` feature.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes another step by removing the `no-std` feature entirely
from the `lightning-rapid-gossip-sync` crate and removing all
feature implications on dependencies from the remaining `std`
feature.
This exists just for tests, so there's no reason for it to be
publicly visible.
Now that we don't have to have everything in our entire ecosystem
use the same `std`/`no-std` feature combinations we should start by
untangling our own features a bit.
This takes one last step, removing the implications of the `std`
feature from the `lightning` crate.
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rebased (and fixed the commit message to note that we are doing the path option not the patch one).

@arik-soarik-so left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm!

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, a little bit not sure about the rust-bitcoin (rust-bitcoin/rust-bitcoin#3173) but I think I just need to read the rust-bitcoin PR in deep

@TheBlueMatt
TheBlueMatt merged commit 3715410 into lightningdevkit:mainAug 19, 2024
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.

OffersMessageHandler impl for ChannelManager accesses time

5 participants

@TheBlueMatt@tnull@Kixunil@arik-so@vincenzopalazzo