On this page

Supported platform matrix

Version 2.2.0 uses Free Pascal source and standard RTL/FCL units only. The machine-readable source for this matrix is portability-evidence-1.9.6.json; the evidence report explains the unchanged target contract and audit. The 1.9.7 migration rehearsal adds source/package consumer evidence, and the 1.9.8 representative workflow qualification adds multi-domain end-to-end workflow evidence without expanding the supported target matrix. The 1.9.9 convergence gate closed the 1.10.0 handoff, and the frozen 1.10.0 baseline adds no target-matrix change.

Support tiers and current evidence

The 2.2.0 release qualification passed on 2026-09-27 for both primary targets from checksummed clean archives. The 2.0.0 qualification remains historical.

Tier Compiler OS / CPU Pointer width Single / Double / Extended storage Last retained successful evidence Exact profile
Primary FPC 3.2.2 Windows x86-64 64-bit 4 / 8 / 8 bytes 2.2.0 clean-archive qualification, 2026-09-27 P-Windows
Primary FPC 3.2.2 Linux x86-64 64-bit 4 / 8 / 10 bytes 2.2.0 clean-archive qualification, 2026-09-27 P-Linux
Secondary FPC 3.2.2 Windows i386 32-bit 4 / 8 / 10 bytes 1.9.6 retained evidence; reruns on each change S-Win32

Evidence dates and refs describe configurations that actually ran. They are not inferred across operating systems, CPUs, pointer widths, or Unix families. The finalized release/2.2.0 commit produced new Linux and Windows primary artifacts. See the linked qualification record for run and artifact details.

Exact profiles

  • P-Windows: normal, -O3, runtime-checked/heap-traced tests; all examples and output contracts; documentation, generated site, extracted offline HTML, numerical mutation, performance, and portability gates; Lazarus package; checksummed clean ZIP verified by the qualification driver from the extracted archive (no machine-level outbound block: the GitHub hosted runner disconnects when outbound is blocked).
  • P-Linux: the same full profile except the Lazarus package, which is not a Linux release claim; checksummed clean tar.gz with new outbound connections blocked and the driver's network-isolated challenge.
  • S-Win32: -O2 full tests, the native ABI/binary portability probe and source/package audit, and the Lazarus package. This tier does not imply the primary documentation, benchmark, or heap-traced profile.

Primary normal checks run on pushes to main and pull requests targeting main. The complete primary archive profiles run on demand, for each qualifying published release tag, and weekly to detect drift before a release candidate.

Explicitly unqualified targets

macOS/ARM64, Linux/ARM64, other Unix variants, and other compiler versions may compile, but are not release-qualified. No ABI, numerical, archive, package, or support claim is extrapolated for them. macOS/ARM64 will be added only when a maintainable runner provides repeatable native probe, numerical, and clean- archive evidence.

ABI and portability limits

  • Single and Double are IEEE binary32 and binary64 on the qualified targets. Extended is a Double alias on Win64 and the 80-bit x87 format on the qualified Linux x86-64 and Windows i386 targets. Typed dense and sparse storage deliberately excludes Extended in 1.9.
  • Dimensions use SizeInt; allocation products are checked before allocation. Practical dimensions remain bounded by address space and available memory, especially on the Win32 secondary tier.
  • Versioned binary interchange writes explicit little-endian fields and scalar payloads and never writes Pascal record layouts. The native probe checks the exact one-element fixture on every qualified target.
  • Invariant interchange supplies its own decimal separator. Human-oriented unit-conversion string parsing follows the process numeric locale, as documented in EngineeringLib.UnitConversion; callers needing portable interchange should use the invariant APIs.
  • Stable source units do not load DLLs/shared objects, import networking or process units, declare foreign calling conventions, or require generated source. The Lazarus package requires only FCL.

Installing without network access

Download a source archive and its published SHA-256 while online, transfer both files to the offline machine, verify the checksum, and extract the archive. Adding src/ to the FPC unit path is sufficient; no configure or generation step is required. The release page also provides a separately checksummed offline HTML ZIP generated from the same tagged documentation. Extract it and open the latest published archive, mathlib-fp-docs-2.2.0/index.html, locally.

The release qualification workflows perform these same checksum, clean- extraction, direct-source, representative-workflow, documentation, and package checks after toolchain installation. Linux runs them with new outbound connections blocked, and the release driver actively challenges that policy, failing if a new outbound connection succeeds. Windows runs the same full gate battery from the extracted clean ZIP and verifies its checksum, but it cannot machine-block outbound traffic without disconnecting the hosted runner, so it does not attempt that block.