fixed/RELEASES.md

42 KiB
Raw Permalink Blame History

Version 1.11.0 (unreleased)

Version 1.10.0 (2021-08-23)

Version 1.9.0 (2021-05-13)

Compatibility notes

  • Now the Debug implementation for Wrapping outputs the value only without “Wrapping()”, and the Debug implementation for Unwrapped outputs the value only without “Unwrapped()”.
  • The LeEqU8, LeEqU16, LeEqU32, LeEqU64 and LeEqU128 traits now have a 'static constraint. This should have no practical side effects, since these traits are a convenience feature and already have the Unsigned marker trait as a supertrait, and the types that implement Unsigned are 'static.
  • The FixedOptionalFeatures trait was not sealed, which was as an oversight. Now it is sealed, and the documentation explicitly states that the trait should not be used directly.

Version 1.8.0 (2021-04-20)

Version 1.7.0 (2021-03-25)

Version 1.6.0 (2021-02-05)

Version 1.5.0 (2020-11-05)

  • The wide_mul method was added to all fixed-point numbers up to 64 bits wide (issue 25).
  • Unwrapped methods for arithmetic together with the Unwrapped wrapper were added. Unwrapped methods panic on overflow, even when debug assertions are disabled, similar to how wrapping methods will wrap around even when debug assertions are enabled. (This was previously an experimental feature unwrapped.)
  • The serde-str feature was added. (This was previously an experimental feature.)
  • For the experimental feature num-traits, some missing supertraits were added to FixedOptionalFeatures.
  • Bug fix: multiplication of FixedI128 was panicking when multiplying some large negative numbers (issue 26).

Version 1.4.0 (2020-10-22)

Version 1.3.0 (2020-10-15)

  • The MulAssign implementation on fixed-point numbers now accepts an rhs fixed-point number with a different number of fractional bits from self.
  • The following methods were added to all fixed-point types, to the Fixed trait, and to the Wrapping wrapper:
  • The new experimental feature unwrapped was added, providing arithmetic methods that panic on overflow even when debug assertions are disabled.
  • The new experimental feature serde-str was added, which makes serialization use the numbers value in human-readable formats.

Version 1.2.0 (2020-09-02)

Version 1.1.0 (2020-07-21)

Version 1.0.0 (2020-06-04)

Version 0.5.7 (2020-05-11)

  • The LosslessTryFrom and LosslessTryInto traits were added.
  • The following methods were added to all fixed-point types, to the Fixed trait, and to the Wrapping wrapper:
    • leading_ones, trailing_ones
  • The following method was added to unsigned fixed-point types and to the FixedUnsigned trait:
    • wrapping_next_power_of_two
  • The PHI and FRAC_1_PHI constants were added to the consts module and as associated constants to fixed-point types.

Version 0.5.6 (2020-05-01)

  • The following methods were added to signed fixed-point types and to the FixedSigned trait:
    • checked_signum, saturating_signum, wrapping_signum, overflowing_signum
  • The LossyFrom and LossyInto traits were added to the prelude.
  • Casts deprecated in version 0.3.1 of the az crate were marked as deprecated.

Version 0.5.5 (2020-04-16)

  • Bug fix: an incorrect result could be given when comparing a signed fixed-point number of type FixedI to a number that would overflow by exactly one bit when converting to FixedI.
  • The following associated constants were added to all fixed-point types, to the Fixed trait, and to the Wrapping wrapper:
    • MIN, MAX
  • The following associated constants were added to the Fixed trait and to the Wrapping wrapper:
    • INT_NBITS, FRAC_NBITS
  • The following methods were added to all fixed-point types and to the Fixed trait:
    • int_log2, int_log10
    • checked_int_log2, checked_int_log10
  • The following methods were added to the Wrapping wrapper:
    • int_log2, int_log10
  • The constants in the consts module were also added as associated constants to fixed-point types that can represent them.
  • The following methods were deprecated:
    • min_value, max_value
    • int_nbits, frac_nbits

Version 0.5.4 (2020-02-21)

  • Bug fix: rem_euclid_int and its checked versions were handling overflow incorrectly.

