-
Notifications
You must be signed in to change notification settings - Fork 1k
Elaborate on our policy for supporting JVM versions #1042
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There are two axes regarding the required or supported JVM version: - running Scala code, - compiling Scala code, and on both there is a lower and upper bound of the supported JVM.
| ### Running versus compiling and required / supported JVM | ||
| For most users, we recommend using Java 8 for *compiling* (and running) Scala code. Since the JVM is backward compatible, it is usually safe to use a newer JVM to *run* your code compiled by the Scala compiler for older JVM versions. There are notable exceptions with experimental/unsafe features, and the introduction of the module system in Java 9. The Scala compiler does usually need updates to run properly on newer versions of the JVM, so make sure to use the appropriate JVM when compiling your code. | ||
|
|
||
| Issues with using the Scala compiler on *non-LTS* versions of Java will not necessarily be considered blockers for releases, but we will do our best to run CI on more versions of Java to catch bugs early, and to fix them as quickly as reasonably possible. If regressions do occur with non-LTS (or, generally, unsupported) versions of Java, we may bring the next minor release deadline a bit closer, so that these issues are generally resolved within a month or two. Lightbend does offer commercial support for faster resolution of issues like this. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should define "LTS".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done in dce41f9
| | 6 | 2.11.0, 2.10.0 | | ||
|
|
||
| ### Running versus compiling and required / supported JVM | ||
| For most users, we recommend using Java 8 for *compiling* (and running) Scala code. Since the JVM is backward compatible, it is usually safe to use a newer JVM to *run* your code compiled by the Scala compiler for older JVM versions. There are notable exceptions with experimental/unsafe features, and the introduction of the module system in Java 9. The Scala compiler does usually need updates to run properly on newer versions of the JVM, so make sure to use the appropriate JVM when compiling your code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This limits the user from being able to call Java 9 APIs. Perhaps we should be explicit about that restriction.
|
There are probably more steps in our support.
These might require a blog to articulate and relate to our roadmap, so the approximation you've started with could be enough for this document. |
|
Jason has made some suggestions that aren't addressed, but I suggest we merge anyway since this is topical right now because of the regression in 2.12.5. We can always improve it more later. |
| This table shows the first Scala release in each series that works with each JVM release. | ||
|
|
||
| | JVM version | First Scala compiler release supported to run on this JVM | | ||
| | JVM version | Minimum Scala versions | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to me specifying "compiler" here was helpful..
|
I'll loop back to update this to complement my forthcoming blog on the topic. |
| ## JDK 9 compatibility notes | ||
| ## Running versus compiling | ||
|
|
||
| For most users, we still recommend using Java 8 for *compiling* (and running) Scala code. Since the JVM is backward compatible, it is usually safe to use a newer JVM to *run* your code compiled by the Scala compiler for older JVM versions. There are notable exceptions with experimental/unsafe features, and the introduction of the module system in Java 9. The Scala compiler does usually need updates to run properly on newer versions of the JVM, so make sure to use the appropriate JVM when compiling your code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suggest removing the parenthesis in (and running).
There are two axes regarding the required or supported JVM version:
and on both there is a lower and upper bound of the supported JVM.