-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
This issues aims to detail and track the progress towards adopting Java 22 as build and runtime requirement for Trino.
Background and motivation
Trino completely adopted Java 21 as of Trino 436. See https://trino.io/blog/2023/11/03/java-21 and https://trino.io/docs/current/release/release-436.html. Java 21 is a LTS release of Java.
Java 22 brings considerable improvements and additional APIs that enable further progress in terms of performance work done in Project Hummingbird.
Java 22 is a STS Java release and scheduled to ship in March 2024. Adoption timing in Trino will depend on testing results and feedback, as well as the time for implementation and collaboration with Trino community members.
Specifically, for Java 22, these are some features that we want to be able to leverage:
- https://openjdk.org/jeps/423: Region pinning for G1
- https://openjdk.org/jeps/454: Foreign Function & Memory API
- https://openjdk.org/jeps/456: Unnamed Variables and Patterns
- https://openjdk.org/jeps/457: Class File API
- https://openjdk.org/jeps/459: String templates
- https://openjdk.org/jeps/460: Vector API
- https://openjdk.org/jeps/462: Structured Concurrency
- https://openjdk.org/jeps/464: Scoped Values
Implementation
Following steps are roughly in order:
- CI build with Java 22 EA in parallel to Java 21
- Blog post about plan to adopt Java 22, @mosabua and @dain, https://trino.io/blog/2024/03/13/java-22
- Update dependencies as required to support Java 22, @wendigo
- Update JVM in docker container to Java 22, @wendigo
- Wait for official release of Java 22 and Eclipse Temurin binaries (if necessary in terms of timing)
- Ship a release with the updated container image, and solicit user feedback - done with Trino 444
- Update build, docs, and runtime to require Java 22, PR from @wendigo ready
- Ship Trino 445
- Ship Trino 446
- Merge PR to require Java 22
- Announce for developers
- Ship Trino 447, announce, and update blog post