0xPolygonZero / plonky

Recursive SNARKs based on Plonk and Halo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

I get errors when I run the tests

Federico2014 opened this issue · comments

I run the test_proof_trivial_recursive() test on the master branch, but get syntactic errors as follows:

cargo test --color=always --no-run --package plonky --test prove_and_verify_recursive test_proof_trivial_recursive -- --exact
Compiling plonky v0.1.0
warning: unused import: std::collections::HashSet
--> src/field/field.rs:3:5
|
3 | use std::collections::HashSet;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[warn(unused_imports)] on by default

error[E0277]: arrays only have std trait implementations for lengths 0..=32
--> src/bigint/bigint_arithmetic.rs:53:50
|
53 | debug_assert!(!borrow, "a < b: {:?} < {:?}", a, b);
| ^ the trait std::array::LengthAtMost32 is not implemented for [u64; N]
|
= note: required because of the requirements on the impl of std::fmt::Debug for [u64; N]
= note: required by std::fmt::Debug::fmt
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: arrays only have std trait implementations for lengths 0..=32
--> src/bigint/bigint_arithmetic.rs:53:53
|
53 | debug_assert!(!borrow, "a < b: {:?} < {:?}", a, b);
| ^ the trait std::array::LengthAtMost32 is not implemented for [u64; N]
|
= note: required because of the requirements on the impl of std::fmt::Debug for [u64; N]
= note: required by std::fmt::Debug::fmt
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound &mut [{integer}; N]: std::iter::IntoIterator is not satisfied
--> src/bigint/bigint_arithmetic.rs:108:23
|
108 | for limb_i in &mut limbs {
| ^^^^^^^^^^ the trait std::iter::IntoIterator is not implemented for &mut [{integer}; N]
|
= help: the following implementations were found:
<&'a [T; N] as std::iter::IntoIterator>
<&'a [T] as std::iter::IntoIterator>
<&'a mut [T; N] as std::iter::IntoIterator>
<&'a mut [T] as std::iter::IntoIterator>
= note: required by std::iter::IntoIterator::into_iter

error[E0369]: binary operation != cannot be applied to type [u64; N]
--> src/bigint/bigint_inverse.rs:18:13
|
18 | while u != one && v != one {
| - ^^ --- [u64; N]
| |
| [u64; N]

error[E0369]: binary operation != cannot be applied to type [u64; N]
--> src/bigint/bigint_inverse.rs:18:25
|
18 | while u != one && v != one {
| - ^^ --- [u64; N]
| |
| [u64; N]

error[E0369]: binary operation == cannot be applied to type [u64; N]
--> src/bigint/bigint_inverse.rs:50:10
|
50 | if u == one {
| - ^^ --- [u64; N]
| |
| [u64; N]

error: aborting due to 6 previous errors; 1 warning emitted

Some errors have detailed explanations: E0277, E0369.
For more information about an error, try rustc --explain E0277.
error: could not compile plonky.

Hi, it looks like you're using the stable compiler? We currently rely on nightly for const generics.

I noticed that min_const_generics was stabilized recently (rust-lang/rust#79135), though, so maybe we can get back on stable. If not, I'll update the readme to mention nightly.

Our recursion circuit has a few known bugs (which we're working on), by the way; there may be runtime errors if generating recursive proofs. But it should at least compile on nightly.

Hi, it looks like you're using the stable compiler? We currently rely on nightly for const generics.

I noticed that min_const_generics was stabilized recently (rust-lang/rust#79135), though, so maybe we can get back on stable. If not, I'll update the readme to mention nightly.

Our recursion circuit has a few known bugs (which we're working on), by the way; there may be runtime errors if generating recursive proofs. But it should at least compile on nightly.

After I update the compiler to the lastest nightly version, it can compile now, thank you very much