Programmiersprache: So sehen die Pläne für Scala 3 aus

Scala-Erfinder Martin Odersky äußert sich zur Zukunft der JVM-Sprache. Die Basis ist das Dotty-Projekt, und Scala 2.14 soll einen sanften Übergang gewährleisten.

 –  13 Kommentare
Programmiersprache: Konkrete Pläne zu Scala 3

Die dritte Hauptversion von Scala nimmt Gestalt an. Martin Odersky, der Erfinder der Programmiersprache, hat nun konkrete Pläne veröffentlicht. Zunächst bestätigt er, was viele bereits vermuteten und er in einem Interview mit heise Developer Anfang 2018 bestätigt hat: Dotty wird zu Scala 3.0 werden. Das Projekt befindet sich seit fünf Jahren in der Entwicklung. Das Akronym "DOT" im Namen steht für "Dependent Object Types".

Zunächst steht jedoch Version 2.14 auf dem Plan, und Scala 3.0 soll vermutlich Anfang 2020 erscheinen. Ein Fokus bei der Entwicklung von Scala 2.14 liegt darauf, den Umstieg auf die nächste Hauptversion möglichst reibungslos zu gestalten. Im Zuge dessen definiert das Team Werkzeuge, die bei der Migration helfen, sowie die zugrunde liegenden Bibliotheken und geplante Deprecations, also als überholt definierte Elemente.

Die Liste der Neuerungen zielt vor allem auf sauberen Code und Vereinfachungen. Dort wo andere Sprachen mit jedem Release immer neue Features einführen, soll Scala vor allem übersichtlicher und konsistenter werden. So will das Team Entwickler verstärkt ermutigen, bewährte Idiome zu verwenden. Gleichzeitig möchte es die Sprache vereinfachen und Unstimmigkeiten beseitigen. In dem Zug ist geplant, im Interesse von Konsistenz, Sicherheit und Performanz, Sprachkonstrukte zusammenzulegen.

Odersky betont, dass Scala 3 keine Runderneuerung bedeutet, sondern es im Kern dieselbe Sprache wie Scala 2 sein wird. Entwickler können ihr Wissen vom aktuellen Stand der Sprache auf die künftige Version übertragen. Der Großteil des durchschnittlichen Scala-2-Codes soll bei der Migration nur minimale Änderungen erfordern, um zu Scala 3 kompatibel zu sein.

Das gilt jedoch nur für den Sourcecode, da die beiden Versionen nicht binärkompatibel sind. Scala-3-Code kann aber Scala-2-Artefakte einbinden, da der Compiler das Classfile-Format ab Scala 2.12 kennt. Das Compiler-Flag -language:Scala2 ermöglicht das Kompilieren von Scala-2-Code und gibt Warnungen bezüglich der Migration und Hinweise zu benötigten Änderungen aus. Scala 2 und Scala 3 teilen sich dieselben Standardbibliotheken.

Viele Änderungen lassen sich wohl mit dem Compiler-Flag -rewrite automatisieren. Außerdem können Entwickler ihre Sourcen auch ohne installiertes Scala 3 mit dem Tool scalafix automatisch in ein Subset der Sprache übersetzen, das mit beiden Hauptversionen funktioniert.

Das Team hat mit dem Compiler dotc bereits einige Erfahrung gesammelt. Er hat unter anderem sich selbst sowie eine wachsende Zahl von Libraries übersetzt. Er lässt sich auch in Read-Eval-Print-Loop-Umgebungen (REPL) einsetzen, um einzelne Ausdrücke direkt auszuführen. Für sbt existiert bereits ein Plug-in für Dotty, und das Team arbeitet an entsprechenden Erweiterungen für andere Build-Werkzeuge.

Scala Days Europe

Vom 14. bis 17. Mai finden in Berlin die Scala Days Europe statt. Martin Odersky wird in der Eröffnungskeynote "2.13 And Beyond" über die Zukunft von Scala und den Weg zu Scala 3 sprechen. Veranstalter sind Lightbend, heise Developer und dpunkt.verlag.

Zur Integration in Entwicklungsumgebungen existiert eine Anbindung an das Language Server Protocol (LSP), mit dem sich unabhängig vom Werkzeug Regeln unter anderem für die Autovervollständigung und das Auffinden von Referenzen definieren lassen. Für Visual Studio Code gibt es bereits ein passendes Plug-in, und das IntelliJ-IDEA-Plug-in bietet ebenfalls eine erste Unterstützung für Scala 3.

Weitere Details lassen sich dem Blogbeitrag von Martin Odersky entnehmen. Die Entwicklung von Scala 3 erfolgt als Open-Source-Projekt auf GitHub, und Odersky ruft die Community dazu auf, sich zu beteiligen. Wer Dotty ausprobieren möchte, findet eine Einstiegshilfe. Eine Developer Preview ist für die erste Hälfte 2019 geplant. Bis dahin erscheinen alle sechs Wochen frische Dotty-Releases.

Siehe dazu auf heise Developer:

(rme)