Programmiersprache Kotlin 1.8.20 bringt direkte Anbindung an WebAssembly

Auf dem Weg zu Kotlin 2.0 hat Version 1.8.20 Ergänzungen für den K2-Compiler und Änderungen für Kotlin/Native an Bord.

In Pocket speichern vorlesen Druckansicht
Kotlin

(Bild: Shutterstock)

Lesezeit: 4 Min.
Inhaltsverzeichnis

Drei Monate nach Kotlin 1.8 ist nun Version 1.8.20 erschienen. Das Release bringt weitere Neuerungen für den K2-Compiler, der in Kotlin 2.0 stabil werden soll. Außerdem gibt es Aufräumarbeiten bei Kotlin/Native, und die neue Kotlin/Wasm-Zielplattform für den Build. In der Sprache selbst finden sich nur kleinere Ergänzungen.

Der K2-Compiler soll laut einer im Februar veröffentlichten Roadmap in Kotlin 2.0 stabil sein. Das Team baut den Compiler seit geraumer Zeit um. Mit Kotlin 1.4 kam ein neues IR-Backend (Intermediate Representation, Zwischencode) für die JVM (Java Virtual Machine), das seit Kotlin 1.5 als stabil gilt. Anschließend folgte das Update des JavaScript-IR-Backends.

Die Umsetzung des K2-Frontends kündigte JetBrains im Dezember 2022 an. Mit Kotlin 1.7 hielt es zunächst als Alpha Einzug in die Programmiersprache. Als Ergänzung folgten in Kotlin 1.7.20 erste Compiler-Plug-ins für K2.

Die aktuelle Version bringt nun eine Preview des Serialisierungs-Plug-ins für den K2-Compiler und bietet eine Anbindung an den JS-IR-Compiler für JavaScript. Um den Compiler zu nutzen, muss die Sprachversion entweder über den Compiler-Parameter -language-version oder über einen Eintrag in der Gradle-Datei auf "2.0" gesetzt sein. Der Compiler-Parameter Xuse-k2 ist derweil als veraltet (deprecated) gekennzeichnet.

Eine der spannendsten Neuerungen in Kotlin 1.8.20 ist die Integration des Kotlin/Wasm-Build-Ziels, das zunächst als experimentell gekennzeichnet ist. Damit ist WebAssembly ebenso eine explizite Zielplattform wie die Java Virtual Machine und JavaScript. Bisher ließ sich Kotlin-Code zwar nach WebAssembly kompilieren, allerdings über Kotlin/Native mit dem Target wasm32.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Mit der direkten Anbindung entfällt unter anderem der Umweg über die Compiler-Infrastruktur LLVM, die für Kotlin/Native zum Einsatz kommt. Die Kotlin/Native-Plattform wasm32 ist mit der Einführung von Kotlin/Wasm als überholt gekennzeichnet. Auf GitHub findet sich ein Beispiel für Kotlin/Wasm, und weitere Beispiele sollen wohl folgen.

Bei der nativen Anbindung an diverse Plattformen ohne den Umweg über die JVM bringt Kotlin 1.8.20 einige Anpassungen mit. Sieben Plattformziele für Kotlin/Native sind im aktuellen Release als deprecated gekennzeichnet. Neben wasm32 sind es iosArm32, watchosX86, mingwX86, linuxArm32Hfp, linuxMips32 und linuxMipsel32.

Die restlichen Kotlin/Native-Ziele sind in drei Stufen nach ihrem Support- und Testlevel unterteilt. Die Unterteilung ist nicht nur eine interne Vorgabe, sondern auch eine Richtlinie für externe Libraries.

Kotlin/Native hat mit der Beta von Version 1.7 einen neuen Memory Manager eingeführt, der seit Kotlin 1.7.20 standardmäßig aktiv ist. Der alte Memory Manager gilt damit als deprecated.

In der Sprache selbst gibt es unter anderem die neue Property entries für Enum-Klassen. Sie soll die Funktion values() ersetzen, die ein Array von Enum-Konstanten zurückliefert. Die neue Property ist effizienter, da sie eine vorab allozierte unveränderliche (Immutable) Liste von Enum-Konstanten zurückgibt. Um die als experimentell gekennzeichneten entries zu nutzen, muss die Sprachversion via Compiler-Parameter oder Build-Skript auf 1.9 stehen.

Außerdem bringt Kotlin 1.8.20 Ergänzungen für die in Kotlin 1.7.20 eingeführten Data Objects und erlaubt sekundäre Konstruktoren mit einem Body für Inline-Klassen.

Kotlin – die Sprache mit und ohne JVM

JetBrains hat die Programmiersprache Kotlin ursprünglich für die Java Virtual Machine (JVM) entwickelt. Besonders auf Android hat sie einen Siegeszug angetreten, seit Google sie 2017 offiziell als Alternative zu Java auch in Android Studio aufgenommen und zwei Jahre später zur ersten Wahl für das mobile Betriebssystem erklärt hat. Inzwischen ist die Programmiersprache aber auf diverse Plattformen ausgelegt: Kotlin/Native ermöglicht die Ausführung ohne virtuelle Maschine, vor allem um Plattformen wie iOS abzudecken, die von Haus aus keine JVM an Bord haben.

Mit Kotlin/JS ist zudem eine Anbindung an JavaScript verfügbar, und seit Kotlin 1.2 lassen sich Multiplattformprojekte erstellen, die mit einer Codebasis JVM und JavaScript abdecken. Den Namen, der hierzulande gerne Trolle in Foren anzieht, verdankt die Sprache einer Insel vor St. Petersburg. Das dortige JetBrains-Team hat Kotlin anfänglich maßgeblich entwickelt. Im März 2022 hatte JetBrains als Reaktion auf den russischen Angriffskrieg auf die Ukraine alle russischen Niederlassungen geschlossen und die Mitarbeiterinnen und Mitarbeiter in andere Länder umgezogen.

2020 hat JetBrains einen einheitlichen Releasezyklus für Kotlin gestartet: Das Unternehmen veröffentlicht planmäßig alle sechs Monate ein Feature-Release mit der Versionierung 1.x. Inkrementelle Releases mit der Versionsnummer 1.x.y0 (1.8.10, 1.8.20, ...) sollen alle zwei bis drei Monate erscheinen, und Bugfix-Releases folgen nach Bedarf mit der Versionierung 1.x.yz (1.8.21, 1.8.22, ...).

Weitere Neuerungen in Kotlin 1.8.20 wie das standardmäßig aktivierte inkrementelle Kompilieren für die JVM und Base64 Encoding und Decoding in der Standard-Library lassen sich dem Kotlin-Blog entnehmen. Für Juli ist mit Kotlin 1.9 das letzte Feature-Release der 1.x-Serie geplant. Ob Kotlin 2.0 im gewohnten Halbjahrestakt im Januar 2024 erscheint oder außer der Reihe, ist noch nicht öffentlich bekannt.

Siehe auch:

(rme)