Dart 2.12 a fost lansat, cu siguranță nulă și interoperabilitate C

Google a lansat Dart 2.12, o nouă versiune a limbajului folosit pentru a crea aplicații în Flutter. Lansarea vine alături de Flutter 2.0.

Cu lansarea Flutter 2.0, Google aduce și Dart 2.12 la stabil. În caz că nu știai, Dart este limbajul pe care îl folosește Flutter. Este un limbaj bazat pe TypeScript, dar vine cu câteva adăugări de caracteristici de limbaj, inclusiv pe cele pe care sunt pe cale să le parcurg.

Siguranță nulă

Siguranța nulă este o caracteristică a limbajului destul de grozavă. Vă obligă să luați în considerare dacă o variabilă va fi vreodată nulă și să se ocupe în mod explicit de situații potențiale nule, permițându-vă totodată să vă garantați că anumite variabile nu vor fi niciodată nule.

În Dart 2.12, există acum suport complet pentru siguranța nulă, cu o sintaxă similară cu Swift și Kotlin. Există chiar și smart-casting, în care, dacă Dart știe sigur că o variabilă care nu poate fi anulată în mod normal nu poate fi nulă, o va arunca implicit într-o formă care nu poate fi anulată.

Deoarece siguranța nulă este o schimbare (foarte) ruptură, această caracteristică este opt-in. Dacă actualizați la Dart 2.12, compilația dvs. nu se va întrerupe și nu va trebui să petreceți ore întregi adăugând indicii de anulare la toate. Puteți chiar să utilizați dependențe sigure pentru nul dacă proiectul dvs. nu este încă sigur pentru nul.

După ce decideți să migrați, puteți utiliza instrumentul de migrare încorporat (dart migra) și/sau ghid de migrare pentru a pune totul la punct.

De asemenea, deși siguranța nulă este inclusă în Dart 2.12, dacă creați un nou proiect Flutter, siguranța nulă nu va fi activată imediat. Va trebui să îl activați manual. Noile proiecte Dart vor avea siguranța nulă activată.

Interfață cu funcție străină

Chiar dacă Dart (și Flutter) se concentrează pe compatibilitatea deplină între platforme, există încă unele lucruri care trebuie făcute nativ. Pentru a ușura operațiunile native, Dart are o interfață cu funcție străină sau FFI. FFI vă permite să interacționați cu codul C de la Dart fără a fi nevoie să recurgeți la apeluri API ciudate bazate pe șiruri sau la alte metode de interoperabilitate greoaie.

Și cu Dart 2.12, FFI este acum stabil, ceea ce înseamnă că este gata pentru a fi utilizat în proiecte de producție și este în mare parte complet cu funcții.

Având în vedere acest lucru, există unele modificări în FFI, inclusiv câteva dintre ele defectuoase.

Cea mai mare parte a atenției cu această versiune a fost asupra modului în care structurile pot fi utilizate cu Dart și C. În primul rând, acum puteți trece structuri în codul dvs. C prin referință și valoare, unde anterior doar referințele erau acceptate. O altă caracteristică importantă este suportul pentru structuri imbricate, care nu era prezent înainte de această lansare.

Acum pentru schimbările de ruptură. Dacă utilizați FFI, poate fi necesar să vă actualizați codul pentru a funcționa cu 2.12. Cu această versiune de FFI, nu mai puteți crea structuri goale. Dacă aveți nevoie de unul dintr-un motiv oarecare, puteți utiliza noul tip „Opac”. Există, de asemenea, unele modificări ale modului în care funcționează unele dintre funcțiile încorporate FFI, pe care le puteți citește despre aici.

În cele din urmă, există un nou pachet pentru FFI care vă permite să generați pachete FFI din fișierele antet C existente, numit ffigen. Dacă aveți o mulțime de cod C pe care trebuie să-l utilizați, cu o mulțime de metode API, acest lucru va fi destul de util. Chiar dacă cantitatea de cod C pe care o aveți este mică, aceasta este o caracteristică confortabilă.


Și cam asta este pentru Dart 2.12. Cu adăugarea de siguranță nulă și o bibliotecă stabilă de interoperabilitate C, Dart se transformă într-un limbaj foarte bogat în funcții. Spuneți-ne ce părere aveți despre Dart 2.12 în comentarii!