Security
- Mitigate exponent amplification (CVE-2026-32686).
Compact inputs such as1e1000000could force multi-second expansions
during arithmetic, parsing, normalization, comparison, or formatting.
Decimal.add/2andDecimal.sub/2now scale operands toprecision + 2
digits with a sticky bit instead of materializing the full coefficient.
Enhancements
- Add
:max_digitsand:max_exponentoptions toDecimal.parse/2and
Decimal.cast/2to reject pathological inputs without expansion - Add
:max_digitsoption toDecimal.to_string/3to cap formatted output
before materialization - Add
:emaxand:eminfields toDecimal.Contextfor IBM General Decimal
Arithmetic-style overflow and underflow signaling - Optimize hot paths for large decimals:
coef_length,normalize,
to_integer,integer?, parsing, and large-coefficient string formatting