plonky2
plonky2 copied to clipboard
Remove unstable features
We should work towards making Plonky2 compile on stable.
Unstable features that need to either be removed from Plonky2 or that need to be stabilized in Rust:
- [x]
asm_sym
Used in oneasm!
block but I can easily remove it and just pass a pointer. - [x]
generic_const_exprs
Used byPackedField
(infrom_arr
/to_arr
); these methods can be removed, although having to do so will make me curse Rust's half-baked type system. I think it's also used in theplonky2
crate, but I'm not sure where. - [ ]
specialization
There are two traits that use this:Square
andPackable
. The default implementation of the former is just for convenience and can be removed. The latter has a default implementation so Rust can prove that everyField
isPackable
. We can remove the default impl if we merge both traits. - [x]
stdsimd
Used for Neon support in Poseidon. Also used for packed AVX-512 arithmetic in #400. ARM Poseidon can be done in pureasm
, removing the need for intrinsics. We can replace AVX-512 with AVX2 when compiling on stable, at a performance penalty.
Removed the generic_const_exprs
feature from the field
crate in #1020 and from the plonky2
crate in #1024.
Would the EVM crate also be aimed for compiling on stable? If so, we'd need to remove the let_chains
and generic_const_exprs
features.
The first one would be easy to do, and perf. penalty (if any) by the two nested loops wouldn't be an issue as this is only used for building the Kernel. Removing the latter would be more painful though.
I'm also assuming here that the same goal is desired in starky
? But that means that Stark::COLUMNS
and Stark::PUBLIC_INPUTS
have to be removed.