Version 0.5.3 (2020-02-13)

  • Bug fix: round_to_zero was returning incorrect results for negative whole number operands.
  • Bug fix: all remainder operations with a fixed-point LHS and an integer RHS were giving an incorrect answer (https://gitlab.com/tspiteri/fixed/issues/13).
  • Bug fix: Euclidean division operations by integers were giving an incorrect answer.
  • Rem and RemAssign were implemented for fixed-point numbers.
  • The following methods were added to all fixed-point types and to the Fixed trait:
    • checked_rem
    • div_euclid, rem_euclid
    • checked_div_euclid, checked_rem_euclid
    • saturating_div_euclid
    • wrapping_div_euclid
    • overflowing_div_euclid
  • The following methods were added to the Wrapping wrapper:
    • div_euclid, rem_euclid
    • div_euclid_int, rem_euclid_int
  • The following methods were deprecated:
    • wrapping_rem_int, overflowing_rem_int

Version 0.5.2 (2020-02-02)

  • Wrapping now supports serialization. (Thanks: Shane Pearman)

Version 0.5.1 (2019-12-22)

  • ParseFixedError implements Error when the new std feature is enabled.

Version 0.5.0 (2019-12-06)

  • The crate now requires rustc version 1.39.0 or later.
  • The following methods were added to all fixed-point types and to the Fixed trait:
    • from_be_bytes, from_le_bytes, from_ne_bytes
    • to_be_bytes, to_le_bytes, to_ne_bytes
    • div_euclid_int, rem_euclid_int
    • checked_div_euclid_int, checked_rem_euclid_int
    • wrapping_div_euclid_int, wrapping_rem_euclid_int
    • overflowing_div_euclid_int, overflowing_rem_euclid_int
  • Casts deprecated in version 0.3.1 of the az crate were marked as deprecated.

Incompatible changes

  • Deprecated methods and modules were removed.

Version 0.4.6 (2019-10-16)

  • Conversions to/from bf16 are now provided when the f16 option is enabled.
  • The following methods are now const functions: saturating_neg, saturating_add, saturating_sub, saturating_mul_int, saturating_abs
  • Support for casts using the az crate was added.

Version 0.4.5 (2019-08-30)

  • Bug fix: display of many decimal numbers was panicking in debug mode or including a leading zero in release mode.
  • Many methods were added to Wrapping for convenience, even if they do not involve wrapping.

Version 0.4.4 (2019-08-24)

  • Bug fix: rounding could produce bad output for Binary, Octal, LowerHex and UpperHex.
  • The following methods are now const functions: is_power_of_two, abs, wrapping_abs, overflowing_abs
  • The method round_to_zero was added.
  • The method round_ties_to_even and its checked versions were added.

Version 0.4.3 (2019-08-20)

  • The crate now requires rustc version 1.34.0 or later.
  • The precision argument is no longer ignored when formatting fixed-point numbers; precision should now be handled the same as for primitive floating-point numbers in the standard library.
  • Parsing strings now rounds to the nearest with ties rounded to even.
  • Checked versions of string parsing methods are now available as inherent methods to all fixed-point numbers, and as methods in the Fixed trait.
  • Wrapping now has methods for parsing with wrapping, including an implementation of FromStr.
  • The following methods are now const functions:
    • min_value, max_value, from_bits, to_bits
    • count_ones, count_zeros, leading_zeros, trailing_zeros rotate_left, rotate_right
    • wrapping_neg, wrapping_add, wrapping_sub, wrapping_mul_int, wrapping_shl, wrapping_shr
    • overflowing_neg, overflowing_add, overflowing_sub, overflowing_mul_int, overflowing_shl, overflowing_shr
    • is_positive, is_negative
  • The associated constants INT_NBITS and FRAC_NBITS were added.
  • The reexports in the frac module and the LeEqU* traits were moved into the new types::extra module.

Version 0.4.2 (2019-08-16)

  • The new methods from_num and to_num together with their checked versions were added to all fixed-point numbers.
  • The methods from_fixed, to_fixed, from_int, to_int, from_float, and to_float, and their checked versions, were deprecated.
  • The new method from_num was added to the Wrapping wrapper.
  • Bug fix: parsing of decimal fractions was fixed to give correctly rounded results for long decimal fraction strings, for example with four fractional bits, 0.96874999… (just below 3132) and 0.96875 (3132) are now parsed correctly as 0.9375 (1516) and 1.0.

Version 0.4.1 (2019-08-12)

  • All fixed-point types now implement FromStr.
  • The methods from_str_binary, from_str_octal and from_str_hex were added.

Version 0.4.0 (2019-08-08)

  • The crate now requires rustc version 1.31.0 or later.
  • The traits module was added, with its traits Fixed, FixedSigned, FixedUnsigned, FromFixed, ToFixed, LossyFrom and LossyInto.
  • The saturating_neg method was added to all fixed-point numbers, and the saturating_abs method was added to signed fixed-point numbers.
  • The consts module was added.
  • The signum method now wraps instead of panics in release mode.

Incompatible changes

  • The sealed traits Int and Float now have no provided methods; the methods in the old implementation are now provided by FromFixed and ToFixed.
  • Deprecated methods were removed.

Contributors

  • @jean-airoldie
  • @tspiteri

Version 0.3.3 (2019-06-27)

  • Conversions to/from isize and usize were added.

Version 0.3.2 (2019-02-27)

  • The Wrapping wrapper was added.

Version 0.3.1 (2019-02-07)

  • Reimplement From<bool> for all fixed-point types which can represent the integer 1. This was inadvertently removed in 0.3.0.

Version 0.3.0 (2019-02-03)

  • Incompatible change: the return type of to_int is now generic.
  • Incompatible change: the Int trait implementation for bool was removed.
  • The new method to_fixed was added.
  • The new methods checked_to_fixed, checked_to_int, saturating_to_fixed, saturating_to_int, wrapping_to_fixed, wrapping_to_int, overflowing_to_fixed and overflowing_to_int were added.
  • The methods from_fixed, to_fixed, checked_from_fixed, checked_to_fixed, saturating_from_fixed, saturating_to_fixed, wrapping_from_fixed, wrapping_to_fixed, overflowing_from_fixed and overflowing_to_fixed were added to the Int trait.
  • The methods from_fixed, to_fixed, checked_to_fixed, saturating_to_fixed, wrapping_to_fixed and overflowing_to_fixed were added to the Float trait.
  • PartialEq and PartialCmp are now implemented for all combinations of fixed-point numbers and primitive integers.
  • The methods int_bits and frac_bits were deprecated and replaced by the methods int_nbits and frac_nbits.

Version 0.2.1 (2019-01-29)

  • Bug fix: the from_fixed and from_int methods (and their checked counterparts) could return wrong values for negative values.
  • Bug fix: display was using one fractional digit less than required, thus yielding the same output for diffent fixed-point numbers.

Version 0.2.0 (2019-01-29)

  • Incompatible change: The method from_int was change to accept a generic parameter.
  • The new methods from_fixed, checked_from_fixed, saturating_from_fixed, wrapping_from_fixed and overflowing_from_fixed were added.
  • The new methods checked_from_int, saturating_from_int, wrapping_from_int and overflowing_from_int were added.
  • The new methods from_float, checked_from_float, saturating_from_float, wrapping_from_float and overflowing_from_float were added.
  • The new method to_float was added.
  • The methods from_f16, from_f32, from_f64, to_f16, to_f32 and to_f64 were deprecated.
  • The to_int method was fixed to truncate fractional bits as documented for negative values.
  • The new methods ceil, floor, round, checked_ceil, checked_floor, checked_round, saturating_ceil, saturating_floor, saturating_round, wrapping_ceil, wrapping_floor, wrapping_round, overflowing_ceil, overflowing_floor and overflowing_round were added.
  • The methods to_int_ceil, to_int_floor and to_int_round were deprecated.

Version 0.1.6 (2019-01-27)

  • Optional serde support was added.

Version 0.1.5 (2019-01-26)

  • Lossless infallible conversions between fixed-point numbers and numeric primitives are now supported using From and Into.
  • A new module types is available with aliases for all supported fixed-point numbers.

Version 0.1.4 (2018-11-29)

  • Division is now implemented for FixedI128 and FixedU128.

Version 0.1.3 (2018-08-23)

  • The f16 feature was added, and new methods from_f16 and to_f16 were added.

Version 0.1.2 (2018-08-15)

  • The crate can now be used without the standard library std.
  • New methods from_f32 and from_f64 were added.
  • New methods is_positive and is_negative were added to signed fixed-point numbers.

Version 0.1.1 (2018-08-11)

  • Comparisons are now supported between all fixed-point numbers with the same underlying integer type.
  • New static methods int_bits and frac_bits were added.
  • New methods from_int, to_int, to_int_ceil, to_int_floor and to_int_round were added.
  • New methods int and frac were added.
  • Support for multiplication and division by integers was added.

Version 0.1.0 (2018-08-10)

  • Unsigned constants provided by the typenum crate are now used for the number of fractional bits.
  • Many methods and trait implementations available for primitive integers are now also supported by the fixed-point numbers.