So Java 21 deprecates, but does not eliminate, Java 8 compatibility.

You get an unavoidable warning. To support Java 21, a LTS Java release, we
either need to

(a) turn off fatal warnings for Java and Scala compilation when compiling
with Java 21.
or
(b) we need to set the release compatibility higher. Our choices here are
Java 11, 17, or 21.
or
(c) don't support Java21 officially yet

I suggest (c) is the right thing, but our next release should be Daffodil
4.0.0 and it should require Java 11 across the board, eliminating Java 8.

Java 8 is still in use by some, but is clearly past what anyone wants to
support any more.

A few comments people can agree or disagree with.

1) We should avoid Daffodil releases that require two different sets of
Class files - one for say, Java 8, and one for a more modern JVM.

2) Requiring a new JVM beyond Java 8 is a big deal, and motivates a bump to
version 4.0.0 of Daffodil.

3) Java 21 is new now, so while we can put in changes to eventually support
it, we are not forced to support it yet. It also requires Scala 2.12.18 for
example, which we're now compiling with.

4) In general, I think we've not moved major versions often enough to
signal the incompatibilities. Support for Java 17 required using Scala
2.12.15 at least, and that was probably enough to motivate a major release
number bump. Certainly the package renaming from Daffodil 3.4.0 to Daffodil
3.5.0 was a mistake and should have been a bump of major version to 4.0.0

5) We should "in effect" deprecate 3.5.0 and suggest people jump to 4.0.0
instead, and that means releasing 4.0.0 very soon. 3.5.0 should be our last
release which supports Java 8 JVMs.

Thoughts?

Mike Beckerle
Apache Daffodil PMC | daffodil.apache.org
OGF DFDL Workgroup Co-Chair | www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
Owl Cyber Defense | www.owlcyberdefense.com

Reply via email to