Skip to content

[macro] Support deriving certain traits via macro #2418

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

Merged
merged 1 commit into from
Mar 6, 2025

Conversation

joshlf
Copy link
Member

@joshlf joshlf commented Mar 6, 2025

This is intended to specifically support the cryptocorrosion project's
ppv-lite86 and groestl-aesni crates. Currently, these crates rely on
zerocopy's derive feature, which has caused long build times for some
dependents such as in [1].

The added macro is #[doc(hidden)], and is only designed to support
ppv-lite86 and groestl-aesni. No semver stability guarantees are made
except that we will support the use cases of those specific crates.

[1] rust-random/rand#1574 (comment)


This PR is on branch cryptocorrosion-macro.

joshlf added a commit to joshlf/cryptocorrosion that referenced this pull request Mar 6, 2025
This commit disables zerocopy's `derive` feature, replacing uses of
custom derives with uses of a newly-introducedi [1] `macro_rules!` macro
which is specifically added to support the ppv-lite86 and groestl-aesni
crates. This allows us to no longer take a dependency on any proc macro
derive, and thus to no longer take dependencies on expensive-to-compile
crates like syn.

[1] google/zerocopy#2418
@codecov-commenter
Copy link

codecov-commenter commented Mar 6, 2025

Codecov Report

Attention: Patch coverage is 77.20588% with 31 lines in your changes missing coverage. Please review.

Project coverage is 87.21%. Comparing base (f5cbd3e) to head (59583e3).

Files with missing lines Patch % Lines
src/macros.rs 77.20% 31 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2418      +/-   ##
==========================================
- Coverage   87.43%   87.21%   -0.22%     
==========================================
  Files          17       17              
  Lines        6254     6390     +136     
==========================================
+ Hits         5468     5573     +105     
- Misses        786      817      +31     

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

🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@joshlf joshlf force-pushed the I6021fbdc0d1e1e30549da129128e5bc002adcee7 branch 2 times, most recently from 376dbbf to 828752f Compare March 6, 2025 18:41
@joshlf joshlf requested a review from jswrenn March 6, 2025 18:43
@joshlf joshlf enabled auto-merge March 6, 2025 18:43
@joshlf joshlf force-pushed the I6021fbdc0d1e1e30549da129128e5bc002adcee7 branch 2 times, most recently from 858fbe8 to a8f814c Compare March 6, 2025 18:51
@joshlf joshlf force-pushed the I6021fbdc0d1e1e30549da129128e5bc002adcee7 branch 4 times, most recently from 183db55 to 9dd5e97 Compare March 6, 2025 19:13
This is intended to specifically support the cryptocorrosion project's
ppv-lite86 and groestl-aesni crates. Currently, these crates rely on
zerocopy's `derive` feature, which has caused long build times for some
dependents such as in [1].

The added macro is `#[doc(hidden)]`, and is only designed to support
ppv-lite86 and groestl-aesni. No semver stability guarantees are made
except that we will support the use cases of those specific crates.

[1] rust-random/rand#1574 (comment)

gherrit-pr-id: I6021fbdc0d1e1e30549da129128e5bc002adcee7
@joshlf joshlf force-pushed the I6021fbdc0d1e1e30549da129128e5bc002adcee7 branch from 9dd5e97 to 59583e3 Compare March 6, 2025 19:16
@joshlf joshlf added this pull request to the merge queue Mar 6, 2025
Merged via the queue into main with commit b55561d Mar 6, 2025
87 checks passed
@joshlf joshlf deleted the I6021fbdc0d1e1e30549da129128e5bc002adcee7 branch March 6, 2025 19:50
joshlf added a commit to joshlf/cryptocorrosion that referenced this pull request Mar 6, 2025
This commit disables zerocopy's `derive` feature, replacing uses of
custom derives with uses of a newly-introducedi [1] `macro_rules!` macro
which is specifically added to support the ppv-lite86 and groestl-aesni
crates. This allows us to no longer take a dependency on any proc macro
derive, and thus to no longer take dependencies on expensive-to-compile
crates like syn.

[1] google/zerocopy#2418
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