Scala 2.12.3 Released
github.com
github.com
Scala 2.12 has moved to Java 8 indeed, however this means modern features that are used for encoding Scala: invokeDynamic and default interface methods.
These should make Scala compiled code faster and more stable in regards to backwards compatibility. Both Java 6 and 7 have need EOLed. We cannot stand still because of Android's shitty support.
Google has effectively fractured the ecosystem, pulling off what Microsoft couldn't do with J#, and they got away with it. I actually think that they preferred to announce Kotlin as being a first class citizen as a marketing trick in order to offset the lack of support for Java 8.
Even so, Scala does in fact have great Android support:
1. Scala 2.11 will remain supported for some time, language-level features have already been backported from 2.12 and Typelevel.org also has a commitment to support it even further
2. We have great integration with the tool chain, see https://github.com/scala-android/sbt-android
3. For a pretty cool open source project made with Scala, that uses functional programming libraries like Cats and Monix, see: http://www.9cards.io
So if you think about it, given all the other tooling available, compared with other languages Scala actually has stellar support, along with actual projects ;-)
Mostly because of the SV love, that Microsoft lacked.
Sun and Oracle were right all along.
> Even so, Scala does in fact have great Android support:
I don't agree with it, because for me having to deal with SBT, outdated android plugins in InteliJ and GUI DSLs instead of Gradle, Android Studio and Studio GUI designer isn't a synonym for great.
Maybe it changed during the last two years, but that was the scenario I faced.
Finally getting some kind of official support for Java 8 and addition of Kotlin solved that problem.
Or because one is the official language for targeting the most popular consumer OS in the world, whereas the other is just a transitional language that has no real advantages over the alternatives for the same platform.
So they can get away with what Microsoft wasn't allowed to do , I get it.
It is sad that Oracle's legal could not deliver on copyright or patent cases.
InteliJ is always behind Android Studio, specially Canary version.
Even though I very much wanted this to be true, that promise has been broken. Scala 2.11 has been EOL'ed 3 months ago with 2.11.11.
Diagnostics:
- A method that takes an additional, implicit parameter that needs to be filled in by the compiler
- the Scala compiler synthesized an argument for that parameter using macros
- instead of using an existing value in the implicit scope
Conclusion: that's why a small source file took so long to typecheck.
Details at https://jobs.zalando.com/tech/blog/achieving-3.2x-faster-sca...
1. Ports from 2.12.x: https://github.com/scala/scala/pull/6001.
2. The removal of Scala parallel collections from the Standard library: https://github.com/scala/scala/pull/5603. Read discussion to find out why.
Does this just mean that the import statement has to be changed, or does it mean that I need to use SBT to dynamically download yet another thing?
Nearly twice as fast is pretty impressive IMO.
As far as I'm concerned, they are working on a way to upgrade to Scala 2.12. But closure serialization is the main blocker IIRC, for now.
I appreciate they have legitimate reasons and am not critical of them for it. It's just that many users of Spark are doing so through vendors like Cloudera, Hortonworks, Amazon EMR etc. And so, since companies often don't have the money/time to just continuously upgrade production Hadoop clusters often users are stuck on older versions of Spark for a very long time e.g. months or years.
This translates to if you're working in Big Data everything you touch must support 2.10.
That's the scary bit of detail about Scala releases, so far - I find that an upgrade of the compiler is only possible if you've ready to build up everything.
In Java you can use an old dusty library from 15 years ago without a problem.
2.12 was a major release; even a semi-active developer would recompile. If a dependency did break, then sbt just helped you avoid using an unmaintained library.
> As usual for minor releases, Scala 2.12.3 is binary compatible with the whole Scala 2.12 series.