Διατίθεται γλώσσα Dart 2.14 και πλαίσιο Flutter 2.5

Η Google δημοσίευσε την κυκλοφορία της γλώσσας προγραμματισμού Dart 2.14, η οποία συνεχίζει την ανάπτυξη ενός ριζικά επανασχεδιασμένου κλάδου Dart 2, ο οποίος διαφέρει από την αρχική έκδοση της γλώσσας Dart στη χρήση ισχυρής στατικής πληκτρολόγησης (οι τύποι μπορούν να συναχθούν αυτόματα, προσδιορίζοντας έτσι οι τύποι δεν είναι απαραίτητοι, αλλά η δυναμική πληκτρολόγηση δεν χρησιμοποιείται πλέον και ο αρχικός υπολογισμός ο τύπος εκχωρείται στη μεταβλητή και στη συνέχεια εφαρμόζεται αυστηρός έλεγχος τύπου).

Χαρακτηριστικά της γλώσσας Dart:

  • Γνωστή και εύκολη στην εκμάθηση σύνταξη, φυσική για προγραμματιστές JavaScript, C και Java.
  • Εξασφάλιση γρήγορης εκκίνησης και υψηλής απόδοσης για όλα τα σύγχρονα προγράμματα περιήγησης ιστού και διάφορους τύπους περιβαλλόντων, από φορητές συσκευές έως ισχυρούς διακομιστές.
  • Η δυνατότητα ορισμού κλάσεων και διεπαφών που επιτρέπουν την ενθυλάκωση και την επαναχρησιμοποίηση υπαρχουσών μεθόδων και δεδομένων.
  • Ο καθορισμός τύπων διευκολύνει τον εντοπισμό σφαλμάτων και τον εντοπισμό σφαλμάτων, καθιστά τον κώδικα σαφέστερο και πιο ευανάγνωστο και απλοποιεί την τροποποίηση και την ανάλυσή του από τρίτους προγραμματιστές.
  • Οι υποστηριζόμενοι τύποι περιλαμβάνουν: διάφορους τύπους κατακερματισμών, πίνακες και λίστες, ουρές, αριθμούς και τύπους συμβολοσειρών, τύπους για τον προσδιορισμό ημερομηνίας και ώρας, κανονικές εκφράσεις (RegExp). Είναι δυνατό να δημιουργήσετε τους δικούς σας τύπους.
  • Για την οργάνωση της παράλληλης εκτέλεσης, προτείνεται η χρήση κλάσεων με το χαρακτηριστικό isolate, ο κώδικας των οποίων εκτελείται εξ ολοκλήρου σε απομονωμένο χώρο σε ξεχωριστή περιοχή μνήμης, αλληλεπιδρώντας με την κύρια διαδικασία στέλνοντας μηνύματα.
  • Υποστήριξη για τη χρήση βιβλιοθηκών που απλοποιούν την υποστήριξη και τον εντοπισμό σφαλμάτων μεγάλων έργων Ιστού. Οι υλοποιήσεις συναρτήσεων τρίτων μπορούν να συμπεριληφθούν με τη μορφή κοινόχρηστων βιβλιοθηκών. Οι εφαρμογές μπορούν να χωριστούν σε μέρη και να ανατεθεί η ανάπτυξη κάθε μέρους σε μια ξεχωριστή ομάδα προγραμματιστών.
  • Ένα σύνολο έτοιμων εργαλείων για την υποστήριξη της ανάπτυξης στη γλώσσα Dart, συμπεριλαμβανομένης της εφαρμογής εργαλείων δυναμικής ανάπτυξης και εντοπισμού σφαλμάτων με διόρθωση κώδικα εν κινήσει ("επεξεργασία και συνέχεια").
  • Για να απλοποιηθεί η ανάπτυξη στη γλώσσα Dart, συνοδεύεται από ένα SDK, μια παμπ διαχείρισης πακέτων, έναν αναλυτή στατικού κώδικα dart_analyzer, ένα σύνολο βιβλιοθηκών, ένα ενσωματωμένο περιβάλλον ανάπτυξης DartPad και προσθήκες με δυνατότητα Dart για IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 και Βιμ.
  • Πρόσθετα πακέτα με βιβλιοθήκες και βοηθητικά προγράμματα διανέμονται μέσω του αποθετηρίου παμπ, το οποίο έχει περισσότερα από 20 χιλιάδες πακέτα.

