warp: make the build independent of the CPU, rebuild the fonts
Merged
RI
2d ago+263+263+012345678901234567890123456789-71-71-01234567890123456789
What
Makes the Warp build give the same fonts on every CPU. This replaces #21, which changed only the Bézier terms and left fonts/warp unchanged, so the check "fonts/warp differs from a fresh build" kept failing.
- NumPy chooses SIMD or BLAS kernels per CPU for powers,
hypot,arctan2, sums, cumulative sums and dot products. The last bits change the curve fit.warp/loom/outline.pynow uses products, scalarmathcalls and sums in a fixed order. - Tests run the fit with AVX-512 on and off (they fail on main and pass here).
- The workflow builds a second time without AVX-512 and checks
fonts/warp. - Second commit:
fonts/warpandproofs/warprebuilt with the new code (18 files, net +105 bytes).
Proof
pytest warp/tests 90 passed
CPU tests on origin/main 2 failed
CPU tests on this branch 2 passed
build default vs AVX-512 disabled 18/18 files byte-identical
Fontspector 1.9.0 (universal) 894 PASS, 28 WARN, 0 FAIL, 0 ERROR
fidelity maximum 4.016 % (limit 5 %)
Notes
The OCR gate and the MATH proof need Tesseract and LuaLaTeX, which this machine lacks. The hosted warp workflow runs both. Tags (warp-v0.2.0) stay with the founder.
Summary by CodeRabbit
- Reliability
- Font build results are now consistent across different CPU configurations, with automated checks comparing generated files.
- Quality
- Updated glyph fidelity and sketch-comparison measurements. Most outline changes are limited to the final coordinate bits, though the Regular Xi outline differs by up to 2 font units.
- Documentation
- Updated build and validation notes, including local results and pending hosted OCR and MATH checks.