ICFP/SPLASH 2025
Sun 12 - Sat 18 October 2025 Singapore
Fri 17 Oct 2025 10:30 - 11:00 at Peony NE - Compiler & Runtime Chair(s): Fermin Reig

OCaml’s flat float array optimization stores floating-point values directly in arrays rather than through pointers, preventing performance degradation for numerical algorithms. However, this optimization requires that all types be \textit{separable} — containing either all float values or none. This restriction prevents certain useful types, such as unboxed existentials and an unboxed version of options. We present the approach taken by OxCaml (OCaml with Jane Street’s extensions) to tracking separability through the type system using a three-valued separability axis. This design enables previously rejected non-separable types while maintaining compatibility with existing code and enabling new optimizations for arrays of known non-float types. Our implementation builds on OxCaml’s kind system but could be adapted to vanilla OCaml.

Paper (ocaml2025-paper6.pdf)374KiB

Fri 17 Oct

Displayed time zone: Perth change