From 70d6fd5a986a5a2ef8e94e07bfe350ed73321d65 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Tue, 18 Sep 2018 14:43:58 +0200 Subject: [PATCH 1/3] Sharpen wording, mention Java 11 --- _overviews/jdk-compatibility/overview.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 62bdde63de..13017d03b1 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -17,7 +17,7 @@ This table shows the first Scala release in each series that works with each JVM | JVM version | Minimum Scala versions | |:-----------:|:----------------------------------------------------------------------------------------------| -| 9, 10 | 2.12.4[¹](#jdk-9--10-compatibility-notes), 2.11.12[¹](#jdk-9--10-compatibility-notes), 2.10.7 | +| 9, 10 | 2.12.4[¹](#jdk-9--up-compatibility-notes), 2.11.12[¹](#jdk-9--up-compatibility-notes), 2.10.7 | | 8 | 2.12.0, 2.11.0, 2.10.2 | | 7 | 2.11.0, 2.10.0 | | 6 | 2.11.0, 2.10.0 | @@ -26,9 +26,11 @@ This table shows the first Scala release in each series that works with each JVM ## 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. +We recommend using Java 8 for *compiling* 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* ("Long Term Support"; see http://www.oracle.com/technetwork/java/eol-135779.html) 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. +We try to provide experimental support for running the Scala compiler on LTS versions of Java ("Long Term Support"; see http://www.oracle.com/technetwork/java/eol-135779.html), and to the extent possible will include the current LTS Java version in our CI matrix and the community build. We will not, a priori, consider non-LTS Java versions. Compiler bugs related to Java versions other than the supported one (Java 8), will be scheduled with lower priority, and will not be considered release blockers. Lightbend does offer commercial support for faster resolution of issues like this. + +Scala code compiled on Java 8 should run without problems in later JVMs, and we will give higher priority to bugs that break this property. For example, in the 2.13.x series we intend to provide support for JPMS module access checks, to allow ensuring your code won't incur `LinkageErrors` due to module access violations. ## Dropping old JVMs @@ -36,12 +38,12 @@ Some Scala releases increase the *required* JVM versions for a Scala release. To For example, Scala 2.12 raised the minimum JVM, for both compiling and running, from version from 6 to 8. This was done so we could take advantage of new features in 8 such as lambdas and default methods. -Like the 2.12.x series, the Scala 2.13.x series will support Java 8 and higher. (Eventually Java 11 or higher will become required, but the earliest this might happen is Scala 2.14.) +Like the 2.12.x series, the Scala 2.13.x series will support Java 8 and higher. (We may bump this to Java 11, but this is unlikely to happen in the 2.x series.) -## ¹JDK 9 & 10 compatibility notes +## ¹JDK 9 & up compatibility notes -As of Scala 2.12.6 and 2.11.12, **JDK 9 & 10 support is incomplete**. Notably, `scalac` will not enforce the restrictions of the Java Platform Module System, which means that code that typechecks may incur linkage errors at runtime. +As of Scala 2.12.6 and 2.11.12, **JDK 9+ support is incomplete**. Notably, `scalac` will not enforce the restrictions of the Java Platform Module System, which means that code that typechecks may incur linkage errors at runtime. Scala 2.13.x will provide [rudimentary support](https://github.com/scala/scala/pull/7218) for this, but likely only in nightlies built on Java 11. -JDK 9 & 10 support requires minimum sbt version 1.1.0, or 0.13.17 in the 0.13.x series. +JDK 9+ support requires minimum sbt version 1.1.0, or 0.13.17 in the 0.13.x series. -For more information on JDK 9 & 10 compatibility, watch the ["Support JDK 9"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue on GitHub. +For more information on JDK 9+ compatibility, watch the ["Support JDK 9"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue on GitHub. To help with testing Java 11, the next LTS version, see https://github.com/scala/scala-dev/issues/559. From 66531ecf22c1675b7423dc0eb3415394f9a689be Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Tue, 18 Sep 2018 14:50:45 +0200 Subject: [PATCH 2/3] Linkify ticket --- _overviews/jdk-compatibility/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 13017d03b1..884a33a0cf 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -46,4 +46,4 @@ As of Scala 2.12.6 and 2.11.12, **JDK 9+ support is incomplete**. Notably, `scal JDK 9+ support requires minimum sbt version 1.1.0, or 0.13.17 in the 0.13.x series. -For more information on JDK 9+ compatibility, watch the ["Support JDK 9"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue on GitHub. To help with testing Java 11, the next LTS version, see https://github.com/scala/scala-dev/issues/559. +For more information on JDK 9+ compatibility, watch the ["Support JDK 9"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue on GitHub. To help with testing Java 11, the next LTS version, see [scala/scala-dev#599](https://github.com/scala/scala-dev/issues/559). From dd9674d9b63f178614ff886002874596b2e75996 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Tue, 18 Sep 2018 14:51:27 +0200 Subject: [PATCH 3/3] 559 --- _overviews/jdk-compatibility/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_overviews/jdk-compatibility/overview.md b/_overviews/jdk-compatibility/overview.md index 884a33a0cf..eda74cedf9 100644 --- a/_overviews/jdk-compatibility/overview.md +++ b/_overviews/jdk-compatibility/overview.md @@ -46,4 +46,4 @@ As of Scala 2.12.6 and 2.11.12, **JDK 9+ support is incomplete**. Notably, `scal JDK 9+ support requires minimum sbt version 1.1.0, or 0.13.17 in the 0.13.x series. -For more information on JDK 9+ compatibility, watch the ["Support JDK 9"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue on GitHub. To help with testing Java 11, the next LTS version, see [scala/scala-dev#599](https://github.com/scala/scala-dev/issues/559). +For more information on JDK 9+ compatibility, watch the ["Support JDK 9"](https://github.com/scala/scala-dev/issues/139 "scala/scala-dev #139") issue on GitHub. To help with testing Java 11, the next LTS version, see [scala/scala-dev#559](https://github.com/scala/scala-dev/issues/559).