Skip to content

Parsing hardening - #129

Merged
dnsl48 merged 6 commits into
masterfrom
fix/signed-parser-components
Aug 22, 2026
Merged

dnsl48 merged 6 commits into
masterfrom
fix/signed-parser-components

Conversation

@dnsl48

@dnsl48 dnsl48 commented Aug 22, 2026

Copy link
Copy Markdown
Owner

No description provided.

dnsl48 added 6 commits August 23, 2026 05:55
Combine Unicode mixed-number components with checked multiplication and addition. Bounded capacity failures now return ParseIntError consistently in debug and release builds.

Cover multiplication, addition, raw representability, zero-denominator, and unbounded backing cases, and document the CheckedAdd and CheckedMul contract.
Keep the sign on the complete value across ordinary, radix, Unicode, Juniper, and Decimal parser boundaries. Reject component-local signs for signed and unsigned backings so stored ratios retain non-negative magnitudes.

Standardise GenericFraction radix errors on ParseError, validate bases from 2 through 36, report zero denominators explicitly, and make ParseError non-exhaustive for future compatibility.
Check formatting and all Clippy targets for the standalone Rust 1.70 consumer crate so its parser regression coverage cannot drift outside the stable root gates.
Validate bases before delegating to either backing integer and standardise direct dynamic-integer parsing on ParseError. Unsupported bases return UnsupportedBase while malformed and exhausted-capacity values return ParseIntError.

Cover bounded, BigUint, promotion, and Rust 1.70 paths, and document the associated error migration and parser contract.
Add Criterion coverage for direct small parsing, promotion into the growing backing integer, and the composite DynaFraction path when their required features are enabled.

Retain each complete parsed Result and record the signed pre/post parser revisions for layout-controlled manual comparisons without imposing a noisy CI timing threshold.
Rewrite the unreleased notes around downstream migration impact, separating source breaks from the parser defects they resolve.

Align README and crate guidance with the numeric-form and Juniper contracts, and document radix grammar and errors beside the affected public implementations.
@dnsl48
dnsl48 merged commit ca92bcd into master Aug 22, 2026
8 checks passed
@dnsl48
dnsl48 deleted the fix/signed-parser-components branch August 22, 2026 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant