- #121
- Refactor
UInt{8,16,64,128}
into one structUInt
. - Remove
bits
module. - Use
std::ops
traits forUInt
andBoolean
.
- Refactor
- #134 Add
Mul<NonnativeFieldVar>
bounds and impls forCurveVar
. - #135
- Rename
NonNativeFieldVar
toEmulatedFpVar
. - Rename
fields::nonnative
tofields::emulated_fp
. - Rename
fields::nonnative::{Allocated}NonNativeMulResultVar
tofields::emulated_fp::{Allocated}MulResultVar
.
- Rename
- #136
- Rename
ToBytesGadget::to_{non_unique_}bytes
→ToBytesGadget::to_{non_unique_}bytes_in_le
.
- Rename
- #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}
.
- Add
- #143 Add
AllocVar::new_variable_with_inferred_mode
. - #144 Add
ToConstraintFieldGadget
bounds toCurveVar
andFieldVar
- #145
- Avoid deeply nested
LinearCombinations
inEvaluationsVar::interpolate_and_evaluate
to fix the stack overflow issue when calling.value()
on the evaluation result.
- Avoid deeply nested
- #148
- Fix panic issues during in-circuit polynomial interpolation.
- #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.
- #86 Change the API for domains for coset.
- #84 Expose
short_weierstrass::non_zero_affine
module and implementEqGadget
forNonZeroAffineVar
. - #79 Move
NonNativeFieldVar
fromark-nonnative
toark-r1cs-std
. - #76 Implement
ToBytesGadget
forVec<UInt8>
. - nonnative/#45 Add
new_witness_with_le_bits
which returns the bits used during variable allocation.
- #101 Fix
is_zero
for twisted Edwards curves. - #86 Make result of
query_position_to_coset
consistent withark-ldt
. - #77 Fix BLS12
G2PreparedGadget
'sAllocVar
when G2 uses a divisive twist.
- #71 Implement the
Sum
trait forFpVar
. - #75 Introduce
mul_by_inverse_unchecked
forFieldVar
. This accompanies the bug fix in #70.
- #70 Fix soundness issues of
mul_by_inverse
for field gadgets.
- #60 Rename
AllocatedBit
toAllocatedBool
for consistency with theBoolean
variable. You can update downstream usage withgrep -rl 'AllocatedBit' . | xargs env LANG=C env LC_CTYPE=C sed -i '' 's/AllocatedBit/AllocatedBool/g'
. - #65 Rename
Radix2Domain
inr1cs-std
toRadix2DomainVar
. - nonnative/#43 Add padding to allocated nonnative element's
to_bytes
.
- #53 Add univariate evaluation domain and Lagrange interpolation.
- #65 Add support for non-constant coset offset in
Radix2DomainVar
.
- #12 Make the output of the
ToBitsGadget
impl forFpVar
fixed-size - #48 Add
Clone
trait bound toCondSelectGadget
.
- #5 Speedup BLS-12 pairing
- #13 Add
ToConstraintFieldGadget
toProjectiveVar
- #15, #16 Allow
cs
to beNone
when converting a Montgomery point into a Twisted Edwards point - #20 Add
CondSelectGadget
impl forUInt
s - #22 Reduce density of
three_bit_cond_neg_lookup
- #23 Reduce allocations in
UInt
s - #33 Speedup scalar multiplication by a constant
- #35 Construct a
FpVar
from bits - #36 Implement
ToConstraintFieldGadget
forVec<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
- #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
forBLS12::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
Initial release