Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump MSRV to 1.48 #595

Merged
merged 4 commits into from
Mar 31, 2023
Merged

Bump MSRV to 1.48 #595

merged 4 commits into from
Mar 31, 2023

Conversation

tcharding
Copy link
Member

@tcharding tcharding commented Mar 30, 2023

As per ecosystem wide change, bump the MSRV of both crates to 1.48

Patch 1 is a typo fix to the changelog, I don't see changelogs cached on crates.io in any way so this fix should be able to quietly go in.

Note before this is applied there is no mention of the MSRV in secp256k1-sys, was that intentional? If not, with this applied, we have a mention in the readme.

CI needs some more fixes (wasm job) but because patching CI often leads to me doing 300 pushes I'm leaving it to a separate PR.

We have a typo in the release date of the cahngelogs, release was in
March not in the mythical 13th month.
We are upgrading the MSRV across the whole Rust Bitcoin ecosystem.

Update the README, clippy config file, and CI to use the new MSRV.
Changes to use the new MSRV will be done later.

Add mention of MSRV to `secp256k1-sys`, add unreleased section to both
changelogs.
Now that we have Rust 1.48 as the MSRV we no longer need the custom
implementations of `PartialEq`, `Eq`, `PartialOrd`, `Ord`, and `Hash`.
We can just let users of the `impl_array_newtype` macro derive these
traits if they want them.

Remove the custom implementations and add derives to our two users of
the macro.
Note: Only effects code when fuzzing is enabled, as such does not
include a mention in the changelog.

Now that we have Rust 1.48 as the MSRV we no longer need the custom
implementations of `PartialEq`, `Eq`, `PartialOrd`, `Ord`, and `Hash`.
We can just let users of the `impl_array_newtype` macro derive these
traits if they want them.

Remove the custom implementations and add derives to our two users of
the macro.
Copy link
Member

@apoelstra apoelstra left a comment

Choose a reason for hiding this comment

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

ACK 7bba2bc

@apoelstra apoelstra merged commit 1ad3107 into rust-bitcoin:master Mar 31, 2023
@Kixunil
Copy link
Collaborator

Kixunil commented Mar 31, 2023

I'm now tempted to rewrite libsecp256k1 to Rust just to implement const fn 😆

@apoelstra
Copy link
Member

So, in seriousness we would like to write some of the "non-crypto" parts of the library in Rust ... in particular serialization and deserialization of keys and signatures. This would let us do a lot of things in rust-bitcoin without ever crossing the FFI boundary, and would let us Miri-test stuff.

Unfortunately this is quite nontrivial because deserialization of compressed points requires doing a square root in the field. And this is sensitive enough that I don't think we could reasonably ask a summer-of-bitcoin student to do it. (Though maybe next year I'll take some time and try to carefully spec out such a project ... along with rewritting the fake-crypto fuzz harness.)

@Kixunil
Copy link
Collaborator

Kixunil commented Mar 31, 2023

Could we repurpose some of my code for this?

@apoelstra
Copy link
Member

Yep, maybe -- though it looks like it's dependent on the bigint crate for all the hard stuff.

@Kixunil
Copy link
Collaborator

Kixunil commented Mar 31, 2023

Yeah, I would love to avoid bigint. It's quite low-quality.

@tcharding tcharding deleted the 03-31-bump-msrv branch April 18, 2023 06:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants