PackageTrack
Sign in Get early access

ark-r1cs-std

A standard library for constraint system gadgets

0.6.0 8.4M downloads/mo #3425 most downloaded on crates.io arkworks-rs/r1cs-std

What this package is like to depend on

Last release 3 months ago

26 Apr 2026

Release timing varies

gaps range from 3 weeks to 1.5 years

Most releases are documented

notes for 5 of 6 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

10 releases · first in 2021

1 release in the last 12 months

see the full history below

Release timeline

10 releases · Mar 2021 to Apr 2026
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 10
  1. 0.6.0 26 Apr 2026

    Nothing published for this version

  2. 0.5.0 28 Oct 2024
    Release notes

    Breaking changes

    • #121
      • Refactor UInt{8,16,64,128} into one struct UInt.
      • Remove bits module.
      • Use std::ops traits for UInt and Boolean.
    • #134 Add Mul<NonnativeFieldVar> bounds and impls for CurveVar.
    • #135
      • Rename NonNativeFieldVar to EmulatedFpVar.
      • Rename fields::nonnative to fields::emulated_fp.
      • Rename fields::nonnative::{Allocated}NonNativeMulResultVar to fields::emulated_fp::{Allocated}MulResultVar.
    • #136
      • Rename ToBytesGadget::to_{non_unique_}bytesToBytesGadget::to_{non_unique_}bytes_in_le.

    Features

    • #136
      • Add {BitAnd,BitOr,BitXor,BitAndAssign,BitOrAssign,BitXorAssign}<T> for UInt<N, T, F>.
      • Add UInt::rotate_{left,right}_in_place.
      • Add {Boolean,UInt}::not_in_place.
      • Add UInt::{from_bytes_le, from_bytes_be, to_bytes_be}.
    • #143 Add AllocVar::new_variable_with_inferred_mode.
    • #144 Add ToConstraintFieldGadget bounds to CurveVar and FieldVar
    • #190 Add affine_xy, affine_x, affine_y functions to CurveVar

    Improvements

    Bug Fixes

    • #145
      • Avoid deeply nested LinearCombinations in EvaluationsVar::interpolate_and_evaluate to fix the stack overflow issue when calling .value() on the evaluation result.
    • #148
      • Fix panic issues during in-circuit polynomial interpolation.
    Open source →
  3. 0.5.0-alpha.0 20 Jun 2024 pre-release
    Release notes
    • Work

    • Tweak

    • Fmt

    • Work

    • Format + typo fixes

    • no-std fix

    Open source →
  4. 0.4.0 17 Jan 2023
    Release notes
    • #117 Fix result of precomputed_base_scalar_mul_le to not discard previous value.
    • #124 Fix scalar_mul_le constraints unsatisfiability when short Weierstrass point is zero.
    • #127 Convert NonNativeFieldVar constants to little-endian bytes instead of big-endian (ToBytesGadget).
    • #133 Save 1 constraint in FpVar::{is_eq, is_neq} by removing the unnecessary booleanity check.

    Breaking changes

    • #86 Change the API for domains for coset.

    Features

    • #84 Expose short_weierstrass::non_zero_affine module and implement EqGadget for NonZeroAffineVar.
    • #79 Move NonNativeFieldVar from ark-nonnative to ark-r1cs-std.
    • #76 Implement ToBytesGadget for Vec<UInt8>.
    • nonnative/#45 Add new_witness_with_le_bits which returns the bits used during variable allocation.

    Improvements

    Bug Fixes

    • #101 Fix is_zero for twisted Edwards curves.
    • #86 Make result of query_position_to_coset consistent with ark-ldt.
    • #77 Fix BLS12 G2PreparedGadget's AllocVar when G2 uses a divisive twist.
    Open source →
  5. 0.4.0-alpha.3 28 Dec 2022 pre-release
    Release notes

    chore: Release ark-r1cs-std version 0.4.0-alpha.3

    Open source →
  6. 0.4.0-alpha.2 28 Dec 2022 pre-release
    Release notes

    chore: Release ark-r1cs-std version 0.4.0-alpha.2

    Open source →
  7. 0.4.0-alpha.0 19 Nov 2022 pre-release

    Nothing published for this version

  8. 0.3.1 07 Jul 2021
    Release notes

    Features

    • #71 Implement the Sum trait for FpVar.
    • #75 Introduce mul_by_inverse_unchecked for FieldVar. This accompanies the bug fix in #70.

    Bug Fixes

    • #70 Fix soundness issues of mul_by_inverse for field gadgets.
    Open source →
  9. 0.3.0 06 Jun 2021
    Release notes

    Release v0.3.0 (#66)

    * Release v0.3.0

    * fix the pr template

    Open source →
    Release notes

    Breaking changes

    • #60 Rename AllocatedBit to AllocatedBool for consistency with the Boolean variable. You can update downstream usage with grep -rl 'AllocatedBit' . | xargs env LANG=C env LC_CTYPE=C sed -i '' 's/AllocatedBit/AllocatedBool/g'.
    • #65 Rename Radix2Domain in r1cs-std to Radix2DomainVar.
    • nonnative/#43 Add padding to allocated nonnative element's to_bytes.

    Features

    • #53 Add univariate evaluation domain and Lagrange interpolation.

    Improvements

    • #65 Add support for non-constant coset offset in Radix2DomainVar.

    Bug Fixes

    Open source →
  10. 0.2.0 24 Mar 2021
    Release notes

    (cargo-release) ark-r1cs-std version 0.2.0

    Open source →
    Release notes

    Breaking changes

    • #12 Make the output of the ToBitsGadget impl for FpVar fixed-size
    • #48 Add Clone trait bound to CondSelectGadget.

    Features

    • #21 Add UInt128
    • #50 Add DensePolynomialVar

    Improvements

    • #5 Speedup BLS-12 pairing
    • #13 Add ToConstraintFieldGadget to ProjectiveVar
    • #15, #16 Allow cs to be None when converting a Montgomery point into a Twisted Edwards point
    • #20 Add CondSelectGadget impl for UInts
    • #22 Reduce density of three_bit_cond_neg_lookup
    • #23 Reduce allocations in UInts
    • #33 Speedup scalar multiplication by a constant
    • #35 Construct a FpVar from bits
    • #36 Implement ToConstraintFieldGadget for Vec<Uint8>
    • #40, #43 Faster scalar multiplication for Short Weierstrass curves by relying on affine formulae
    • #46 Add mux gadget as an auto-impl in CondSelectGadget to support random access of an array

    Bug fixes

    • #8 Fix bug in three_bit_cond_neg_lookup when using a constant lookup bit
    • #9 Fix bug in short_weierstrass::ProjectiveVar::to_affine
    • #29 Fix to_non_unique_bytes for BLS12::G1Prepared
    • #34 Fix mul_by_inverse for constants
    • #42 Fix regression in mul_by_inverse constraint count
    • #47 Compile with panic='abort' in release mode, for safety of the library across FFI boundaries
    • #57 Clean up UInt docs
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive