Paths to Support Additional Numeric Types on the Java Platform
summary
Argues concrete paths: add language-level type-class operator overloading (homogeneous typing, monoid/field witnesses) and VM/library features to avoid per-type JVM churn; demonstrates a working float16 library shipped in JDK 24 Vector module and intrinsified in JDK 25, ~2,500 LOC + 1,000 tests, using float32 fallback and relying on the 2p+2 precision trick for most ops but needing special handling for FMA and correct decimal/string conversions via BigDecimal; notes only ~50 JVM opcodes free, so extensibility is required.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 1:15Abstract algebra overview
- 3:53Algebraic structures in Java
- 10:54Platform implementation challenges
- 16:02Extensible language features
- 25:43Type classes and operator design
- 31:20Float16 case study
- 37:27Modeling future numeric types
- 43:28Complex number considerations
- 47:37Q&A session
related talks
51mPaths to New Numeric Types On the Java Platform
01h 02mVectors and the Numerics on the JVM
42mOperator Overloading with Type Classes
47mForward to the Past: The Case for Uniformly Strict Floating Point Arithmetic on the JVM
16mThe past, present and future of the Java type system
50mThe Cool Thing about Cool Things in Java 16 & 17 LTS
44mIncremental Improvements to the Java Platform
45mBeyond the Hype: Unpacking the Latest Features of JDK