Σημαντικές αλλαγές στην κυκλοφορία του Dart 2.14:

  • Προστέθηκε ένας νέος τελεστής τριπλής μετατόπισης (>>>), ο οποίος, σε αντίθεση με τον τελεστή ">>", δεν εκτελεί μια αριθμητική, αλλά μια λογική μετατόπιση που λειτουργεί χωρίς να λαμβάνει υπόψη το bit προσήμου (η μετατόπιση εκτελείται χωρίς διαίρεση σε θετικοί και αρνητικοί αριθμοί).
  • Καταργήθηκε ο περιορισμός στα ορίσματα τύπου που εμπόδιζε τη χρήση γενικών τύπων συναρτήσεων ως όρισμα τύπου. Για παράδειγμα, τώρα μπορείτε να καθορίσετε: late List (T)>idFunctions; var επανάκληση = [ (Τ τιμή) => τιμή]; late S Συνάρτηση (T)>(S) f;
  • Να επιτρέπεται ο καθορισμός ορισμάτων με τύπους σε σχολιασμούς όπως @Deprecated. Για παράδειγμα, μπορείτε τώρα να καθορίσετε: @TypeHelper (42, "Το νόημα")
  • Οι στατικές μέθοδοι hash, hashAll και hashAllUnordered έχουν προστεθεί στην τυπική βιβλιοθήκη (πυρήνα) στην κλάση Object. Η κατηγορία DateTime έχει βελτιώσει τον χειρισμό της τοπικής ώρας κατά τη μετατροπή ρολογιών μεταξύ θερινής και χειμερινής ώρας που δεν διαιρούνται με μία ώρα (για παράδειγμα, στην Αυστραλία χρησιμοποιείται μετατόπιση 30 λεπτών). Το πακέτο ffi έχει προσθέσει υποστήριξη για τον μηχανισμό εκχώρησης μνήμης αρένα, ο οποίος απελευθερώνει αυτόματα πόρους. Το πακέτο ffigen έχει προσθέσει τη δυνατότητα δημιουργίας ορισμών typedef των τύπων Dart από τη γλώσσα C.
  • Τα 250 πιο δημοφιλή πακέτα από το αποθετήριο pub.dev και το 94% του top-1000 έχουν αλλάξει στη χρήση της λειτουργίας "null Security", η οποία θα αποφύγει σφάλματα που προκαλούνται από προσπάθειες χρήσης μεταβλητών των οποίων η τιμή δεν είναι καθορισμένη και έχει οριστεί σε "Null "" Ο τρόπος λειτουργίας υποδηλώνει ότι οι μεταβλητές δεν μπορούν να έχουν μηδενικές τιμές εκτός και αν τους έχει εκχωρηθεί ρητά η τιμή null. Η λειτουργία σέβεται αυστηρά τους τύπους μεταβλητών, γεγονός που επιτρέπει στον μεταγλωττιστή να εφαρμόζει πρόσθετες βελτιστοποιήσεις. Η συμμόρφωση τύπου ελέγχεται τη στιγμή της μεταγλώττισης, για παράδειγμα, εάν προσπαθήσετε να αντιστοιχίσετε την τιμή "Null" σε μια μεταβλητή με τύπο που δεν υποδηλώνει απροσδιόριστη κατάσταση, όπως "int", θα εμφανιστεί ένα σφάλμα.
  • Προτείνονται ενοποιημένα σύνολα κανόνων για τον αναλυτή κώδικα (linter), που παρέχουν ταυτόχρονη υποστήριξη για τον έλεγχο της συμμόρφωσης με τις οδηγίες στυλ κώδικα για το Dart και το πλαίσιο Flutter. Για ιστορικούς λόγους, οι κανόνες κωδικοποίησης για το Flutter και το Dart ήταν διαφορετικοί, επιπλέον, για το Dart υπήρχαν δύο σειρές κανόνων σε χρήση - σχολαστικοί από την Google και κανόνες από την κοινότητα προγραμματιστών Dart. Το Dart 2.14 εισάγει ένα νέο κοινό σύνολο κανόνων για το linter, το οποίο αποφασίζεται να χρησιμοποιηθεί από προεπιλογή σε νέα έργα Dart και στο Flutter SDK. Το σετ περιλαμβάνει βασικούς κανόνες (πακέτο lins/core.yaml), προτεινόμενους πρόσθετους κανόνες (lints/recommended.yaml) και συστάσεις ειδικά για το Flutter (flutter_lints/flutter.yaml). Συνιστάται στους χρήστες παιδαγωγικών κανόνων να στραφούν στη χρήση ενός νέου στυλ κωδικοποίησης με βάση τις συστάσεις από την τεκμηρίωση του Dart.
  • Στον μορφοποιητή, έχουν γίνει βελτιστοποιήσεις για τη μορφοποίηση των μπλοκ κωδικών σε κλιμάκωση, οι οποίες μπορούν να βελτιώσουν σημαντικά την απόδοση μορφοποίησης και να αποφύγουν τη διφορούμενη ερμηνεία της ιδιοκτησίας των στοιχείων έκφρασης. Για παράδειγμα, καλώντας το "..doIt" στην έκφραση "var result = errorState ? foo : bad..doIt()" δεν αφορά το υπό όρους τμήμα του μπλοκ "bad", αλλά ολόκληρη την έκφραση, οπότε κατά τη μορφοποίηση διαχωρίζεται τώρα: var result = errorState ? foo : bad ..doIt();
  • Η υποστήριξη για επεξεργαστές Apple M1 (Silicon) προστέθηκε στο SDK, υπονοώντας τόσο τη δυνατότητα εκτέλεσης Dart VM, βοηθητικών προγραμμάτων και στοιχείων SDK σε συστήματα με επεξεργαστή Apple Silicon, όσο και υποστήριξη για τη μεταγλώττιση εκτελέσιμων αρχείων για αυτά τα τσιπ.
  • Η εντολή "dart pub" έχει προσθέσει υποστήριξη για ένα νέο αρχείο υπηρεσίας ".pubignore", το οποίο σας επιτρέπει να ορίσετε μια λίστα αρχείων που θα παραβλεφθούν κατά τη δημοσίευση ενός πακέτου στο αποθετήριο pub.dev. Αυτές οι ρυθμίσεις δεν παρεμβαίνουν στη λίστα αγνοήσεων ".gitignore" (σε ορισμένες περιπτώσεις, το pub.dev μπορεί να θέλει να αποφύγει τη μεταφορά αρχείων που χρειάζονται στο Git, για παράδειγμα, εσωτερικά σενάρια που χρησιμοποιούνται κατά την ανάπτυξη).
  • Έγινε δουλειά για τη βελτίωση της απόδοσης της εντολής «δοκιμή βελών», η οποία πλέον δεν απαιτεί επαναμεταγλώττιση δοκιμών μετά την αλλαγή του pubspec, εάν ο αριθμός έκδοσης δεν έχει αλλάξει.
  • Η υποστήριξη για τη μεταγλώττιση στη λειτουργία συμβατότητας ECMAScript 5 έχει διακοπεί (η αλλαγή θα έχει ως αποτέλεσμα την απώλεια της συμβατότητας με το πρόγραμμα περιήγησης IE11).
  • Τα μεμονωμένα βοηθητικά προγράμματα stagehand, dartfmt και dart2native έχουν κηρυχθεί απαρχαιωμένα, αντικαθίστανται από ενσωματωμένες εντολές που καλούνται μέσω του βοηθητικού προγράμματος dart.
  • Ο μηχανισμός VM Native Extensions έχει καταργηθεί. Για να καλέσετε τον εγγενή κώδικα από τον κώδικα Dart, συνιστάται η χρήση του νέου Dart FFI (Foreign Function Interface).

