Skip to content

0.17.0

Latest

Choose a tag to compare

@dnsl48 dnsl48 released this 22 Aug 19:48
0.17.0
53d04cd

[0.17.0] - 2026-08-23

Changed

  • Breaking: GenericFraction::<T>::from_unicode_str now requires T: CheckedAdd + CheckedMul. Custom
    backing types must provide both operations for mixed-component combination; standard bounded, big-integer, and
    dynamic backings satisfy these bounds.
  • Breaking: Numeric-component forms in ordinary Fraction/Decimal, Unicode, GenericFraction radix, and
    Juniper parsing reject component-local signs while retaining one sign for the complete value. Fraction Juniper
    input still requires its explicit outer sign; Decimal Juniper input delegates to ordinary Decimal grammar.
    From<&str> for GenericDecimal continues to map parse failures to NaN.
  • Breaking: GenericFraction changes its Num::FromStrRadixErr associated type from ParseRatioError to
    ParseError. Its fraction-only numerator/denominator grammar is unchanged, zero denominators return
    ParseError::ZeroDenominator, and direct Ratio parsing still uses ParseRatioError.
  • Breaking: ParseError is now non-exhaustive; downstream matches must include a wildcard arm.
  • Breaking: DynaInt changes its Num::FromStrRadixErr associated type to ParseError; malformed inputs and
    values that neither backing type can represent return ParseError::ParseIntError.

Fixed

  • Unicode mixed-number parsing now returns ParseIntError when the raw combined numerator
    (whole × denominator + numerator) is not representable by the backing integer type, instead of panicking in
    debug builds or wrapping in release builds.
  • Signed backing types no longer allow component-local signs to create negative magnitudes inside stored ratios;
    component-local signed-minimum inputs now fail deterministically.
  • GenericFraction and DynaInt radix parsing no longer panic for bases outside 2 through 36; they return
    ParseError::UnsupportedBase instead of forwarding invalid bases to their backing integer implementations.