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

Που δημοσιεύθηκε έκδοση γλώσσας προγραμματισμού συστήματος Σκουριά 1.44, που ιδρύθηκε από το έργο Mozilla. Η γλώσσα εστιάζει στην ασφάλεια της μνήμης, παρέχει αυτόματη διαχείριση της μνήμης και παρέχει εργαλεία για την επίτευξη υψηλού παραλληλισμού εργασιών χωρίς τη χρήση συλλέκτη απορριμμάτων και runtime.

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

Στο κείμενο της ανακοίνωσης της νέας έκδοσης, οι προγραμματιστές του Rust αναμείχθηκαν στην πολιτική και αρνήθηκαν επισήμως να δημοσιεύσουν μια πλήρη ανασκόπηση των αλλαγών στο Rust 1.44 ως ένδειξη αλληλεγγύης με τους διαδηλωτές κατά της αστυνομικής βίας, υποδεικνύοντας ότι αυτό το θέμα είναι πιο σημαντικό από την ανταλλαγή τεχνικών γνώσεων. Βασικός καινοτομίες:

  • Ο διαχειριστής πακέτων Cargo ενσωματώνει την εντολή "cargo tree", η οποία εμφανίζει ένα γράφημα εξάρτησης που μοιάζει με δέντρο. Προστέθηκε επίσης η επιλογή «—dupliates» («cargo tree -d»), η οποία σας επιτρέπει να αξιολογείτε τις εξαρτήσεις σε διαφορετικές εκδόσεις του ίδιου πακέτου.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── αμμωνία v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── αρχείο καταγραφής v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── αρχείο καταγραφής v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [build-dependencies] │ │ │ └── version_check v0.1.5
    ...

  • Για εφαρμογές που δεν είναι δεσμευμένες σε ένα std ("#![no_std]"), η υποστήριξη για τεχνικές ασύγχρονου προγραμματισμού υλοποιείται με βάση τη συνάρτηση "async", το μπλοκ async move { ... } και τον τελεστή ".await", που απλοποιήστε τη γραφή της κύριας ροής εντολών χειριστών χωρίς αποκλεισμό.
  • Η υποστήριξη για ένα σχήμα ορισμού ιεραρχίας επεκτάσιμης λειτουργικής μονάδας έχει προστεθεί στον αναλυτή. Για παράδειγμα, η ακόλουθη κατασκευή δεν θα παράγει σφάλμα, παρά την πραγματική απουσία της ενότητας "foo/bar/baz.rs" (η κατασκευή εξακολουθεί να είναι σημασιολογικά άκυρη και μπορεί να προκαλέσει σφάλμα, αλλά οι αλλαγές μπορούν να φανούν και να αναλυθούν στο το επίπεδο μεταγλώττισης μακροεντολών και υπό όρους):

    #[cfg(FALSE)] mod foo {
    γραμμή mod {
    mod baz?
    }
    }

  • Ο μεταγλωττιστής rustc έχει προσθέσει τη δυνατότητα χρήσης της σημαίας "-C codegen-units" σε αυξητική λειτουργία. Η υλοποίηση του catch_unwind έχει επεξεργαστεί εκ νέου, έτσι ώστε να μην έχει επιπτώσεις στην απόδοση εάν η διαδικασία ξετυλίγματος είναι απενεργοποιημένη και δεν υπάρχουν εξαιρέσεις.
  • Έχει παρασχεθεί υποστήριξη επιπέδου 64 για τις πλατφόρμες aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos και x64_XNUMX-apple-tvos. Το τρίτο επίπεδο περιλαμβάνει βασική υποστήριξη, αλλά χωρίς αυτοματοποιημένες δοκιμές και δημοσίευση επίσημων εκδόσεων.
  • Ένα νέο τμήμα API μεταφέρθηκε στη σταθερή κατηγορία, συμπεριλαμβανομένων των σταθεροποιημένων
    PathBuf::with_capacity,
    PathBuf::χωρητικότητα,
    PathBuf::clear,
    PathBuf::κράτηση,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Διάταξη::align_to,
    Διάταξη::pad_to_align,
    Διάταξη::πίνακας και
    Διάταξη::επέκταση.

  • Εκτεταμένες λειτουργίες της τυπικής βιβλιοθήκης:
    • Προστέθηκε μια ειδική παραλλαγή "vec![]" που αντικατοπτρίζεται άμεσα στο Vec::new(), επιτρέποντας τη χρήση του "vec![]" στο περιβάλλον αντί για σταθερές.
    • Μια υλοποίηση (impl) του χαρακτηριστικού έχει προστεθεί για τη μετατροπή::Infallible Χασίσι.
    • Το OsString υλοποιεί έξυπνους δείκτες DerefMut и IndexMut, επιστρέφοντας το "&mut OsStr".
    • Προστέθηκε υποστήριξη για Unicode 13.
    • Υλοποιήθηκε σε String Από<&mut str>.
    • Το IoSlice εφαρμόζει το χαρακτηριστικό αντίγραφο.
    • Vec υλοποιήθηκε από<[T; N]>.
    • proc_macro::LexError υλοποιεί το fmt::Display and Error.
  • Το χαρακτηριστικό "const", το οποίο καθορίζει εάν μπορεί να χρησιμοποιηθεί σε οποιοδήποτε περιβάλλον αντί για σταθερές, χρησιμοποιείται στις μεθόδους from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes και to_ne_bytes για όλους τους ακέραιους τύπους.
  • Προστέθηκε υποστήριξη για τη δημιουργία στατικών βιβλιοθηκών σε μορφή ".a" αντί για ".lib" για πλατφόρμες GNU στα Windows.
  • Οι ελάχιστες απαιτήσεις για το LLVM έχουν αυξηθεί στην έκδοση 8 του LLVM.

Πηγή: opennet.ru

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