Dart 2.12 is uitgebracht, met nulveiligheid en C-interoperabiliteit

click fraud protection

Google heeft Dart 2.12 uitgebracht, een nieuwe versie van de taal die wordt gebruikt om apps in Flutter te bouwen. De release komt samen met Flutter 2.0.

Met de release van Flutter 2.0Google brengt Dart 2.12 ook naar stable. Voor het geval je het nog niet wist: Dart is de taal die Flutter gebruikt. Het is een op TypeScript gebaseerde taal, maar wordt geleverd met enkele toevoegingen aan taalfuncties, waaronder de toevoegingen die ik zo ga bespreken.

Geen veiligheid

Nulveiligheid is een behoorlijk goede taalfunctie. Het dwingt je om na te denken of een variabele ooit nul zal zijn, en expliciet om te gaan met potentiële nulsituaties, terwijl je ook kunt garanderen dat specifieke variabelen nooit nul zullen zijn.

In Dart 2.12 is er nu volledige ondersteuning voor nul-veiligheid, met een syntaxis vergelijkbaar met Swift en Kotlin. Er is zelfs sprake van smart-casting, waarbij Dart, als hij zeker weet dat een normaal nulbare variabele niet nul kan zijn, deze impliciet naar een niet-nulbare vorm zal casten.

Omdat null-safety een (zeer) baanbrekende wijziging is, is deze functie opt-in. Als u bijwerkt naar Dart 2.12, zal uw compilatie niet kapot gaan en hoeft u geen uren te besteden aan het toevoegen van nullability-hints aan alles. U kunt zelfs null-safe afhankelijkheden gebruiken als uw project nog niet null-safe is.

Zodra u besluit te migreren, kunt u de ingebouwde migratietool gebruiken (pijl migreren) en/of de migratie gids om alles op orde te krijgen.

Hoewel null-safety is opgenomen in Dart 2.12, wordt null-safety niet standaard ingeschakeld als u een nieuw Flutter-project maakt. U moet dit handmatig inschakelen. Voor nieuwe Dart-projecten is nulveiligheid ingeschakeld.

Buitenlandse functie-interface

Hoewel de focus van Dart (en Flutter) ligt op volledige platformonafhankelijke compatibiliteit, zijn er nog steeds enkele dingen die gewoon native moeten worden gedaan. Om native bewerkingen eenvoudiger te maken, heeft Dart een Foreign Function Interface (FFI). Met de FFI kun je communiceren met C-code van Dart zonder dat je je toevlucht hoeft te nemen tot rare, op strings gebaseerde API-aanroepen of andere onhandige interoperabiliteitsmethoden.

En met Dart 2.12 is de FFI nu stabiel, wat betekent dat deze klaar is voor gebruik in productieprojecten en grotendeels compleet is.

Met dat in gedachten zijn er enkele veranderingen in de FFI, waaronder een paar brekende veranderingen.

Bij deze release lag de meeste nadruk op hoe structs kunnen worden gebruikt met Dart en C. Ten eerste kunt u nu structuren in uw C-code doorgeven op basis van referentie en waarde, waar voorheen alleen referenties werden ondersteund. Een andere belangrijke functie is ondersteuning voor geneste structuren, die vóór deze release niet aanwezig was.

Nu de belangrijkste veranderingen. Als u de FFI gebruikte, moet u mogelijk uw code bijwerken om met 2.12 te kunnen werken. Met deze versie van FFI kunt u geen lege structuren meer maken. Als je er om wat voor reden dan ook een nodig hebt, kun je het nieuwe type 'Ondoorzichtig' gebruiken. Er zijn ook enkele wijzigingen in de manier waarop sommige ingebouwde FFI-functies werken, wat u kunt doen lees hier meer over.

Ten slotte is er een nieuw pakket voor de FFI waarmee u FFI-wrappers kunt genereren op basis van bestaande C-headerbestanden, genaamd ffigen. Als je veel C-code hebt die je moet gebruiken, met veel API-methoden, zal dit behoorlijk nuttig zijn. Zelfs als de hoeveelheid C-code die je hebt klein is, is dit een leuke gemaksfunctie.


En dat is het zo ongeveer voor Dart 2.12. Met de toevoeging van nulveiligheid en een stabiele C-interoperabiliteitsbibliotheek verandert Dart in een taal met veel functies. Laat ons weten wat je van Dart 2.12 vindt in de reacties!