Ταυτόχρονα, παρουσιάστηκε μια σημαντική έκδοση του πλαισίου διεπαφής χρήστη Flutter 2.5, το οποίο θεωρείται εναλλακτική του React Native και επιτρέπει, με βάση μια ενιαία βάση κώδικα, την κυκλοφορία εφαρμογών για iOS, Android, Windows, macOS και πλατφόρμες Linux, καθώς και δημιουργία εφαρμογών για εκτέλεση σε προγράμματα περιήγησης. Ένα προσαρμοσμένο κέλυφος για το λειτουργικό σύστημα μικροπυρήνα Fuchsia που αναπτύχθηκε από την Google έχει δημιουργηθεί με βάση το Flutter.

Το κύριο μέρος του κώδικα Flutter υλοποιείται στη γλώσσα Dart και η μηχανή χρόνου εκτέλεσης για την εκτέλεση εφαρμογών είναι γραμμένη σε C++. Κατά την ανάπτυξη εφαρμογών, εκτός από τη μητρική γλώσσα Dart του Flutter, μπορείτε να χρησιμοποιήσετε τη διεπαφή Dart Foreign Function για να καλέσετε τον κώδικα C/C++. Η υψηλή απόδοση εκτέλεσης επιτυγχάνεται με τη μεταγλώττιση εφαρμογών σε εγγενή κώδικα για πλατφόρμες-στόχους. Σε αυτήν την περίπτωση, το πρόγραμμα δεν χρειάζεται να μεταγλωττίζεται ξανά μετά από κάθε αλλαγή - Το Dart παρέχει μια λειτουργία επανάληψης φόρτωσης που σας επιτρέπει να κάνετε αλλαγές σε μια εφαρμογή που εκτελείται και να αξιολογήσετε αμέσως το αποτέλεσμα.

