Dart 2.12 wurde mit Nullsicherheit und C-Interoperabilität veröffentlicht

click fraud protection

Google hat Dart 2.12 veröffentlicht, eine neue Version der Sprache, die zum Erstellen von Apps in Flutter verwendet wird. Die Veröffentlichung erfolgt zusammen mit Flutter 2.0.

Mit dem Veröffentlichung von Flutter 2.0Google bringt auch Dart 2.12 auf Stable. Falls Sie es nicht wussten: Dart ist die Sprache, die Flutter verwendet. Es handelt sich um eine TypeScript-basierte Sprache, die jedoch einige Sprachfunktionserweiterungen enthält, darunter auch die, die ich gleich besprechen werde.

Null Sicherheit

Nullsicherheit ist eine ziemlich großartige Sprachfunktion. Es zwingt Sie dazu, zu überlegen, ob eine Variable jemals null sein wird, und potenzielle Nullsituationen explizit zu behandeln, während Sie gleichzeitig garantieren können, dass bestimmte Variablen niemals null sein werden.

In Dart 2.12 gibt es jetzt volle Unterstützung für Nullsicherheit mit einer Syntax ähnlich der von Swift und Kotlin. Es gibt sogar Smart-Casting, bei dem Dart, wenn er sicher weiß, dass eine normalerweise nullfähige Variable nicht null sein kann, sie implizit in eine nicht nullfähige Form umwandelt.

Da es sich bei der Nullsicherheit um eine (sehr) bahnbrechende Änderung handelt, ist diese Funktion optional. Wenn Sie auf Dart 2.12 aktualisieren, bricht Ihre Kompilierung nicht ab und Sie müssen nicht stundenlang alles mit Nullbarkeitshinweisen versehen. Sie können sogar nullsichere Abhängigkeiten verwenden, wenn Ihr Projekt noch nicht nullsicher ist.

Sobald Sie sich für eine Migration entschieden haben, können Sie das integrierte Migrationstool verwenden (Dart migrieren) und/oder die Migrationsleitfaden um alles einzurichten.

Auch wenn Null-Sicherheit in Dart 2.12 enthalten ist, wird Null-Sicherheit nicht sofort aktiviert, wenn Sie ein neues Flutter-Projekt erstellen. Sie müssen es manuell aktivieren. Bei neuen Dart-Projekten ist die Nullsicherheit aktiviert.

Fremdfunktionsschnittstelle

Auch wenn der Fokus von Dart (und Flutter) auf vollständiger plattformübergreifender Kompatibilität liegt, gibt es dennoch einige Dinge, die einfach nativ erledigt werden müssen. Um native Vorgänge zu vereinfachen, verfügt Dart über eine Fremdfunktionsschnittstelle (FFI). Mit dem FFI können Sie mit C-Code von Dart interagieren, ohne auf seltsame stringbasierte API-Aufrufe oder andere umständliche Interoperabilitätsmethoden zurückgreifen zu müssen.

Und mit Dart 2.12 ist das FFI jetzt stabil, d. h. es kann in Produktionsprojekten verwendet werden und verfügt größtenteils über vollständige Funktionen.

Vor diesem Hintergrund gibt es einige Änderungen im FFI, darunter auch einige bahnbrechende.

Der Schwerpunkt dieser Version lag vor allem darauf, wie Strukturen mit Dart und C verwendet werden können. Zum einen können Sie jetzt Strukturen in Ihrem C-Code als Referenz und Wert übergeben, wo bisher nur Referenzen unterstützt wurden. Eine weitere wichtige Funktion ist die Unterstützung verschachtelter Strukturen, die es vor dieser Version nicht gab.

Nun zu den bahnbrechenden Änderungen. Wenn Sie FFI verwendet haben, müssen Sie möglicherweise Ihren Code aktualisieren, damit er mit 2.12 funktioniert. Mit dieser Version von FFI können Sie keine leeren Strukturen mehr erstellen. Wenn Sie aus irgendeinem Grund einen benötigen, können Sie den neuen Typ „Opaque“ verwenden. Es gibt auch einige Änderungen an der Funktionsweise einiger der integrierten FFI-Funktionen, die Sie vornehmen können Lesen Sie hier darüber.

Schließlich gibt es ein neues Paket für das FFI, mit dem Sie FFI-Wrapper aus vorhandenen C-Header-Dateien generieren können ffigen. Wenn Sie viel C-Code mit vielen API-Methoden verwenden müssen, ist dies sehr hilfreich. Auch wenn die Menge an C-Code, die Sie haben, gering ist, ist dies eine nette Komfortfunktion.


Und das ist so ziemlich alles für Dart 2.12. Durch die Hinzufügung von Nullsicherheit und einer stabilen C-Interoperabilitätsbibliothek wird Dart zu einer sehr funktionsreichen Sprache. Teilen Sie uns in den Kommentaren Ihre Meinung zu Dart 2.12 mit!