Η Google κυκλοφόρησε το Dart 2.12, μια νέα έκδοση της γλώσσας που χρησιμοποιείται για τη δημιουργία εφαρμογών στο Flutter. Η κυκλοφορία έρχεται μαζί με το Flutter 2.0.
Με την κυκλοφορία του Flutter 2.0, η Google φέρνει επίσης το Dart 2.12 σε σταθερό. Σε περίπτωση που δεν το ξέρατε, το Dart είναι η γλώσσα που χρησιμοποιεί το Flutter. Είναι μια γλώσσα που βασίζεται σε TypeScript, αλλά συνοδεύεται από ορισμένες προσθήκες γλωσσικών χαρακτηριστικών, συμπεριλαμβανομένων αυτών που πρόκειται να εξετάσω.
Μηδενική ασφάλεια
Η μηδενική ασφάλεια είναι μια πολύ καλή δυνατότητα γλώσσας. Σας αναγκάζει να εξετάσετε εάν μια μεταβλητή θα είναι ποτέ μηδενική και να αντιμετωπίσετε ρητά πιθανές μηδενικές καταστάσεις, ενώ σας επιτρέπει επίσης να εγγυηθείτε ότι συγκεκριμένες μεταβλητές δεν θα είναι ποτέ μηδενικές.
Στο Dart 2.12, υπάρχει πλέον πλήρης υποστήριξη για μηδενική ασφάλεια, με σύνταξη παρόμοια με το Swift και το Kotlin. Υπάρχει ακόμη και το smart-casting, όπου αν ο Dart γνωρίζει με βεβαιότητα ότι μια κανονικά μηδενιζόμενη μεταβλητή δεν μπορεί να είναι μηδενική, θα τη μεταφέρει σιωπηρά σε μια μη μηδενική μορφή.
Δεδομένου ότι η μηδενική ασφάλεια είναι μια (πολύ) σημαντική αλλαγή, αυτή η δυνατότητα είναι ενεργοποιημένη. Εάν κάνετε ενημέρωση στο Dart 2.12, η συλλογή σας δεν θα χαλάσει και δεν θα χρειαστεί να αφιερώσετε ώρες προσθέτοντας υποδείξεις μηδενισμού σε όλα. Μπορείτε ακόμη και να χρησιμοποιήσετε μηδενικές εξαρτήσεις, εάν το έργο σας δεν είναι ακόμη ασφαλές.
Μόλις αποφασίσετε να μετεγκαταστήσετε, μπορείτε να χρησιμοποιήσετε το ενσωματωμένο εργαλείο μετεγκατάστασης (βέλος μετανάστευση) και/ή το οδηγός μετανάστευσης για να ρυθμίσετε τα πάντα.
Επίσης, ενώ το null-safety περιλαμβάνεται στο Dart 2.12, εάν δημιουργήσετε ένα νέο έργο Flutter, το null-safety δεν θα ενεργοποιηθεί εκ των υστέρων. Θα χρειαστεί να το ενεργοποιήσετε χειροκίνητα. Τα νέα έργα Dart θα έχουν ενεργοποιημένη τη μηδενική ασφάλεια.
Διεπαφή ξένης λειτουργίας
Παρόλο που η εστίαση του Dart (και του Flutter) είναι στην πλήρη συμβατότητα μεταξύ πλατφορμών, εξακολουθούν να υπάρχουν ορισμένα πράγματα που πρέπει απλώς να γίνουν εγγενώς. Για να διευκολύνει τις εγγενείς λειτουργίες, το Dart διαθέτει διεπαφή ξένων λειτουργιών ή FFI. Το FFI σάς επιτρέπει να αλληλεπιδράτε με τον κώδικα C από το Dart χωρίς να χρειάζεται να καταφεύγετε σε περίεργες κλήσεις API που βασίζονται σε συμβολοσειρές ή άλλες άβολες μεθόδους διαλειτουργικότητας.
Και με το Dart 2.12, το FFI είναι πλέον σταθερό, πράγμα που σημαίνει ότι είναι έτοιμο να χρησιμοποιηθεί σε έργα παραγωγής και είναι ως επί το πλείστον ολοκληρωμένο.
Έχοντας αυτό κατά νου, υπάρχουν κάποιες αλλαγές στο FFI, συμπεριλαμβανομένων κάποιων σπασμωδικών.
Το μεγαλύτερο μέρος της εστίασης με αυτήν την έκδοση ήταν στο πώς μπορούν να χρησιμοποιηθούν οι δομές με το Dart και το C. Για ένα, μπορείτε τώρα να μεταβιβάσετε structs στον κώδικα C σας κατά αναφορά και τιμή, όπου προηγουμένως υποστηριζόταν μόνο οι αναφορές. Ένα άλλο σημαντικό χαρακτηριστικό είναι η υποστήριξη για ένθετες δομές, η οποία δεν υπήρχε πριν από αυτήν την κυκλοφορία.
Τώρα για τις αλλαγές. Εάν χρησιμοποιούσατε το FFI, ίσως χρειαστεί να ενημερώσετε τον κώδικά σας για να λειτουργήσει με το 2.12. Με αυτήν την έκδοση του FFI, δεν μπορείτε πλέον να δημιουργήσετε κενές δομές. Εάν χρειάζεστε ένα για κάποιο λόγο, μπορείτε να χρησιμοποιήσετε τον νέο τύπο "Αδιαφανές". Υπάρχουν επίσης ορισμένες αλλαγές στον τρόπο λειτουργίας ορισμένων από τις ενσωματωμένες λειτουργίες του FFI, τις οποίες μπορείτε διαβάστε για εδώ.
Τέλος, υπάρχει ένα νέο πακέτο για το FFI που σας επιτρέπει να δημιουργήσετε περιτυλίγματα FFI από υπάρχοντα αρχεία κεφαλίδας C, που ονομάζεται ffigen. Εάν έχετε πολύ κώδικα C που πρέπει να χρησιμοποιήσετε, με πολλές μεθόδους API, αυτό θα είναι πολύ χρήσιμο. Ακόμα κι αν ο αριθμός του κωδικού C που έχετε είναι μικρός, αυτό είναι ένα ωραίο χαρακτηριστικό.
Και αυτό είναι λίγο πολύ για το Dart 2.12. Με την προσθήκη της μηδενικής ασφάλειας και μιας σταθερής βιβλιοθήκης διαλειτουργικότητας C, το Dart μετατρέπεται σε μια πολύ πλούσια σε χαρακτηριστικά γλώσσα. Πείτε μας τη γνώμη σας για το Dart 2.12 στα σχόλια!