On this page
mathlib-fp 1.10.0 release notes
Version 1.10.0 is the backward-compatible minor release that implements the closed 1.9.9 capability manifest and then freezes the code, API, documentation sources, support claims, migration material, qualification procedure, and distribution artifacts promoted to 2.0. It adds exactly one public declaration and marks no declaration deprecated.
Added: TVector2D.Rotate
GeometryLib.Geometry gains one allocation-free value operation on the TVector2D fixed-size record:
function TVector2D.Rotate(const Angle: Double): TVector2D;
Closed behavior contract:
Angleis in radians; positive values rotate counter-clockwise about the origin.- The source vector is not modified; the result is a new value, so
V := V.Rotate(a)is an ordinary value assignment. - The operation is O(1), allocation-free, thread-safe, and reentrant.
Rotate(Pi / 2)agrees withTVector2D.PerpendicularandRotate(-a)invertsRotate(a)within a stated 1e-15 relative tolerance.- The magnitude is preserved within that tolerance for finite inputs.
- Rotating the zero vector returns the exact zero vector.
- Non-finite angles or components follow the documented GeometryLib IEEE-754 convention (NaN propagates through
Sin/Cos).
The method is documented in the GeometryLib reference and demonstrated by the runnable geometry example, which is now covered by the example-output gate. Focused regression fixtures live in tests/TestGeometryLib.pas and the public-API smoke suite (TestPublicAPI) is extended in the same change.
Deprecation decision: no-deprecation
1.10.0 marks no declaration as deprecated:
- The 1.9.7 migration rehearsal retained
TPressureKit,EPressureError,TVelocityKit, andEVelocityErrorwith exact type/exception identity and no hidden dependency. That decision is unchanged. - All 21 plain compiler aliases reviewed by the 1.9.3 decision remain retained; the common
TFluidDynamicsKit/EFluidDynamicsErrornames stay preferred documentation for new cross-fluid code only. IMatrix,TMatrixKit, andTMatrixKitSparseremain supported compatibility paths directed to the typed facades through explicit copying conversions; no removal runway starts.
No warning, hint, or package move is added. Full 1.x source compatibility is retained throughout 1.10.0.
API snapshot and diff
The historical 1.9 public-API baseline (public-api-1.9.json and API_REFERENCE_1.9.md) is preserved byte-identically and is pinned by SHA-256 in tools/check_docs.py; the frozen 1.9.0-to-1.9.9 diff therefore remains empty without ever mutating its baseline. The current release snapshot and reference (public-api-1.10.0.json and API_REFERENCE_1.10.0.md) are generated from the live src/ interfaces. The exact 1.9.9-to-1.10.0 diff is one added TVector2D.Rotate function row on the TVector2D record (classified recommended through the existing TVector2D common path) plus the corresponding GeometryLib.Geometry unit-interface hash change. No existing declaration, behavior, default, warning, or package membership changes. The 2.0-candidate decision and diff (api-decision-2.0.json, api-diff-1.9-to-2.0.json) name the decided 2-D contract; 3-D rotation remains deferred beyond 2.0.
Upgrade notes
- Existing 1.9 code requires no edit and compiles unchanged.
TVector2D.Rotateis a pure addition on an existing value record; callers keep every existing method, operator, and alias.- No migration step or compatibility package is required for 1.10.0.
Qualification boundary
Local evidence is recorded in QUALIFICATION_1.10.0.md. Exact Linux and Windows checksummed, network-isolated clean-archive release candidate jobs remain mandatory before tagging. The final 2.0 release requires at least two 2.0 release-candidate cycles from tagged source and offline documentation archives per the roadmap.
Known limitations
- 3-D vector rotation is explicitly deferred beyond 2.0 pending a design choice among axis-angle, quaternion, and matrix semantics.
- Deferred families remain visible as unsupported in the capability inventory until a future design activates them.