Κυκλοφορία γλώσσας προγραμματισμού Rust 1.68

Δημοσιεύτηκε η κυκλοφορία της γλώσσας προγραμματισμού γενικής χρήσης Rust 1.68, που ιδρύθηκε από το έργο Mozilla, αλλά τώρα αναπτύχθηκε υπό την αιγίδα του ανεξάρτητου μη κερδοσκοπικού οργανισμού Rust Foundation. Η γλώσσα εστιάζει στην ασφάλεια της μνήμης και παρέχει τα μέσα για την επίτευξη υψηλού παραλληλισμού εργασιών, αποφεύγοντας τη χρήση απορριμματοσυλλέκτη και χρόνου εκτέλεσης (ο χρόνος εκτέλεσης μειώνεται στη βασική προετοιμασία και συντήρηση της τυπικής βιβλιοθήκης).

Οι μέθοδοι χειρισμού μνήμης του Rust σώζουν τον προγραμματιστή από σφάλματα κατά τον χειρισμό δεικτών και προστατεύουν από προβλήματα που προκύπτουν λόγω χειρισμού μνήμης χαμηλού επιπέδου, όπως πρόσβαση σε μια περιοχή μνήμης μετά την απελευθέρωσή της, αποαναφορά μηδενικών δεικτών, υπερβάσεις buffer κ.λπ. Για τη διανομή βιβλιοθηκών, την παροχή κατασκευών και τη διαχείριση εξαρτήσεων, το έργο αναπτύσσει τον διαχειριστή πακέτων Cargo. Το αποθετήριο crates.io υποστηρίζεται για τη φιλοξενία βιβλιοθηκών.

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

Βασικές καινοτομίες:

  • Ο διαχειριστής πακέτων Cargo και το αποθετήριο crates.io έχουν σταθεροποιήσει την υποστήριξη για το πρωτόκολλο Sparse, το οποίο ορίζει έναν νέο τρόπο εργασίας με ένα ευρετήριο που αντικατοπτρίζει τις διαθέσιμες εκδόσεις όλων των πακέτων που υπάρχουν στο αποθετήριο. Το νέο πρωτόκολλο σάς επιτρέπει να αυξήσετε σημαντικά την ταχύτητα εργασίας με το crates.io και να λύσετε προβλήματα κλιμάκωσης με περαιτέρω αύξηση του αριθμού των πακέτων στο αποθετήριο.

    Για να μειωθούν οι καθυστερήσεις που προκαλούνται από τη λήψη ενός πλήρους ευρετηρίου, το Sparse αντί να έχει πρόσβαση στο ευρετήριο χρησιμοποιώντας το Git περιλαμβάνει απευθείας λήψη μέσω HTTPS μόνο των απαραίτητων δεδομένων ευρετηρίου, που καλύπτουν τις εξαρτήσεις ενός συγκεκριμένου έργου. Μια νέα υπηρεσία, το index.crates.io, χρησιμοποιείται για την παροχή δεδομένων ευρετηρίου. Από προεπιλογή, το νέο πρωτόκολλο σχεδιάζεται να χρησιμοποιηθεί στον κλάδο Rust 1.70 και πριν από αυτό, για να το ενεργοποιήσετε, μπορείτε να ορίσετε τη μεταβλητή περιβάλλοντος "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=αραιό" ή να προσθέσετε την παράμετρο 'protocol =' στο "[registries. crates-io]" ενότητα του αρχείου .cargo/config.toml 'sparse'.

  • Προστέθηκε η μακροεντολή "pin!", η οποία σας επιτρέπει να δημιουργήσετε μια δομή Pin<&mut T> από την έκφραση "T" με τοπικό καρφίτσωμα της κατάστασής της (σε αντίθεση με το Box::pin, δεν εκχωρεί μνήμη στο σωρό, αλλά δεσμεύει σε επίπεδο στοίβας).
  • Έχει προταθεί ένας προεπιλεγμένος χειριστής σφαλμάτων εκχώρησης μνήμης, ο οποίος χρησιμοποιείται κατά τη χρήση του τυπικού πακέτου κατανομής. Οι εφαρμογές που ενεργοποιούν μόνο την κατανομή (χωρίς std) θα καλούν τώρα τον χειριστή "πανικός!" όταν αποτύχει η εκχώρηση μνήμης, η οποία μπορεί προαιρετικά να υποκλαπεί χρησιμοποιώντας το "#[panic_handler]". Τα προγράμματα που χρησιμοποιούν τη βιβλιοθήκη std θα συνεχίσουν να εκτυπώνουν πληροφορίες σφάλματος στο stderr και να κολλάνε.
  • Ένα νέο τμήμα του API έχει μετακινηθεί στην κατηγορία των σταθερών, συμπεριλαμβανομένων των μεθόδων και των εφαρμογών των χαρακτηριστικών έχουν σταθεροποιηθεί:
    • {core,std}::pin::pin!
    • υπονοώ Από για {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut για PathBuf
  • Το χαρακτηριστικό "const", το οποίο καθορίζει τη δυνατότητα χρήσης του σε οποιοδήποτε πλαίσιο αντί για σταθερές, χρησιμοποιείται στη συνάρτηση VecDeque::new.
  • Για να εργαστείτε στην πλατφόρμα Android, απαιτείται πλέον τουλάχιστον NDK r25 (API 19), π.χ. Η ελάχιστη υποστηριζόμενη έκδοση Android έχει αυξηθεί σε 4.4 (KitKat).
  • Το τρίτο επίπεδο υποστήριξης έχει εφαρμοστεί για την πλατφόρμα Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Το τρίτο επίπεδο περιλαμβάνει βασική υποστήριξη, αλλά χωρίς αυτοματοποιημένες δοκιμές, δημοσίευση επίσημων εκδόσεων ή έλεγχο του αν μπορεί να κατασκευαστεί ο κώδικας.

Πηγή: opennet.ru

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