diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4bc6019..d2ef470 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,41 +3,7 @@ name: CI checks on: [push, pull_request] jobs: - - lint: - name: Lint - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.45.2 - override: true - - # Build the code before running cargo fmt - - name: cargo build - uses: actions-rs/cargo@v1 - with: - command: build - args: --all - - # Ensure all code has been formatted with rustfmt - - run: rustup component add rustfmt - - name: Check formatting - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all -- --check --color always - - # Build benchmarks to prevent bitrot - - name: Build benchmarks - uses: actions-rs/cargo@v1 - with: - command: build - args: --all --benches - - build_and_test: + test: name: Test on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: @@ -47,18 +13,135 @@ jobs: os: [ubuntu-latest] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: 1.45.2 override: true - - name: Build tests - uses: actions-rs/cargo@v1 - with: - command: build - args: --verbose --release --all --tests --all-features - name: Run tests uses: actions-rs/cargo@v1 with: command: test - args: --verbose --release --all + args: --verbose --release --all --all-features + + bitrot: + name: Bitrot check + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: 1.45.2 + override: true + # Build benchmarks to prevent bitrot + - name: Build benchmarks + uses: actions-rs/cargo@v1 + with: + command: build + args: --all --benches --all-features + + clippy: + name: Clippy (1.45.2) + timeout-minutes: 30 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: 1.45.2 + components: clippy + override: true + - name: Run clippy + uses: actions-rs/clippy-check@v1 + with: + name: Clippy (1.45.2) + token: ${{ secrets.GITHUB_TOKEN }} + args: --all-features --all-targets -- -D warnings + + clippy-nightly: + name: Clippy (nightly) + timeout-minutes: 30 + runs-on: ubuntu-latest + continue-on-error: true + + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + components: clippy + override: true + - name: Run Clippy (nightly) + uses: actions-rs/clippy-check@v1 + continue-on-error: true + with: + name: Clippy (nightly) + token: ${{ secrets.GITHUB_TOKEN }} + args: --all-features --all-targets -- -W clippy::all + + codecov: + name: Code coverage + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + # Use stable for this to ensure that cargo-tarpaulin can be built. + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Install cargo-tarpaulin + uses: actions-rs/cargo@v1 + with: + command: install + args: cargo-tarpaulin + - name: Generate coverage report + uses: actions-rs/cargo@v1 + with: + command: tarpaulin + args: --all-features --timeout 600 --out Xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v1 + with: + token: ${{secrets.CODECOV_TOKEN}} + + doc-links: + name: Intra-doc links + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + override: true + - name: cargo fetch + uses: actions-rs/cargo@v1 + with: + command: fetch + + # Ensure intra-documentation links all resolve correctly + # Requires #![deny(intra_doc_link_resolution_failure)] in crates. + - name: Check intra-doc links + uses: actions-rs/cargo@v1 + with: + command: doc + args: --all --document-private-items + + fmt: + name: Rustfmt + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - run: rustup component add rustfmt + - uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check diff --git a/src/plonk/prover.rs b/src/plonk/prover.rs index d13dd7a..020c5b2 100644 --- a/src/plonk/prover.rs +++ b/src/plonk/prover.rs @@ -521,7 +521,7 @@ impl Proof { { instances.push(ProverQuery { point: x_3, - poly: poly, + poly, blind: *blind, eval: *eval, }); @@ -536,7 +536,7 @@ impl Proof { { instances.push(ProverQuery { point: x_3, - poly: poly, + poly, blind: Blind::default(), eval: *eval, }); @@ -551,7 +551,7 @@ impl Proof { { instances.push(ProverQuery { point: x_3_inv, - poly: poly, + poly, blind: *blind, eval: *eval, }); diff --git a/src/plonk/verifier.rs b/src/plonk/verifier.rs index 0ea391e..e6dec8e 100644 --- a/src/plonk/verifier.rs +++ b/src/plonk/verifier.rs @@ -281,7 +281,7 @@ impl<'a, C: CurveAffine> Proof { .chain( self.permutation_product_evals .iter() - .map(|product_eval| l_0 * &(C::Scalar::one() - &product_eval)), + .map(|product_eval| l_0 * &(C::Scalar::one() - product_eval)), ) // z(X) \prod (p(X) + \beta s_i(X) + \gamma) // - z(omega^{-1} X) \prod (p(X) + \delta^i \beta X + \gamma) diff --git a/src/poly/commitment/msm.rs b/src/poly/commitment/msm.rs index 7e04d92..42e6b87 100644 --- a/src/poly/commitment/msm.rs +++ b/src/poly/commitment/msm.rs @@ -55,7 +55,7 @@ impl<'a, C: CurveAffine> MSM<'a, C> { assert_eq!(scalars.len(), self.params.n as usize); if let Some(g_scalars) = &mut self.g_scalars { for (g_scalar, scalar) in g_scalars.iter_mut().zip(scalars.iter()) { - *g_scalar += &scalar; + *g_scalar += scalar; } } else { self.g_scalars = Some(scalars.to_vec()); diff --git a/src/poly/multiopen/verifier.rs b/src/poly/multiopen/verifier.rs index f674e31..bcdc30a 100644 --- a/src/poly/multiopen/verifier.rs +++ b/src/poly/multiopen/verifier.rs @@ -101,7 +101,7 @@ impl Proof { let r_poly = lagrange_interpolate(points, evals); let r_eval = eval_polynomial(&r_poly, x_6); let eval = points.iter().fold(*proof_eval - &r_eval, |eval, point| { - eval * &(x_6 - &point).invert().unwrap() + eval * &(x_6 - point).invert().unwrap() }); msm_eval * &x_5 + &eval }, @@ -119,7 +119,7 @@ impl Proof { |(mut commitment_msm, msm_eval), (q_commitment, q_eval)| { commitment_msm.scale(x_7); commitment_msm.add_msm(&q_commitment); - (commitment_msm, msm_eval * &x_7 + &q_eval) + (commitment_msm, msm_eval * &x_7 + q_eval) }, );