Discuss the Rust version policy of zebra #7979
Replies: 7 comments 8 replies
-
Can you give an example of an ECC dependency and its Rust version restrictions? |
Beta Was this translation helpful? Give feedback.
This comment has been hidden.
This comment has been hidden.
-
Here is an example: zcash/librustzcash@main...oxarbitrage:librustzcash:nu6-test The QEdit team also bringed up this related to the orchard crate: https://github.com/zcash/orchard/blob/main/Cargo.toml#L12 It is a bit annoying switching rust versions around when working with zebra and ECC crates at the same time, not sure if there is much we can do. |
Beta Was this translation helpful? Give feedback.
-
https://github.com/zcash/orchard/blob/main/rust-toolchain.toml#L2 |
Beta Was this translation helpful? Give feedback.
-
As pointed out in comments above, none of the crates maintained by ECC are Rust-version-specific. (An example of a Rust-version-specific crate would be one that requires a specific version of nightly Rust; all of the relevant crates here work on stable Rust.) The As for how we choose an MSRV, we generally pick a single MSRV for an entire repository (for development ease). We don't bother bumping MSRV unless we need a feature that a newer Rust version provides, or if a necessary non-dev dependency bumps its MSRV. The latter we are now working around by checking in Technically to fully support every Rust version between the MSRV and latest stable, we'd need CI to test every possible Rust version in between. That obviously doesn't scale, so what we do instead in our
|
Beta Was this translation helpful? Give feedback.
-
Hi everyone, Thank you for initiating this interesting discussion and sharing your insights. I would like to contribute by presenting another example of the Rust version conflict problem, which we have periodically encountered at QEDIT. The following example illustrates a recent incident. I apologize for the lengthy explanation. Let's consider the latest version of the original Orchard crate (0.6.0). It has a dependency crate called
Attempting to build the latest Orchard version from the GitHub repository (https://github.com/zcash/orchard) using
The issue lies in the fact that This discrepancy is understandable; Orchard is explicitly limited to Rust 1.65.0, but Now, attempting to build the latest version of Zebra's This leads to two confusions: FirstlyThe problem with SecondlyIn our fork of However, integrating this solution with Zebra introduced a new challenge. While the For now, we've addressed this conflict in our Zebra fork by pinning For me finding a universal solution remains a challenge. One alternative could be committing the https://blog.rust-lang.org/2023/08/29/committing-lockfiles.html Committing
|
Beta Was this translation helpful? Give feedback.
-
Thank you all for helping each other and sharing experiences. I feel that there is some good content here, we might want to create a document where the differences between the rust version policy of Zebra and ECC crates are explained. Do we think this could have value for new and current participants ?
We should wait for this before taking any action, thank you @str4d . |
Beta Was this translation helpful? Give feedback.
-
Opening a discussion to discuss Zebra rust version policy, specifically when playing together with ECC dependencies which are rust version specific.
Please add your experience, ideas, etc.
Current Policy
https://github.com/ZcashFoundation/zebra/blob/main/README.md#building-zebra
Beta Was this translation helpful? Give feedback.
All reactions