@@ -11,14 +11,14 @@ The Scala 3 Next minors in 2025 Q4 and the next LTS will drop JDK 8 support. We
1111
1212## Immediate motivation
1313
14- The recent [ JEP 471 ] ( https://openjdk.org/jeps/471 ) stated that the memory-access
15- methods in ` sun.misc.Unsafe ` are scheduled for removal in a future release .
16- Currently, Scala 3 uses ` sun.misc.Unsafe ` in its implementation of lazy values .
17- This was needed due to compatibility with JDK 8. In order to support JDK 25+, we
14+ The memory-access methods in ` sun.misc.Unsafe ` are scheduled for removal in a
15+ future JDK, as stated in the recent [ JEP 471 ] ( https://openjdk.org/jeps/471 ) .
16+ Currently, Scala 3 uses ` sun.misc.Unsafe ` in its implementation of ` lazy val ` .
17+ In order to support JDK 25+, we
1818will need to drop usage of ` Unsafe ` . We are investigating the required changes
1919under [ this issue] ( https://github.com/scala/scala3/issues/9013 ) .
2020
21- It also started to dawn on the compiler team that we might consider dropping
21+ It then started to dawn on the compiler team that we might consider dropping
2222support for JDK 8 altogether in a future release of Scala 3.
2323
2424## Long term motivation
@@ -33,11 +33,10 @@ check the current status, take a look at the issues marked with the
3333Some of the features that might be interesting to the Scala community are:
3434
3535- [ JEP 181] ( https://github.com/scala/scala3/issues/22292 ) will allow classes
36- that are logically part of the same code entity, but which are compiled to
37- distinct class files, to access each other's private members. This is
38- especially useful for nested classes or companions. Currently, the Scala
36+ that are logically connected, to access each other's private members. This could
37+ be useful for representing nested classes and companion objects. (Currently, the Scala
3938 compiler has to insert public bridge methods to broaden the accessibility of
40- those members.
39+ those members.)
4140- [ JEP 409] ( https://github.com/scala/scala3/issues/22298 ) introduces sealed
4241 classes. It would allow the compiler to better represent Scala's sealed trait
4342 hierarchies.
@@ -53,15 +52,16 @@ authors. They currently have to take into account a large number of different
5352versions, both for correctness and performance. Thus, the benefits of this
5453change will be felt ecosystem-wide.
5554
56- JDK 8 was first published on 18th March 2014, over 10 years ago. JDKs have
57- advanced greatly through that period . In order to stay competitive, using those
58- advancements is a must. A lot of the existing distributions, such as
59- [ Oracle's one ] ( https://www.oracle.com/java/technologies/java-se-support-roadmap.html ) ,
55+ JDK 8 was first published in 2014, over 10 years ago. JDKs have
56+ advanced greatly since then . In order to stay competitive, using those
57+ advancements is a must. A lot of the existing distributions, including
58+ [ Oracle's own ] ( https://www.oracle.com/java/technologies/java-se-support-roadmap.html ) ,
6059have already stopped or will soon stop updating JDK 8 with security and other
61- fixes. Staying on JDK 8 might directly impact issues within your business
62- applications.
60+ fixes. It is of course possible not to update your libraries and compiler version, to
61+ avoid having to switch to a newer JDK. However, that is highly discouraged,
62+ as it will make you vulnerable to potential security risks.
6363
64- Some larger projects within JVM and Scala ecosystems have already dropped JDK 8
64+ Some larger projects in the Java and Scala ecosystems have already dropped JDK 8
6565support in favor of JDK 11 or even 17.
6666
6767Java examples include:
@@ -92,9 +92,7 @@ Scala examples include:
9292- [ Li Haoyi's ecosystem] ( https://github.com/com-lihaoyi ) requires JDK 11 across
9393 the board
9494
95- It is always possible not to update your libraries and compiler version, which
96- will avoid having to switch to a newer JDK. However, that is highly discouraged,
97- as it will make you vulnerable to potential security risks.
95+ This shows that the rest of the industry is already moving away from JDK 8.
9896
9997## Plan for making the switch
10098
0 commit comments