Dart 2.12 har blitt utgitt, med null-sikkerhet og C interoperabilitet

Google har gitt ut Dart 2.12, en ny versjon av språket som brukes til å bygge apper i Flutter. Utgivelsen kommer sammen med Flutter 2.0.

Med utgivelse av Flutter 2.0, bringer Google også Dart 2.12 til stabil. I tilfelle du ikke visste det, er Dart språket som Flutter bruker. Det er et TypeScript-basert språk, men kommer med noen tillegg til språkfunksjoner, inkludert de jeg skal gå over.

Null sikkerhet

Nullsikkerhet er en ganske flott språkfunksjon. Det tvinger deg til å vurdere om en variabel noen gang vil være null, og eksplisitt håndtere potensielle nullsituasjoner, samtidig som den lar deg garantere at spesifikke variabler aldri vil være null.

I Dart 2.12 er det nå full støtte for null-sikkerhet, med en syntaks som ligner på Swift og Kotlin. Det er til og med smart-casting, der hvis Dart vet med sikkerhet at en normalt nullbar variabel ikke kan være null, vil den implisitt kaste den til en ikke-nullbar form.

Siden null-safety er en (veldig) brytende endring, er denne funksjonen opt-in. Hvis du oppdaterer til Dart 2.12, vil ikke kompileringen din gå i stykker, og du trenger ikke å bruke timer på å legge til nullbarhetstips til alt. Du kan til og med bruke null-safe avhengigheter hvis prosjektet ditt ennå ikke er null-safe.

Når du har bestemt deg for å migrere, kan du bruke det innebygde migreringsverktøyet (dart migrere) og/eller migrasjonsguide for å få alt på plass.

Også, mens null-safety er inkludert i Dart 2.12, hvis du oppretter et nytt Flutter-prosjekt, vil ikke null-safety bli aktivert umiddelbart. Du må aktivere den manuelt. Nye Dart-prosjekter vil ha null-sikkerhet aktivert.

Utenlandsk funksjonsgrensesnitt

Selv om Dart (og Flutters) fokus er på full kompatibilitet på tvers av plattformer, er det fortsatt noen ting som bare må gjøres naturlig. For å gjøre native operasjoner enklere, har Dart et utenlandsk funksjonsgrensesnitt, eller FFI. FFI lar deg samhandle med C-kode fra Dart uten å måtte ty til rare strengbaserte API-kall eller andre klønete interoperabilitetsmetoder.

Og med Dart 2.12 er FFI nå stabil, noe som betyr at den er klar til å brukes i produksjonsprosjekter og for det meste er funksjonsfull.

Med det i tankene er det noen endringer i FFI, inkludert et par brytende.

Mesteparten av fokuset med denne utgivelsen var på hvordan strukturer kan brukes med Dart og C. For det første kan du nå sende strukturer i C-koden din etter referanse og verdi, der tidligere bare referanser ble støttet. En annen viktig funksjon er støtte for nestede strukturer, som ikke var til stede før denne utgivelsen.

Nå for de brytende endringene. Hvis du brukte FFI, må du kanskje oppdatere koden for å fungere med 2.12. Med denne versjonen av FFI kan du ikke lenger lage tomme strukturer. Hvis du trenger en av en eller annen grunn, kan du bruke den nye typen "Opaque". Det er også noen endringer i hvordan noen av FFI innebygde funksjoner fungerer, som du kan les om her.

Til slutt er det en ny pakke for FFI som lar deg generere FFI-innpakninger fra eksisterende C-header-filer, kalt ffigen. Hvis du har mye C-kode du må bruke, med mange API-metoder, vil dette være ganske nyttig. Selv om mengden C-kode du har er liten, er dette en fin bekvemmelighetsfunksjon.


Og det er stort sett det for Dart 2.12. Med tillegg av null-sikkerhet og et stabilt C-interoperabilitetsbibliotek, blir Dart til et svært funksjonsrikt språk. Fortell oss hva du synes om Dart 2.12 i kommentarfeltet!