Repository navigation
Releases
FlatPPL alpha 15
Alpha wheels for CPython 3.12, 3.13, 3.14 and 3.15 on macOS ARM64, Linux x86-64 and Linux ARM64. JAX and jaxlib are pinned to 0.12.0.1.
- Accurate float32
lgammaanddigamma(#42). A new pass,lower-chlo-gamma-f32, rewrites float32chlo.lgammawith the JAX 0.12 float32 algorithm, bit for bit, and float32chlo.digammawith a root-anchored minimax rewrite.hlo_callruns the pass after AD on every path, so a value and its gradient use the same lgamma. float64 is unchanged. - Against mpmath on 100k float32 points (M4 CPU), the maximum error falls:
- lgamma: from 3.9e6 ulp near x = 2 (and unbounded at x = 1) to 2.48 ulp.
- digamma: from 335306 ulp near its root to 4.08 ulp.
- GH200 and GB10 agree with M4 within one ulp, for example lgamma 2.48 ulp and digamma 4.08 ulp at most on positive arguments.
- Near the negative roots of digamma the error stays large. Its mean and 99th percentile are lower than before, but on GPU the single worst point in some unit intervals is higher.
- Speed: one float32 lgamma value costs about 1.6 times as much as before, which is what
jax.lax.lgammacosts since JAX 0.12. digamma and lgamma gradients run about 25% faster. On five posteriordb models the gradient time does not change measurably. - Otherwise identical to alpha14: upstream EnzymeAD/Enzyme-JAX main through 2cc7c1b, manylinux_2_28 on both Linux architectures, macOS 14.
Qualification with JAX 0.12.0.1, every ABI on every platform:
- The ABI check passes.
- The x64 feature tests pass: 72 passed and 8 skipped on macOS, 71 passed and 9 skipped on Linux ARM64, and 70 passed and 9 skipped on Linux x86-64. The x86-64 run also fails the C++
cpp_calltest, as with alpha14, because that host's system C++ headers are not discoverable (see below). hlo_clampingandhlo_linearizepass: 32 tests and 8 subtests.- On Linux x86-64, the C++ checks need the host's system C++ headers to be discoverable, as with alpha14.
- The FlatPPL StableHLO suite gives the same results as alpha14, on one flatppl-rust build (main 109efb3): 1100 passed and 1 skipped on macOS, and 1100 passed and 1 skipped on Linux x86-64 for both alpha14 and alpha15.
Each wheel differs from its qualified staging build only in METADATA and RECORD. SHA256SUMS and provenance.json identify the wheel payloads and the source commit.
FlatPPL alpha 14
Alpha wheels for CPython 3.12, 3.13, 3.14 and 3.15 on macOS ARM64, Linux x86-64 and Linux ARM64. JAX and jaxlib are pinned to 0.12.0.1.
- Syncs upstream EnzymeAD/Enzyme-JAX main through 2cc7c1b (#40). That brings upstream's comparison-fold fixes, dynamic-slice-to-gather fix, reduce_window forward mode and the Enzyme and JAX source bumps.
- Includes the pairwise reduce-add constant fold (#39).
- Integer and boolean inputs are constant in forward mode. The bumped Enzyme differentiates every
enzyme_dupargument, and JAX can pass an instantiated float0 tangent for a boolean input. - The Linux x86-64 wheels are now tagged manylinux_2_28 (alpha13: 2_35), so they install on glibc 2.28 and later. Linux ARM64 stays at 2_28, and macOS at 14.
Qualification with JAX 0.12.0.1, every ABI on every platform:
- The ABI check passes.
- The x64 feature tests pass: 70 passed and 8 skipped on macOS, 69 passed and 9 skipped on Linux; the extra Linux skip is a macOS-only case.
hlo_clampingandhlo_linearizepass: 32 tests and 8 subtests.- On Linux x86-64, the C++ checks need the host's system C++ headers to be discoverable, as with alpha13.
- The FlatPPL StableHLO suite gives the same results as alpha13: 1056 passed on macOS, 1088 passed on Linux x86-64.
Each wheel differs from its qualified staging build only in METADATA and RECORD. SHA256SUMS and provenance.json identify the wheel payloads and the source commit.
FlatPPL alpha13 wheels
Alpha wheels for CPython 3.12, 3.13, 3.14 and 3.15 on macOS ARM64, Linux x86-64 and Linux ARM64. JAX and jaxlib are pinned to 0.12.0.1.
- The wheel requirements move from JAX and jaxlib 0.11.2 to 0.12.0.1.
- The native libraries, Python sources and Clang headers are unchanged from alpha12. Each wheel differs from its alpha12 counterpart only in
METADATAandRECORD.
All twelve wheels pass matching-interpreter ABI checks. With JAX 0.12.0.1, the CPU feature tests pass on every macOS ABI (70 tests, 52 subtests, plus 32 tests and 8 subtests for scan linearization and clamping). On cp312 and cp315 the same suites pass on Linux CPU, A100 and GH200 (64 and 32 tests per run). FlatPPL checks pass: 582 StableHLO cases and 359 Python tests.
Platform floors remain macOS 14, glibc 2.35 on x86-64, and glibc 2.28 on ARM64. C++ calls require a discoverable system C++ standard library. SHA256SUMS and provenance.json identify the wheel payloads and source commit.
FlatPPL alpha12 wheels
Alpha wheels for CPython 3.12, 3.13, 3.14 and 3.15 on macOS ARM64, Linux x86-64 and Linux ARM64. JAX and jaxlib remain pinned to 0.11.2.
- Native Cholesky derivatives and matrix batching, with JAX target kernels selected after differentiation.
- Shared inputs stay unbatched, and shared triangular factors use multiple right-hand sides.
- Pullbacks retain compact broadcast operands instead of expanded copies.
- Wheels include and locate Clang builtin headers.
All nine wheels pass matching-interpreter ABI checks. The final wheels pass 43 CPU feature tests and 37 GPU feature tests on each of A100 and GH200, with four additional subtests per run. FlatPPL checks pass: 557 StableHLO cases and 356 Python tests.
Platform floors remain macOS 14, glibc 2.35 on x86-64, and glibc 2.28 on ARM64. C++ calls require a discoverable system C++ standard library. SHA256SUMS and provenance.json identify the wheel payloads and source commit.
The CPython 3.15 wheels were added on 2026-11-02 from the same source commit, built against CPython 3.15.2 headers. They pass matching-interpreter ABI checks, 43 CPU feature tests on macOS ARM64, and 37 GPU feature tests on each of A100 and GH200, with four additional subtests per run. SHA256SUMS-cp315 and provenance-cp315.json identify them.
FlatPPL alpha 11
Alpha wheels for the FlatPPL Enzyme-JAX fork, with JAX/jaxlib 0.11.2.
- Sync the compiler with upstream
5f463e91..b7445f49(48 commits). - Find the macOS SDK through
$SDKROOTorxcrunwhen compiling C++ kernels.cpp_callnow works on hosts with only the Command Line Tools.
Upstream now carries two earlier fork fixes, so the fork drops its own versions: the strided-slice adjoint padding (upstream EnzymeAD#3628) and the concatenation padding backport (upstream EnzymeAD#3629). The fork keeps its negative-padding guard for that pattern.
Nine wheels support Python 3.12–3.14 on macOS ARM64 and Linux x86-64/ARM64. Requirements remain macOS 14, glibc 2.35 for x86-64 and glibc 2.28 for ARM64.
All nine native ABI checks pass, and all nine wheels pass the upstream test.py smoke run. Four pyhf models pass float32 and float64 forward and derivative checks on GH200. The native suite passes 1,621 tests with nine expected failures. The FlatPPL Python suite passes 299 tests on GH200. See provenance.json and SHA256SUMS for source revisions and wheel hashes.
| Wheel | SHA256 |
|---|---|
enzyme_ad-0.0.15+flatppl.11-cp312-cp312-macosx_14_0_arm64.whl |
32c84ad193ac92470dac5b19c2a70e1b1db081e23802645feb5237b0da8ce520 |
enzyme_ad-0.0.15+flatppl.11-cp312-cp312-manylinux_2_28_aarch64.whl |
eb37b49e7f619f9214236bdb44e491b8ea1fd556cbf516500915820e7d9582c4 |
enzyme_ad-0.0.15+flatppl.11-cp312-cp312-manylinux_2_35_x86_64.whl |
f5b028cc409633b8cfca9df2a95792f443199b90a177d32d68df437459c96d99 |
enzyme_ad-0.0.15+flatppl.11-cp313-cp313-macosx_14_0_arm64.whl |
ee49eb9dde3926e248a032609da12b3c340cbfd744f58e17c15ff74bdef9b0fa |
enzyme_ad-0.0.15+flatppl.11-cp313-cp313-manylinux_2_28_aarch64.whl |
9da36828d5994689c642849416d0c6a68bdacd56dab23298d4bbfe21203bd635 |
enzyme_ad-0.0.15+flatppl.11-cp313-cp313-manylinux_2_35_x86_64.whl |
2b5b408b4e57a39be3fae19d865f09c72df5eecaf22bc003f82c839e10644b42 |
enzyme_ad-0.0.15+flatppl.11-cp314-cp314-macosx_14_0_arm64.whl |
361c75221be2536afbf25ea99ceb8825590ce27b3ecaee64cf3684e49a2531a6 |
enzyme_ad-0.0.15+flatppl.11-cp314-cp314-manylinux_2_28_aarch64.whl |
eba2e74cbfb20131b88b377f9d344fb21773ebe1f12ced6afd987122c47589ad |
enzyme_ad-0.0.15+flatppl.11-cp314-cp314-manylinux_2_35_x86_64.whl |
65774e06b518e3fd1f435dd01a612bfbc1776ebcc113208ea31373f117587af1 |
FlatPPL alpha 10
Alpha wheels for the FlatPPL Enzyme-JAX fork, with JAX/jaxlib 0.11.2.
- Preserve expanded dimensions when merging broadcast slices.
- Preserve residual interior padding when factoring concatenated pads.
These fixes repair rejected or incorrect pyhf derivatives, including the published Belle II model. Each fix has its own commit.
Nine wheels support Python 3.12–3.14 on macOS ARM64 and Linux x86-64/ARM64. Requirements remain macOS 14, glibc 2.35 for x86-64 and glibc 2.28 for ARM64.
All nine native ABI checks pass. Four pyhf models pass float32 and float64 forward and derivative checks on M4 CPU, A100 and GH200. The native suite passes 1,575 tests with nine expected failures. The FlatPPL Python suite passes 296 tests and 82 documentation tests. See provenance.json and SHA256SUMS for source revisions and wheel hashes.
FlatPPL alpha 9
Alpha wheels for the FlatPPL Enzyme-JAX fork, with JAX/jaxlib 0.11.2.
- Keep lossy intermediate floating-point conversions during Enzyme simplification.
- Preserve signed and unsigned index values when narrowing update indices.
- Clamp constant slice and update indices per axis before GPU offset analysis. XLA's offset annotator stays enabled.
The three fixes have separate commits. This release contains nine wheels: Python 3.12, 3.13 and 3.14 on macOS arm64, Linux x86_64 and Linux aarch64. Platform requirements remain macOS 14, glibc 2.35 for x86_64 and glibc 2.28 for aarch64.
All nine native ABI probes pass. The compiler suite passes 1,574 tests with nine expected failures. Sixteen analytic clamping cases cover default and optimized imports. These cases and 13 AD tests pass on M4 CPU, A100 and GH200 with default XLA passes. The current FlatPPL Python package also passes CPU and A100 consumer checks. See provenance.json for exact source commits, test counts and scope. SHA256SUMS records every wheel hash.
The separately installed JAX/XLA runtime still controls excess-precision behavior. These fixes do not change its default flags.
FlatPPL alpha 8
Alpha wheels for JAX/jaxlib 0.11.2 and Python 3.12–3.14 on macOS arm64, Linux x86_64 and Linux aarch64.
This release includes saved-state reuse in reverse scans, upstream compiler updates through 5f463e91, and the upstream GPU SVD correction. Four separate fixes preserve reduction semantics, distinct reduction axes, unsigned update indices through reshape, and inactive masks through differentiable arithmetic.
Validation: 1,571 native tests passed, with nine expected failures. All nine wheel ABIs pass. Values, gradients, JVPs, nested scans and Hessian-vector products pass on M4 CPU, A100, GH200 and GB10 in float32 and float64. The FlatPPL package passes 284 CPU tests and 267 A100 tests, with one optional GPU skip. Sixteen Polars-dependent tests ran on CPU only. Documentation doctests and all six gallery examples pass.
Warm batched float64 variance value-and-gradient time on M4 falls from 3.80–3.91 µs with alpha 7 to 1.34 µs, versus native JAX at 1.42 µs. GPU gains vary by workload. These bounded checks do not establish a general speedup.
SHA256SUMS and provenance.json identify the exact wheel files and tested source tree.
FlatPPL alpha 7
This alpha includes upstream compiler updates through 5aaf264b and the fork's
scan fixes. Reshape propagation preserves shared scan expressions, and scan
fission runs after differentiation. The fixes remain separate feature commits.
Constant-index update padding stays static, so batched integration gradients
remain compatible with XLA after the upstream changes.
Wheels cover Python 3.12, 3.13 and 3.14 on macOS arm64, Linux x86_64 and Linux
aarch64. JAX and jaxlib remain pinned to 0.11.2.
Validation: all nine native ABI loads pass. The native suite passes 1,537 tests
with nine expected failures. M4 passes 284 Python tests; A100 passes 70 batching,
transform and integration tests. Eleven derivative tests pass on M4, A100, GH200
and GB10. Float32 and float64 scan values, JVPs and gradients match the oracles.
On M4, four-lane float64 ARMA value-plus-gradient falls from 81.7–82.9 us to
5.49 us per invocation in a compiled loop (native JAX: 5.35 us). GPU gains depend
on the recurrence and device. The variance recurrence still trails JAX on CPU.
provenance.json records source revisions, the identical build/release tree,
and wheel/native hashes. SHA256SUMS lists the wheel checksums.
FlatPPL alpha 5
This alpha rebuilds the fork on upstream Enzyme-JAX a1dc5d5c. Branch flatppl-main carries the FlatPPL changes as one commit per feature, followed by the fork CI and packaging commits.
Native changes since alpha 4: product reductions differentiate exactly at zero factors, strided-slice adjoints and slice fusions keep their coordinates and extents, floating products keep their order during slice fusion, power simplification preserves domains, digamma and polygamma derivatives are corrected, active optimization barriers differentiate, static scatters are compacted and pruned, and unary CHLO operations batch without lane loops.
Wheels cover Python 3.12, 3.13 and 3.14 on macOS arm64, Linux x86_64 and Linux aarch64. Each wheel has its own native build for its Python version. JAX and jaxlib stay pinned to 0.11.2. provenance.json records each wheel's builder, source revision and native library hash. The Linux aarch64 wheels were added after the first upload.
Validation: all 1,495 lit tests pass on macOS arm64. The Enzyme Python tests pass on macOS arm64, Linux x86_64 and aarch64 CPUs, an A100 GPU and a GH200 GPU, apart from three test-fixture failures in x64 mode that the previous fork build shows too. Each release wheel was installed into a new environment and passed the focused Python tests. Derivative contracts pass in float32 and float64 on M4, A100 and GH200: 80 of 80, 80 of 80 and 118 of 118. The FlatPPL testsuite's StableHLO selection passes 228 of 228 tests.