Last updated: 2026-08-10
Release strategy. v0.6 is the breaking-changes testbed: every planned breaking change ships there first, so downstream users can migrate and validate early, and v1.0 then freezes the API. v0.5.x (0.5.0 / 0.5.1 / 0.5.2) is released; the items below carry their current status. File:line references are anchors from the v0.5.x tree and may drift.
v0.6.0-rc.x already carries several breaking/contract changes — see the per-crate
CHANGELOGs (ParseError::InvalidSyntax, Context::exp underflow → Err(Underflow),
Ziv transcendentals requiring R: ErrorBounds, TryFrom<RBig> for FBig, …, plus the
signed-isize RBig::pow/Relaxed::pow widening).
The v0.6 release mechanics — version sync,
## Unreleased→## 0.6.0changelog folding, MSRV bookkeeping, and the pre-publish check suite — are driven by thepre-publish-checkprocess, not roadmap items.
Carried from the v0.5.x deferral list. Not breaking, so they are not v0.6 test content per se — they broaden the validation surface and bundle naturally with the breaking pull-forward above.
- More transcendentals —
rootofunity. - Test organization — clear
srcin-file vstests/boundary. Tests are scattered: many operations have both an in-file#[cfg(test)] mod tests(insrc/<op>.rs) and a paralleltests/<op>.rsintegration file, and the two frequently overlap.dashu-floatis the worst case —add,mul,div,exp,log,trig,hyper,root,shift,round,convert,cmp,io, anditereach appear in both places.AGENTS.mdalready states the intended convention (in-filemod testsfor algorithm/kernel correctness;tests/for cross-cutting and public-API/property tests), but it is not consistently followed. Consolidate: assign each test to the side the convention dictates, deduplicate the overlaps, and tighten theAGENTS.mdwording so the boundary is explicit and enforceable. As part of this, clarify the status of thetests/*_prop.rsproperty tests against theAGENTS.md"in-crate tests must use fixed, deterministic inputs" rule — fixed-seed / enum-driven, or moved tofuzz/.
With the one breaking change on the 1.0 path (the signed-isize RBig::pow) shipped in
v0.6, v1.0 is the stabilization point: the API freezes at what shipped through v0.6.
No breaking changes are currently scheduled for v1.0 itself; anything that comes up is
folded back into the v0.6 release cycle (or a v0.7) rather than deferred silently to 1.0.
- Full C
<tgmath.h>type-generic math surface. The complete C standard math library for both real and complex — trig & inverse; hyperbolic & inverse; the exp/log family includingexp2/exp10/expm1/log2/log10/log1p; power/rootcbrt/hypot/pow/sqrt; error & gammaerf/erfc/tgamma/lgamma;fma; rounding/remainder; fp-classification — available on bothFBigandCBig(ref). The individual pieces shipped across v0.5.x/v0.6 are the first incremental steps toward this. exp2/exp10forFBigandCBig, and complexlog10.exp2/exp10need their own reduction (x·log2(e)→ power-of-two scale, mirroringexp's Ball engine); complexlog10followsCBig::log'sln|z| + i·arg(z)split divided byln 10.- Complex
agm— the arithmetic–geometric mean forCBig(and realFBigif wanted), via the standard AGM iteration with Ziv certification. The branch-cut behavior on]−∞, 0]needs care; no algorithm has been sketched yet. - Vector ops —
dot/mean helpers. (SumforCBigis already exact-accumulating, matchingFBig: Sum;ProductforCBigremains a fold, matchingFBig: Product.) - SIMD-optimized FFT multiplication. Leverage the
widecrate for SIMD FFT-based multiplication. Not considered until v1.0. - High-bits (short-product) multiplication for
dashu-floatmul/sqr/cubic. These currently round the exact full product/square/cube — always correctly rounded, but O(M(n)) in the operand size regardless of the target precision, which is wasteful when operands far exceedprecision(e.g. unlimited-precision significands multiplied to a low target precision). The efficient form keeps only the high limbs needed for rounding plus a sticky bit for the discarded tail — MPFR'smpfr_mulhigh_n(Mulders' short product) with ampfr_round_p-style certify-and-fall-back-to-exact gate, so it never materializes the full product. Deferred post-v1.0: it needs a new short-product primitive indashu-int(none exists today), and the case it optimizes is uncommon. (float/src/mul.rs:173.) - Constant-cache eviction/cap policy — revisit only if real workloads report memory
pressure. (No cap today; a
ConstCachegrows untilclear_cache()/drop, and callers own the lifetime explicitly via theCachedFBig/ConstCachehandle.)