Skip to content

deps: bump fraction from 0.15.4 to 0.17.0 - #887

Merged
passcod merged 1 commit into
mainfrom
dependabot/cargo/fraction-0.17.0
Sep 16, 2026
Merged

passcod merged 1 commit into
mainfrom
dependabot/cargo/fraction-0.17.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Bumps fraction from 0.15.4 to 0.17.0.

Release notes

Sourced from fraction's releases.

0.17.0

[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.

0.16.0

[0.16.0] - 2026-08-09

Changed

  • Replaced optional lazy_static usage with std::sync::OnceLock and num-bigint constants for approximation accuracy multipliers (special thanks to Expyron for the std::sync::OnceLock patch).
  • Breaking: Rust 1.70 is now the minimum supported Rust version (MSRV).

Fixed

  • Fraction and Decimal parsing now routes zero-denominator inputs to signed infinity or NaN (including optional Unicode from_unicode_str) rather than panicking.
  • Restored Decimal Ord/PartialOrd/Eq/Hash consistency by comparing each value using its stored precision, including truncation and canonical zero handling (-0, -0.9@p0, -0.04@p1), so ordered and hashed collections now agree.
  • Added PostgreSQL NUMERIC infinity round-trip support for both Fraction and Decimal, encoding/decoding ±Infinity using 0xD000/0xF000 markers and documenting PostgreSQL 14+/unconstrained NUMERIC requirements.
Changelog

Sourced from fraction's changelog.

[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.

[0.16.0] - 2026-08-09

Changed

  • Replaced optional lazy_static usage with std::sync::OnceLock and num-bigint constants for approximation accuracy multipliers (special thanks to Expyron for the std::sync::OnceLock patch).
  • Breaking: Rust 1.70 is now the minimum supported Rust version (MSRV).

Fixed

  • Fraction and Decimal parsing now routes zero-denominator inputs to signed infinity or NaN (including optional Unicode from_unicode_str) rather than panicking.
  • Restored Decimal Ord/PartialOrd/Eq/Hash consistency by comparing each value using its stored precision, including truncation and canonical zero handling (-0, -0.9@p0, -0.04@p1), so ordered and hashed collections now agree.
  • Added PostgreSQL NUMERIC infinity round-trip support for both Fraction and Decimal, encoding/decoding ±Infinity using 0xD000/0xF000 markers and documenting PostgreSQL 14+/unconstrained NUMERIC requirements.
Commits
  • 53d04cd chore(release): prepare 0.17.0
  • ca92bcd docs(parse): prepare parser contract for review
  • 4e3fd9f perf(parse): benchmark DynaInt radix parsing
  • df1dff2 fix(parse): make DynaInt radix parsing panic-free
  • 1767207 ci(msrv): lint the parser smoke harness
  • e7c2387 fix(parse): reject signs inside numeric components
  • 5051604 fix(unicode): reject overflowing mixed numerators
  • d24249d chore(release): prepare 0.16.0
  • fde4af5 docs(rustdoc): fix generic type rendering
  • 23cce20 docs(postgres): explain infinity support
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update Rust code labels Sep 14, 2026
Bumps [fraction](https://github.com/dnsl48/fraction) from 0.15.4 to 0.17.0.
- [Release notes](https://github.com/dnsl48/fraction/releases)
- [Changelog](https://github.com/dnsl48/fraction/blob/master/CHANGELOG.md)
- [Commits](dnsl48/fraction@0.15.4...0.17.0)

---
updated-dependencies:
- dependency-name: fraction
  dependency-version: 0.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/cargo/fraction-0.17.0 branch from e98e30f to f0b533a Compare September 15, 2026 05:19
@passcod
passcod added this pull request to the merge queue Sep 16, 2026
Merged via the queue into main with commit da50be8 Sep 16, 2026
15 checks passed
@passcod
passcod deleted the dependabot/cargo/fraction-0.17.0 branch September 16, 2026 15:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update Rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant