Skip to content

FixedMathSharp v7.0.0 — Full-Domain Determinism

Choose a tag to compare

@mrdav30 mrdav30 released this 04 Aug 20:58
· 11 commits to main since this release

FixedMathSharp v7 is a major deterministic-contract hardening release. It makes
local and world transform intent explicit, carries exact fixed-width
intermediates through critical arithmetic and geometry decisions, and expands
the library's engine-neutral collision/query surface across the full Q32.32
domain.

Important

This release contains source-breaking and result-breaking
changes. Division, normalization, trigonometry, transforms, bounds, and
geometry queries can produce different raw values than v6. Version or
regenerate deterministic replays, hashes, and golden results after migrating.

Highlights

  • Full-domain arithmetic: division now rounds exact midpoints to even; new
    exact TryAdd/TrySubtract APIs and fused multiply-add/multiply-divide paths
    avoid premature saturation and intermediate rounding.
  • Explicit transform hierarchy: FixedTransform now owns authoritative
    local TRS state with derived world views, named reparenting semantics,
    cycle-rejecting reparenting, atomic world-space updates, strict matrix import,
    and full-domain point conversion.
  • Hardened vectors, rotations, and matrices: magnitude, normalization,
    projection, trigonometry, quaternion construction, scale extraction, and TRS
    decomposition now behave consistently at tiny, extreme, reflected, and
    near-degenerate inputs.
  • Expanded exact geometry: bounds and primitives now share
    FixedMathSharp.Geometry; v7 adds canonical FixedOrientedBox, semantic
    point anchors, exact ray/segment intervals, finite capsule/cylinder/cone
    queries, swept-sphere box and cylinder tests, and rigid triangle contacts.
  • Safer bounds: derived centers and extents retain full-domain arithmetic,
    bounding-sphere factories guarantee containment or throw, and explicitly named
    *ClippedToDomain factories cover intentional clipping.
  • Measured hot-path work: exact wide-ratio, oriented-box, triangle, and
    aligned-frame anchor paths were optimized while preserving allocation-free
    deterministic behavior.
  • Better project documentation: the API reference and coverage report are
    now published together on GitHub Pages, with deeper guides synchronized to the
    GitHub Wiki.

Breaking Changes

  • Import geometry types from FixedMathSharp.Geometry.
  • Replace ambiguous FixedTransform properties with explicit local/world
    members. Parent is read-only; use SetParentKeepingLocal or
    TrySetParentKeepingWorld. Replace arbitrary matrix construction with
    component construction or TryCreateFromLocalMatrix.
  • Matrix scale APIs were renamed or removed in favor of scale magnitudes,
    canonical lossy scale, and checked TRS decomposition.
  • FixedQuaternion.Angle now returns the full shortest physical rotation;
    remove downstream * 2 corrections.
  • Removed FixedBoundCircle.RadiusSquared, FixedBoundSphere.RadiusSquared,
    Vector3d.ClosestPointsOnTwoLines, and FixedMath.AddOverflowHelper; use the
    exact bound predicates, segment-owned closest-point APIs, and checked
    language/runtime primitives instead.
  • Some exact bounds operations now throw OverflowException rather than
    silently returning a saturated or under-containing result.
  • Chronicler transform hashes now contain authoritative local position,
    rotation, and scale only. v6 transform hashes are intentionally incompatible.

Upgrade

Read the complete
v6 → v7 migration guide
before upgrading production simulations.

Full changelog:
73cd639…5430dc9 (inclusive)