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

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

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

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

  • Καταργήθηκε η δέσμευση για τη σειρά εκτέλεσης των εντολών «cargo check» και «cargo clippy». Προηγουμένως, η κλήση "cargo clippy" μετά τον "cargo check" δεν εκκινούσε το βοηθητικό πρόγραμμα clippy (linter) λόγω της έλλειψης διαχωρισμού της κρυφής μνήμης για αυτές τις λειτουργίες ελέγχου. Τώρα αυτό το πρόβλημα έχει επιλυθεί και η σειρά με την οποία ονομάζονται "cargo clippy" και "cargo check" δεν έχει πλέον σημασία.
  • Ένα νέο τμήμα του API έχει μεταφερθεί στη σταθερή κατηγορία, συμπεριλαμβανομένων των ακόλουθων μεθόδων που έχουν σταθεροποιηθεί:
    • Επιχειρήματα::as_str
    • char::MAX
    • χαρακτήρας::ΑΝΤΙΚΑΤΑΣΤΑΣΗ_ΧΑΡΑΚΤΗΡΑΣ
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • Το χαρακτηριστικό "const", το οποίο καθορίζει τη δυνατότητα χρήσης του σε οποιοδήποτε πλαίσιο αντί για σταθερές, χρησιμοποιείται στις μεθόδους:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_μικρά
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowcase
    • u8::eq_ignore_ascii_case
  • Προστέθηκε έλεγχος χνούδι unsafe_op_in_unsafe_fn για να προσδιορίσετε εάν ο μη ασφαλής κώδικας που χρησιμοποιείται σε μη ασφαλείς συναρτήσεις πλαισιώνεται από μη ασφαλή μπλοκ.
  • Επιτρέπεται η μετάδοση μεταβλητών δεικτών σε πίνακες με τη μορφή δεικτών στον τύπο του στοιχείου πίνακα. ας mut x: [χρήση; 2] = [0, 0]; έστω p = &mut x ως *mut usize; έστω p = &mut x ως *const usize;
  • 9 νέες επιταγές προστέθηκαν στο clippy (linter).
  • Ο διαχειριστής πακέτων φορτίου υποστηρίζει πλέον το πεδίο "manifest_path" στο JSON για πακέτα. Προστέθηκε υποστήριξη για τον καθορισμό πληροφοριών άδειας χρήσης σε μορφή SPDX 3.11 στο αποθετήριο crates.io.
  • Επιτρέπεται ο καθορισμός πολλαπλών φίλτρων κατά την εκτέλεση δοκιμών, για παράδειγμα με την εκτέλεση "cargo test - foo bar" θα εκτελεστούν όλες οι δοκιμές που ταιριάζουν με τις μάσκες "foo" και "bar".
  • Η προεπιλεγμένη εργαλειοθήκη LLVM έχει ενημερωθεί σε LLVM 12.
  • Το τρίτο επίπεδο υποστήριξης έχει εφαρμοστεί για τις πλατφόρμες s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl και powerpc-unknown-inux-musl. Το τρίτο επίπεδο περιλαμβάνει βασική υποστήριξη, αλλά χωρίς αυτοματοποιημένες δοκιμές, δημοσίευση επίσημων εκδόσεων ή έλεγχο του αν μπορεί να κατασκευαστεί ο κώδικας.

Πηγή: opennet.ru

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