Skip to content

Latest commit

 

History

History
155 lines (115 loc) · 4.63 KB

File metadata and controls

155 lines (115 loc) · 4.63 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.5.3 (2026-04-02)

Added

  • Impl Cmov/CmovEq for NonZeroUsize/NonZeroIsize (#1415)

Changed

  • Avoid using asm! under cfg(miri) (#1436)

0.5.2 (2026-01-20)

Fixed

  • Cmov impl for isize/usize (#1412)

0.5.1 (2026-01-18)

Added

  • riscv32 optimised mask generation (#1396)
  • riscv64 optimised mask generation (#1397)
  • Support for core::num::NonZero* and core::cmp::Ordering (#1404)

0.5.0 (2026-01-17)

Added

  • Optimized CmovEq for [u8] (#1356)
  • Optimized CmovEq for [u16] (#1370)
  • Impl Cmov/CmovEq for slices of unsigned integers (#1370, #1372)
  • Impl Cmov/CmovEq for slices of signed integers (#1373)
  • Impl Cmov/CmovEq for isize/usize (#1375)

Changed

  • Impls of Cmov/CmovEq for [T; N] are now bounded on [T]: Cmov(Eq) (#1372)

Removed

  • Generic impl of CmovEq for [T] where T: CmovEq in favor of specialized impls (#1356)

0.4.6 (2026-01-16)

Added

  • Optimized Cmov for [u8; N] (#1350)
  • Optimized CmovEq for [u8; N] (#1353)
  • Optimized Cmov for [u8] (#1354)

Fixed

  • Provided Cmov::cmovz impl (#1351)

0.4.5 (2026-01-15)

Changed

  • Introduce small ARM32 asm! optimization which also guarantees constant-time operation (#1336, #1346)

0.4.4 (2026-01-14)

Security

  • Fix non-constant-time assembly being emitted from portable backend on thumbv6m-none-eabi (#1332)

0.4.3 (2025-12-27)

Fixed

  • aarch64 ASM bug (#1299)
  • Truncation bug in portable implementation (#1300)

0.4.2 (2025-12-26)

Added

  • Signed integer support (#1280)

0.4.1 (2025-12-19)

Changed

  • Use black_box in portable impl (#1255)

0.4.0 (2025-09-10)

Changed

  • Edition changed to 2024 and MSRV bumped to 1.85 (#1149)

0.3.1 (2023-10-14)

Added

  • CmovEq impl for slices (#954)

Changed

  • Use #[inline] instead of #[inline(always)] (#924)
  • CmovEq now invokes XOR within the ASM block (#925)

0.3.0 (2023-04-02)

Added

  • miri support by forcing the portable backend (#864)
  • Constant-time equality comparisons (#873)

Changed

  • Make Cmov::cmovz a provided method (#871)

Fixed

  • Builds on x86 (32-bit) targets (#863)

0.2.0 (2023-02-26)

Added

  • Condition alias for u8 (#830)

Changed

  • Redesigned trait-based API (#830)
    • Built around a Cmov trait
    • Trait is impl'd for u8, u16, u32, u64, u128
    • Accepts a Condition (i.e. u8) as a predicate
  • MSRV 1.60 (#839)

0.1.1 (2022-03-02)

Added

  • cmovz/cmovnz-alike support for AArch64 targets (#744)

0.1.0 (2022-02-27)

  • Initial release