# Changelog

This is the changelog of [Multilane](https://crates.io/crates/multilane/).
See `README.md` for more information.

## 0.11.3

* Fix missing `ShlAssign<Self>` requirement for `Uint`

## 0.11.2

* Fix missing shift assignement operators for `Uint` and `Int`

## 0.11.1

* Update readme

## 0.11.0

* Require `Not<Output = Self>` for `Uint` and `Int`
* Require full shift operators
* Require `'static` and `Any` for `Uint`, `Int`, and `Float`
* Require `RefUnwindSafe` for `Uint`, `Int`, and `Float`
* Add `FloatToInt` trait
* Remove `num` and `array` modules
* Add `to_int_unchecked` destructor to `Float`
* Update readme
* Decrease MSRV to 1.85
* Fix `Float::next_down`
* Update tests
* Update lints

## 0.10.0

* Update readme
* Remove slice methods from `Array`
* Require `From<u8>` for `Uint`
* Require `From<u16>` for `UintLeast16`
* Require `From<u32>` for `UintLeast32`
* Require `From<u64>` for `UintLeast64`
* Require `From<i8>` for `Int`
* Require `From<u8>` and `From<i16>` for `IntLeast16`
* Require `From<u16>` and `From<i32>` for `IntLeast32`
* Require `From<u32>` and `From<i64>` for `IntLeast64`
* Remove `UintLeast128`, `IntLeast128`, and `FloatLeast128`
* Lock `FloatLeast64` behind `f128`
* Require `From<f32>` for `FloatLeast32`
* Require `From<f64>` for `FloatLeast64`
* Require `From<u16>` and `From<i16>` for `FloatLeast32`
* Require `From<u32>` and `From<i32>` for `FloatLeast64`
* Update logo
* Require `From<u8>` and `From<i8>` for `Float`
* Require `UnwindSafe`, `Unpin`, `Send`, `Sync` for `Uint`, `Int`, and `Float`

## 0.9.0

* Refactor least traits
* Update docs
* Lock `FloatLeast128` behind `f128`
* Require `AsRef`, `AsMut`, `Borrow`, and `BorrowMut` for `Array`
* Add `len` and `is_empty` methods to `Array`
* Add `fill` and `fill_with` methods to `Array`
* Add `to_vec` destructor to `Array`
* Add `as_chunks` and `as_chunks_mut` methods to `Array`
* Bump MSRV to 1.88
* Add `as_ptr` and `as_mut_ptr` methods tos `Array`
* Update readme
* Add `as_chunks_unchecked` and `as_chunks_unchecked_mut` methods to `Array`
* Add `binary_search` and `binary_search_by` methods to `Array`
* Add `is_ascii` method to `Array`
* Update tests
* Add `as_ptr_range` and `as_mut_ptr_range` methods to `Array`
* Add `first` and `first_mut` methods to `Array`
* Add `last` and `last_mut` methods to `Array`
* Remove `ConstPtr` and `MutPtr` traits
* Remove `ptr` module

## 0.8.1

* Update logo
* Update readme
* Update docs
* Update tests
* Fix aborting panics being specified
* Fix `Int` not requiring `Not`

## 0.8.0

* Require `Rhs = u32` instead of `Rhs = Self` in `Shl`, `Shr`, `ShlAssign`, and `ShrAssign` for `Uint` and `Int`
* Require `FromStr` for `Uint` and `Int`
* Require `Not` for `Uint` and `Int`
* Add `clamp` method to `Float`
* Update tests
* Fix `Float` having `powf` and `powi` methods
* Add `ln_1p`, `hypot`, `exp_m1`, `rem_euclid`, `div_euclid`, and `sin_cos` methods to `StdFloat`
* Add `midpoint` method to `Float`

## 0.7.0

* Require `Self::Int::Uint = Self` for `Uint`
* Require `Self::Uint::Int = Self` for `Int`
* Add `drop_in_place` method to `MutPtr`
* Fix missing `ConstPtr` and `MutPtr` methods
* Add `wrapping_byte_offset` method to `ConstPtr` and `MutPtr`
* Add `map_addr` method to `ConstPtr` and `MutPtr`
* Add `is_aligned` method to `ConstPtr` and `MutPtr`
* Add `classify` method to `Float`
* Add `copysign` method to `Float`
* Add `signum` and `abs` method to `Float`
* Add `powf` and `powi` methods to `StdFloat`
* Update docs
* Add `from_ref` constructor to `ConstPtr`
* Add `from_mut` constructor to `MutPtr`
* Decrease MSRV back to 1.87 (backport newer items)
* Add `expose_provenance` destructor to `ConstPtr` and `MutPtr`
* Add `align_offset` method to `ConstPtr` and `MutPtr`
* Add `with_addr` method to `ConstPtr` and `MutPtr`
* Add `with_exposed_provenance` and `without_provenance` constructors to `ConstPtr` and `MutPtr`
* Move `from_f16` constructor from `Least16` back to `Float`
* Replace `Least16` with `UintLeast16` and `IntLeast16`
* Replace `Least32` with `UintLeast32`, `IntLeast32`, and `FloatLeast32`
* Replace `Least64` with `UintLeast64`, `IntLeast64`, and `FloatLeast64`
* Replace `Least128` with `UintLeast128`, `IntLeast128`, and `FloatLeast128`
* Add `from_i8` and `from_u8` constructors to `Float`
* Move least traits to `num`
* Remove `from_f16_unchecked` constructor from `Float`
* Add `from_u16` and `from_i16` constructors to `FloatLeast32`
* Add `from_u32` and `from_i32` constructors to `FloatLeast64`
* Add `from_u64` and `from_i64` constructors to `FloatLeast128`
* Update readme
* Add `from_u8` constructor to `IntLeast16`
* Add `from_u16` constructor to `IntLeast32`
* Add `from_u32` constructor to `IntLeast64`
* Add `from_u64` constructor to `IntLeast128`
* Hide unsafe constructors from `Uint`, `Int`, and `Float`

## 0.6.0

* Add `cast` method to `ConstPtr` and `MutPtr`
* Add `copy_to` and `copy_to_nonoverlapping` methods to `ConstPtr` and `MutPtr`
* Add `copy_from` and `copy_from_nonoverlapping` methods to `MutPtr`
* Rename `Uint::Signed` to `Int`
* Rename `Int::Unsigned` to `Uint`
* Update docs
* Add `from_f16_unchecked`, `from_f32_unchecked`, `from_f64_unchecked`, and `from_f128_unchecked` constructors to `Float`
* Move `from_f16` from `Float` to `Least16`
* Move `mul_add` from `Float` to `StdFloat`
* Move `round`, `round_ties_even`, and `floor`, `ceil`, `trunc`, and `fract` methods from `Float` to `StdFloat`
* Add `from_f16` constructor to `Least16`
* Add `from_f32` constructor to `Least32`
* Add `from_f64` constructor to `Least64`
* Add `from_f128` constructor to `Least128`

## 0.5.0

* Bring back `ConstPtr` and `MutPtr` traits
* Add `add`, `wrapping_add`, `byte_add`, and `wrapping_byte_add` methods to `ConstPtr` and `MutPtr`
* Add `sub`, `wrapping_sub`, `byte_sub`, and `wrapping_byte_sub` methods to `ConstPtr` and `MutPtr`
* Add `offset`, `wrapping_offset`, and `byte_offset` methods to `ConstPtr` and `MutPtr`
* Add `swap` and `replace` methods to `MutPtr`
* Add `read`, `read_unaligned`, and `read_volatile` methods to `ConstPtr` and `MutPtr`
* Add `write`, `write_bytes`, `write_unaligned`, and `write_volatile` methods to `MutPtr`
* Add `num`, `ptr`, `least`, and `array` modules
* Move `Uint`, `Int`, `Float`, and `StdFloat` to `num`
* Move `Least16`, `Least32`, `Least64`, and `Least128` to `least`
* Move `Array` to `array`
* Update docs
* Move `ConstPtr` and `MutPtr` to `ptr`
* Add `checked_neg`, `strict_neg`, `overflowing_neg`, and `wrapping_neg` methods to `Uint`

## 0.4.1

* Add readme (fix changelog)
* Update crate description
* Add logo
* Add docs logo

## 0.4.0

* Add `leading_ones`, `leading_zeros`, `trailing_ones`, and `trailing_zeros` methods to `Uint` and `Int`
* Add `from_fn` constructor to `Array`
* Update docs
* Add `map` method to `Array`
* Add `get`, `get_mut`, `get_unchecked`, and `get_unchecked_mut` methods to `Array`
* Add `each_ref` and `each_mut` methods to `Array`
* Add `div_ceil` method to `Uint`
* Add `is_multiple_of` and `is_power_of_two` methods to `Uint`
* Add `next_multiple_of` and `next_power_of_two` methods to `Uint`
* Add `checked_next_multiple_of` and `checked_next_power_of_two` methods to `Uint`
* Add `rem_euclid`, `checked_rem_euclid`, `strict_rem_euclid`, `overflowing_rem_euclid`, and `wrapping_rem_euclid` methods to `Uint` and `Int`
* Add `div_euclid`, `checked_div_euclid`, `strict_div_euclid`, `overflowing_div_euclid`, and `wrapping_div_euclid` methods to `Uint` and `Int`
* Add `midpoint` and `abs_diff` methods to `Uint` and `Int`
* Add `count_zeros` and `count_ones` methods to `Uint` and `Int`
* Add `reverse_bits` and `swap_bytes` methods to `Uint` and `Int`
* Add `rotate_left` and `rotate_right` methods to `Uint` and `Int`
* Add `from_le` and `from_be` constructors to `Uint` and `Int`
* Add `to_le` and `to_be` destructors to `Uint` and `Int`
* Add `recip` method to `Float`
* Add `to_radians` and `to_degrees` methods to `Float`
* Add `next_down` and `next_up` methods to `Float`
* Move `round`, `floor`, `ceil`, `trunc`, and `fract` methods from `StdFloat` to `Float`
* Add `round_ties_even` method to `Float`
* Add `total_cmp` method to `Float`
* Add `is_nan`, `is_finite`, `is_infinite`, `is_normal`, `is_subnormal`, `is_sign_negative`, and `is_sign_positive` methods to `Float`
* Require `Copy` for `Least16`

## 0.3.0

* Add `checked_add`, `checked_sub`, `checked_mul`, `checked_div`, `checked_rem`, `checked_shl`, and `checked_shr` methods to `Uint` and `Int`
* Add `checked_add_signed` and `checked_sub_signed` methods to `Uint`
* Add `checked_add_unsigned` and `checked_sub_unsigned` methods to `Int`
* Add `from_str_radix` constructor to `Uint` and `Int`
* Add `ilog` and `checked_ilog` methods to `Uint` and `Int`
* Add `ilog2` and `checked_ilog2` methods to `Uint` and `Int`
* Add `ilog10` and `checked_ilog10` methods to `Uint` and `Int`
* Add `overflowing_add`, `overflowing_sub`, `overflowing_mul`, `overflowing_div`, `overflowing_rem`, `overflowing_shl`, and `overflowing_shr` methods to `Uint` and `Int`
* Add `overflowing_add_signed` and `overflowing_sub_signed` methods to `Uint`
* Add `overflowing_add_unsigned` and `overflowing_sub_unsigned` methods to `Int`
* Add `strict_add`, `strict_sub`, `strict_mul`, `strict_div`, `strict_rem`, `strict_shl`, and `strict_shr` methods to `Uint` and `Int`
* Add `saturating_add`, `saturating_sub`, `saturating_mul`, and `saturating_div` methods to `Uint` and `Int`
* Add `saturating_add_signed` and `saturating_sub_signed` methods to `Uint`
* Add `saturating_add_unsigned` and `saturating_sub_unsigned` methods to `Int`
* Add `strict_add_signed` and `strict_sub_signed` methods to `Uint`
* Add `strict_add_unsigned` and `strict_sub_unsigned` methods to `Int`
* Bump MSRV to 1.91
* Add `wrapping_add`, `wrapping_sub`, `wrapping_mul`, `wrapping_div`, `wrapping_rem`, `wrapping_shl`, and `wrapping_shr` methods to `Uint` and `Int`
* Add `wrapping_add_signed` and `wrapping_sub_signed` methods to `Uint`
* Add `wrapping_add_unsigned` and `wrapping_sub_unsigned` methods to `Int`
* Add `unchecked_add`, `unchecked_sub`, and `unchecked_mul` methods to `Uint` and `Int`
* Add `unbounded_shl` and `unbounded_shr` methods to `Uint` and `Int`
* Track callers
* Add `signum` method to `Int`
* Add `is_negative` and `is_positive` methods to `Int`
* Add `abs`, `checked_abs`, `overflowing_abs`, `saturating_abs`, `strict_abs`, and `unsigned_abs` methods to `Int`
* Add `pow`, `checked_pow`, `overflowing_pow`, `saturating_pow`, `strict_pow`, and `wrapping_pow` methods to `Int`
* Add `isqrt` method to `Uint` and `Int`
* Add `checked_neg`, `overflowing_neg`, `saturating_neg`, `strict_neg`, and `wrapping_neg` methods to `Int`
* Add `BITS` constant to `Uint` and `Int`
* Add `MIN_POSITIVE`, `RADIX`, `EPSILON`, `MANTISSA_DIGITS`, and `DIGITS` constant to `Float`
* Update docs

## 0.2.0

* Remove `ptr` module and items
* Remove `num` module
* Add tests
* Add `Bytes` type to `Uint`, `Int`, and `Float`
* Add `from_ne_bytes`, `from_le_bytes`, and `from_be_bytes` constructors to `Uint`, `Int`, and `Float`
* Add `to_ne_bytes`, `to_le_bytes`, and `to_be_bytes` destructors to `Uint`, `Int`, and `Float`
* Add `Array` trait
* Add `Scalar` type to `Array`
* Add `iter` and `iter_mut` methods to `Array`
* Add `as_slice` and `as_mut_slice` methods to `Array`
* Add `LEN` constant to `Array`
* Add `Least16`, `Least32`, `Least64`, and `Least128` traits
* Add `from_u16_unchecked`, `from_u32_unchecked`, `from_u64_unchecked`, and `from_u128_unchecked` constructors to `Uint`
* Add `from_i16_unchecked`, `from_i32_unchecked`, `from_i64_unchecked`, and `from_i128_unchecked` constructors to `Int`
* Add `from_u16` and `from_i16` constructors to `Least16`
* Add `from_u32` and `from_i32` constructors to `Least32`
* Add `from_u64` and `from_i64` constructors to `Least64`
* Add `from_u128` and `from_i128` constructors to `Least128`
* Add `MIN` and `MAX` constants to `Uint`, `Int`, and `Float`
* Add `NAN`, `INFINITY`, and `NEG_INFINITY` constants to `Float`

## 0.1.0

* Add `ptr` module
* Add `ConstPtr` and `MutPtr` traits to `ptr`
* Add `Target` type to `ConstPtr` and `MutPtr`
* Add `null` constructor to `ConstPtr` and `MutPtr`
* Add `is_null` method to `ConstPtr` and `MutPtr`
* Relicense under MIT or Apache 2.0
* Add `ConstPtr` type to `MutPtr`
* Add `MutPtr` type to `ConstPtr`
* Add `cast_const` method to `MutPtr`
* Add `cast_mut` method to `ConstPtr`
* Require bitwise operations for traits
* Add `from_i8` constructor to `Int`
* Add `from_u8` constructor to `Uint`
* Add `from_f16`, `from_f64_lossy`, and `from_f128_lossy` constructors to `Float`
* Add `unstable-docs` feature
* Require comparison operations for traits
* Remove `Num` trait
* Simplify operator requirements
* Add `addr` method to `ConstPtr` and `MutPtr`
* Add mathematical constants to `Float`
* Require `Neg` for traits
* Require `Default` and `Debug` for all traits
* Require `Display` for traits
* Require `Sum` and `Product` for traits
* Require `Pointer`, `Binary`, `LowerExp`, `LowerHex`, `Octal`, `UpperExp`, and `UpperHex` for traits

## 0.0.0

* Add changelog
* Add gitignore
* Add Cargo manifest
* License under MPL 2.0
* Set MSRV to 1.87 and edition to 2024
* Configure lints
* Add `std` and `alloc` features
* Add `num` module
* Add `Num`, `Int`, `Uint`, `Float`, and `StdFloat` traits to `num`
* Add `f16` and `f128` features
* Add `cast_signed` method to `Uint`
* Add `cast_unsigned` method to `Int`
* Add `sqrt`, `cbrt`, `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `atan2`, `sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh`, `exp`, `exp2`, `log`, `ln`, `log2`, `log10`, `round`, `fract`, `ceil`, `floor`, and `trunc` methods to `StdFloat`
* Add `mul_add` method to `Float`
* Add `Bits` type to `Float`
* Add `from_bits` constructor and `to_bits` destructor to `Float`
* Add `Signed` type to `Uint`
* Add `Unsigned` type to `Int`
