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

Fix for no_std builds #5

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Conversation

jeddenlea
Copy link

I need to include this crate in a no_std build, by way of the zkryptium crate. But, this crate fails to build with --no-default-features -F alloc -F groups, because the cdylib target is requiring an allocator and panic_handler.

Cargo unfortunately does not seem to offer a way to override this attribute of a crate's Cargo.toml file. Unfortunately, while it may appear that crate_type can be used as a conditional attribute within the source (https://doc.rust-lang.org/reference/linkage.html), this feature is actually deprecated rust-lang/rust#91632.

I can only confirm that this tweak fixes my problem, but I am not sure if it breaks the 32-bit target you were addressing in f4a7732. With this change, I can cargo build with wasm32-unknown-unknown and wasm32-wasip1, but I'm not sure that's enough. Can you please give it a try? I'm happy to adjust this as needed.

"64" isn't a valid `target_arch`.
With the `cdylib` crate type imposed by `Cargo.toml`, it's not possible
to include this crate into any others being used in a `no_std` context.
jeddenlea added a commit to jeddenlea/zkryptium that referenced this pull request Oct 3, 2024
We need to be able to use this crate in a `no_std` context.
Additionally, we cannot make use of the `sha2` or `sha3` crates.
This commit adds a couple of features. `std`, which is enabled by
default`, must be specified in order to use `write_keypair_to_file`.
This was actually the only real dependency on `std`.

I've split the `bbsplus` feature up. `min_bbs` enables the algorithms,
but does not actually implement either the Sha256 or Shake256 schemes.

Just as written, this cannot yet compile into a `no_std` context because
bls12_381_plus's no_std support is broken, but I'm trying to resolve
that in mikelodder7/bls12_381_plus#5.

I've also bumped group to 0.13, which should be nonbreaking because
bls12_381_plus 0.8.18 already requires it.
jeddenlea added a commit to jeddenlea/zkryptium that referenced this pull request Oct 3, 2024
We need to be able to use this crate in a `no_std` context.
Additionally, we cannot make use of the `sha2` or `sha3` crates.
This commit adds a couple of features:

`std`, which is enabled by default, must be specified in order to use
`write_keypair_to_file`.  This was actually the only real dependency on
`std` outside of tests.

I've split the `bbsplus` feature up. `min_bbs` enables the algorithms,
but does not actually implement either the Sha256 or Shake256 schemes.

Just as written, this cannot yet compile into a `no_std` context because
bls12_381_plus's no_std support is broken, but I'm trying to resolve
that in mikelodder7/bls12_381_plus#5.

I've also bumped group to 0.13, which should be nonbreaking because
bls12_381_plus 0.8.18 already requires it.
jeddenlea added a commit to jeddenlea/zkryptium that referenced this pull request Oct 3, 2024
We need to be able to use this crate in a `no_std` context.
Additionally, we cannot make use of the `sha2` or `sha3` crates.
This commit adds a couple of features:

`std`, which is enabled by default, must be specified in order to use
`write_keypair_to_file`.  This was actually the only real dependency on
`std` outside of tests.

I've split the `bbsplus` feature up. `min_bbs` enables the algorithms,
but does not actually implement either the Sha256 or Shake256 schemes.

Just as written, this cannot yet compile into a `no_std` context because
bls12_381_plus's no_std support is broken, but I'm trying to resolve
that in mikelodder7/bls12_381_plus#5.

I've also bumped group to 0.13, which should be nonbreaking because
bls12_381_plus 0.8.18 already requires it.
jeddenlea added a commit to jeddenlea/zkryptium that referenced this pull request Oct 3, 2024
We need to be able to use this crate in a `no_std` context.
Additionally, we cannot make use of the `sha2` or `sha3` crates.
This commit adds a couple of features:

`std`, which is enabled by default, must be specified in order to use
`write_keypair_to_file`.  This was actually the only real dependency on
`std` outside of tests.

I've split the `bbsplus` feature up. `min_bbs` enables the algorithms,
but does not actually implement either the Sha256 or Shake256 schemes.

Just as written, this cannot yet compile into a `no_std` context because
bls12_381_plus's no_std support is broken, but I'm trying to resolve
that in mikelodder7/bls12_381_plus#5.

I've also bumped group to 0.13, which should be nonbreaking because
bls12_381_plus 0.8.18 already requires it.
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