minicbor-lease adapter for encoding straight into a lease#2164
Merged
minicbor-lease adapter for encoding straight into a lease#2164
minicbor-lease adapter for encoding straight into a lease#2164Conversation
Member
Author
Collaborator
|
I'd vote to keep it separate! Review to come (either this afternoon or Monday) |
mkeeter
reviewed
Jul 18, 2025
mkeeter
reviewed
Jul 18, 2025
mkeeter
reviewed
Jul 18, 2025
mkeeter
reviewed
Jul 18, 2025
Member
Author
|
@mkeeter opened an upstream issue to make the minicbor API less annoying: twittner/minicbor#36 |
Co-authored-by: Matt Keeter <matt@oxide.computer>
69f16ef to
70e0623
Compare
hawkw
commented
Aug 28, 2025
Comment on lines
+166
to
+168
| [patch.crates-io] | ||
| # See https://gitlab.com/robigalia/ssmarshal/-/merge_requests/2 | ||
| ssmarshal = { git = "https://gitlab.com/de-vri-es/ssmarshal", rev = "10e90cbe389c8f07c52815857551a051946881ab" } |
Member
Author
There was a problem hiding this comment.
This is necessary due to ssmarshal no longer compiling with Rust 2024, as when the edition is Rust 2024, serde will require core::error::Error implementations for error types, and ssmarshal doesn't have those.
Since the last commit to ssmarshal's main branch was 8 years ago, I'm not convinced this PR gets merged any time soon. It would probably be worth getting rid of our ssmarshal deps at some point, since Hubpack is basically the same thing but more featureful...
mkeeter
reviewed
Aug 28, 2025
mkeeter
reviewed
Aug 28, 2025
mkeeter
approved these changes
Aug 29, 2025
rusty1968
pushed a commit
to rusty1968/hubris
that referenced
this pull request
Sep 17, 2025
…puter#2164) Based on [a suggestion][1] from @mkeeter, this branch adds an adapter that implements `minicbor::encode::write::Write` for a cursor into a writable lease. This lets us avoid double-buffering in the `read_ereports` path, where we would previously encode each ereport into the receive buffer, and then copy the contents of that into the lease if there is space for it. The new approach avoids the memcpy, and also doesn't encode the ereport in the case where there isn't space left for it. I implemented the lease-writer adapter thing in a separate `minicbor-lease` crate, as I was hoping it would be useful elsewhere...but I'm not actually sure if it will be, now that I think of it: the IPC for delivering an ereport to packrat leases the data _from_ the caller, so callers will just encode into a normal buffer they own. Ah well. [1]: oxidecomputer#2126 (comment)
clockdomain
pushed a commit
to clockdomain/hubris
that referenced
this pull request
Sep 26, 2025
…puter#2164) Based on [a suggestion][1] from @mkeeter, this branch adds an adapter that implements `minicbor::encode::write::Write` for a cursor into a writable lease. This lets us avoid double-buffering in the `read_ereports` path, where we would previously encode each ereport into the receive buffer, and then copy the contents of that into the lease if there is space for it. The new approach avoids the memcpy, and also doesn't encode the ereport in the case where there isn't space left for it. I implemented the lease-writer adapter thing in a separate `minicbor-lease` crate, as I was hoping it would be useful elsewhere...but I'm not actually sure if it will be, now that I think of it: the IPC for delivering an ereport to packrat leases the data _from_ the caller, so callers will just encode into a normal buffer they own. Ah well. [1]: oxidecomputer#2126 (comment)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Based on a suggestion from @mkeeter, this branch adds an adapter that implements
minicbor::encode::write::Writefor a cursor into a writable lease. This lets us avoid double-buffering in theread_ereportspath, where we would previously encode each ereport into the receive buffer, and then copy the contents of that into the lease if there is space for it. The new approach avoids the memcpy, and also doesn't encode the ereport in the case where there isn't space left for it.I implemented the lease-writer adapter thing in a separate
minicbor-leasecrate, as I was hoping it would be useful elsewhere...but I'm not actually sure if it will be, now that I think of it: the IPC for delivering an ereport to packrat leases the data from the caller, so callers will just encode into a normal buffer they own. Ah well.