Σημαντικές αλλαγές στο Flutter 2.5:

  • Έκανε σημαντικές βελτιστοποιήσεις απόδοσης. Στις πλατφόρμες iOS και macOS, έχει υλοποιηθεί η προμεταγλώττιση των shader για το Metal graphics API. Βελτιωμένη απόδοση της επεξεργασίας ασύγχρονων συμβάντων. Επιλύθηκε ένα πρόβλημα με καθυστερήσεις όταν ο συλλέκτης απορριμμάτων ανακτά τη μνήμη από αχρησιμοποίητες εικόνες (για παράδειγμα, κατά την αναπαραγωγή ενός κινούμενου GIF 20 δευτερολέπτων, ο αριθμός των λειτουργιών συλλογής σκουπιδιών μειώθηκε από 400 σε 4. Καθυστερήσεις κατά τη μετάδοση μηνυμάτων μεταξύ Dart και Objective- Το C/Swift μειώθηκε στο 50% (iOS) ή Java/Kotlin (Android) Προστέθηκε υποστήριξη εγγενούς κατασκευής για συστήματα που βασίζονται στο τσιπ Apple Silicon.
    Διατίθεται γλώσσα Dart 2.14 και πλαίσιο Flutter 2.5
  • Για την πλατφόρμα Android, έχει δημιουργηθεί υποστήριξη για την εκτέλεση εφαρμογών σε λειτουργία πλήρους οθόνης. Συνεχίστηκε η εφαρμογή της σχεδιαστικής ιδέας «Material You», που παρουσιάζεται ως επιλογή Υλικού Σχεδιασμού επόμενης γενιάς. Προστέθηκε μια νέα κατάσταση MaterialState.scrolledUnder, εφαρμόστηκε δυναμική εμφάνιση των γραμμών κύλισης κατά την αλλαγή μεγέθους και πρότεινε μια νέα διεπαφή για την εμφάνιση banner ειδοποιήσεων.
  • Οι δυνατότητες του plug-in της κάμερας έχουν επεκταθεί σημαντικά, προσθέτοντας εργαλεία για τον έλεγχο της αυτόματης εστίασης, της έκθεσης, του φλας, του ζουμ, της μείωσης θορύβου και της ανάλυσης.
  • Τα εργαλεία προγραμματιστών (DevTools) έχουν βελτιωθεί ώστε να περιλαμβάνουν μια ενημερωμένη λειτουργία επιθεώρησης γραφικών στοιχείων, καθώς και εργαλεία για τον εντοπισμό καθυστερήσεων απόδοσης και την παρακολούθηση της συλλογής shader.
    Διατίθεται γλώσσα Dart 2.14 και πλαίσιο Flutter 2.5
  • Βελτιωμένα πρόσθετα για Visual Studio Code και IntelliJ/Android Studio.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο