Rust Έκδοση 1.90. Εργαλειοθήκη για Δημιουργία Windows-οδηγοί για Rust

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

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

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

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

  • В Linux Σε υπολογιστές x86_64, ο σύνδεσμος LLD από το έργο LLVM χρησιμοποιείται από προεπιλογή για τη δυναμική σύνδεση πακέτων crate. Σε σύγκριση με τον σύνδεσμο BFD, η χρήση του LLD έχει οδηγήσει σε βελτιωμένη απόδοση σύνδεσης για μεγάλα εκτελέσιμα αρχεία και έργα με μεγάλες ποσότητες πληροφοριών εντοπισμού σφαλμάτων, καθώς και σε ταχύτερη σταδιακή αναδόμηση. Στις περισσότερες περιπτώσεις, το LLD είναι συμβατό με το BFD. Εάν προκύψουν προβλήματα, μπορείτε να επιστρέψετε στο BFD καθορίζοντας τη σημαία "-C linker-features=-lld" στη μεταβλητή περιβάλλοντος RUSTFLAGS ή προσθέτοντας τα ακόλουθα στο αρχείο διαμόρφωσης .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"]
  • Ο διαχειριστής πακέτων cargo διαθέτει μια νέα επιλογή "--workspace" στην εντολή "publish", η οποία σας επιτρέπει να δημοσιεύετε αυτόματα όλα τα πακέτα από έναν επιλεγμένο χώρο εργασίας (ένα σύνολο πακέτων που μοιράζονται ένα μόνο αρχείο Cargo.lock και έναν κοινό κατάλογο εξόδου build), διατηρώντας τη σειρά των πακέτων και λαμβάνοντας υπόψη τις εξαρτήσεις μεταξύ τους.
  • Ένα νέο τμήμα του API έχει μετακινηθεί στην κατηγορία των σταθερών, συμπεριλαμβανομένων των μεθόδων και των εφαρμογών των χαρακτηριστικών έχουν σταθεροποιηθεί:
    • u{n}::checked_sub_signed
    • u{n}::overflowing_sub_signed
    • u{n}::saturating_sub_signed
    • u{n}::wrapping_sub_signed
    • imp Αντιγραφή για IntErrorKind
    • impl Hash για IntErrorKind
    • impl PartialEq<&CStr> για CStr
    • impl PartialEq για CStr
    • impl PartialEq > για CStr
    • impl PartialEq<&CStr> για CString
    • impl PartialEq για CString
    • impl PartialEq > για CString
    • impl PartialEq<&CStr> για αγελάδα
    • impl PartialEq για την αγελάδα
    • impl PartialEq για την αγελάδα
  • Το σύμβολο «const» χρησιμοποιείται στις συναρτήσεις:
    • <[T]>::αντίστροφη
    • f32::δάπεδο
    • f32::ceil
    • f32::trunc
    • f32::fract
    • f32::γύρος
    • f32::round_ties_even
    • f64::δάπεδο
    • f64::ceil
    • f64::trunc
    • f64::fract
    • f64::γύρος
    • f64::round_ties_even
  • Η δυναμική σύνδεση είναι ενεργοποιημένη από προεπιλογή για στόχους που βασίζονται σε Musl στο επίπεδο υποστήριξης 64: mips64-unknown-linux-muslabi64, powerpc32-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv390gc-unknown-linux-musl, s7x-unknown-linux-musl και thumbvXNUMXneon-unknown-linux-musleabihf.
  • Η πλατφόρμα-στόχος "x86_64-apple-darwin" έχει αναβαθμιστεί από το επίπεδο υποστήριξης 86 στο επίπεδο 64 (η Apple σχεδιάζει να τερματίσει την υποστήριξη για την αρχιτεκτονική xXNUMX_XNUMX). Η υποστήριξη Επιπέδου XNUMX περιλαμβάνει δυαδικές εκδόσεις, διεξοδικές δοκιμές και την υψηλότερη εγγύηση υποστήριξης πλατφόρμας—κάθε αλλαγή μεταγλωττιστή επαληθεύεται με την εκτέλεση της πλήρους σουίτας δοκιμών. Η υποστήριξη Επιπέδου XNUMX εγγυάται την ποιότητα κατασκευής, αλλά δεν εγγυάται την επιτυχία της σουίτας δοκιμών.

Επιπλέον, αξίζει να σημειωθεί η ανάπτυξη εργαλείων ανάπτυξης από τη Microsoft. Windows-drivers στη γλώσσα Rust. Ένα σύνολο πακέτων crate για τη δημιουργία προγραμμάτων οδήγησης που βασίζονται σε WDM έχει ήδη δημοσιευτεί στο GitHub (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) και UMDF (User-Mode Driver Framework), καθώς και υπηρεσίες Win32 κατάλληλες για χρήση σε Windows 11. Στόχος του έργου είναι να παρέχει στους προγραμματιστές του Rust βιβλιοθήκες και λειτουργίες παρόμοιες με αυτές που προσφέρονται στο κιτ εργαλείων WDK για προγραμματιστές προγραμμάτων οδήγησης C. Προς το παρόν, το κιτ εργαλείων ανάπτυξης προγραμμάτων οδήγησης Rust χρησιμοποιεί μεγάλο αριθμό μη ασφαλών κλήσεων κατά την αλληλεπίδραση με υποσυστήματα. Windows, αλλά τα μελλοντικά σχέδια περιλαμβάνουν την ανάπτυξη ασφαλών αφαιρέσεων για δομές πυρήνα και τη Διεπαφή Οδηγού Συσκευής (DDI). Το έργο διανέμεται με τις άδειες MIT και Apache 2.0.

Πηγή: opennet.ru

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster