Piotr raised an interesting question recently which deserves a dedicated thread here: what should our strategy be for supporting various versions of Java? Our current strategy is essentially Java 8 for 2.x and Java 11 for 3.x, but with projects like Spring pushing Java 17 as a base requirement and Java 21 (the latest LTS release) coming out in September, we may want to devise a version support strategy.
As for relevant features in newer releases, we can rely on multi-version jars to support specific APIs, but even some of the more relevant ones like scoped values and string templates are still in preview mode as of version 21.