Skip to content

chore: mark arkworks wrappers repr(transparent)#20

Merged
0xAndoroid merged 1 commit into
mainfrom
chore/repr-transparent-ark-wrappers
Apr 27, 2026
Merged

chore: mark arkworks wrappers repr(transparent)#20
0xAndoroid merged 1 commit into
mainfrom
chore/repr-transparent-ark-wrappers

Conversation

@0xAndoroid

Copy link
Copy Markdown
Collaborator

Summary

  • Add #[repr(transparent)] to all single-field arkworks wrapper types so they share memory layout with the inner type.
  • Enables safe transmute, FFI compatibility, and zero-cost slice-of-wrapper ↔ slice-of-inner conversions.

Changes

  • src/backends/arkworks/ark_field.rs — ArkFr
  • src/backends/arkworks/ark_group.rs — ArkG1, ArkG2, ArkGT
  • src/backends/arkworks/ark_setup.rs — ArkworksProverSetup, ArkworksVerifierSetup

Multi-field structs (Blake2bTranscript, ArkworksPolynomial, PreparedCache) and unit structs (BN254, G1Routines, G2Routines) skipped — repr(transparent) requires exactly one non-zero-sized field.

Testing

CI covers this (build + clippy already verified locally).

Single-field tuple wrappers around arkworks types now have identical
memory layout to the inner type, enabling safe transmute and FFI use.
@0xAndoroid 0xAndoroid merged commit cdbe029 into main Apr 27, 2026
9 checks passed
@0xAndoroid 0xAndoroid deleted the chore/repr-transparent-ark-wrappers branch April 29, 2026 20:44
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.

1 participant