Μιγκέλ Οτζέντα, συγγραφέας του έργου Rust-for-Linux, Ο Teme αποκάλυψε πρόσφατα την τέταρτη πρόταση για στοιχεία προγράμματος οδήγησης συσκευής Rust για προγραμματιστές πυρήνα Linux που πρέπει να εξετάσουν.
Η υποστήριξη σκουριάς θεωρείται πειραματική, αλλά έχει ήδη συμφωνηθεί να συμπεριληφθεί στον κλάδο του linux-next και είναι αρκετά ώριμο για να αρχίσει να εργάζεται σε επίπεδα αφαίρεσης πάνω από υποσυστήματα πυρήνα, καθώς και να γράφει προγράμματα οδήγησης και λειτουργικές μονάδες. Η ανάπτυξη χρηματοδοτείται από την Google και την ISRG (Internet Security Research Group), η οποία είναι ο ιδρυτής του έργου Let's Encrypt και προωθεί το HTTPS και την ανάπτυξη τεχνολογιών για την αύξηση της ασφάλειας στο Διαδίκτυο.
Για όσους αγνοούν ακόμη τις προτεινόμενες αλλαγές, θα πρέπει να γνωρίζουν ότι τις καθιστούν εφικτές τη χρήση της Rust ως δεύτερης γλώσσας για την ανάπτυξη ελεγκτών και μονάδων πυρηνικός. Η υποστήριξη Rust παρουσιάζεται ως μια επιλογή που δεν είναι ενεργοποιημένη από προεπιλογή και δεν έχει ως αποτέλεσμα το Rust να συμπεριλαμβάνεται στις απαιτούμενες εξαρτήσεις κατασκευής για τον πυρήνα.
Χρήση του Rust για την ανάπτυξη προγραμμάτων οδήγησης θα σας επιτρέψει να δημιουργήσετε καλύτερα και πιο ασφαλή προγράμματα οδήγησης με ελάχιστη προσπάθεια, χωρίς προβλήματα όπως πρόσβαση σε μια περιοχή μνήμης μετά την απελευθέρωσή της, κατάργηση αναφοράς μηδενικών δεικτών και υπερχείλιση buffer.
Η ασφάλεια της μνήμης παρέχεται στο Rust κατά το χρόνο μεταγλώττισης ελέγχοντας τις αναφορές, την παρακολούθηση της ιδιοκτησίας αντικειμένου και τη διάρκεια ζωής του αντικειμένου (πεδίο), καθώς και με την αξιολόγηση της ορθότητας της πρόσβασης στη μνήμη κατά την εκτέλεση του κώδικα.
Το Rust παρέχει επίσης προστασία υπερχείλισης ακεραίων, απαιτεί προετοιμασία μεταβλητών πριν από τη χρήση, χειρίζεται καλύτερα τα σφάλματα στην τυπική βιβλιοθήκη, επιβάλλει την έννοια των αμετάβλητων μεταβλητών και αναφορών από προεπιλογή και προσφέρει ισχυρή στατική πληκτρολόγηση για την ελαχιστοποίηση των λογικών σφαλμάτων.
Ποιες είναι οι αλλαγές στην τέταρτη δόση;
Σε αυτή τη νέα έκδοση των patches που παρουσιάζονται, αναφέρεται ότι τα σχόλια που έγιναν κατά τη συζήτηση της πρώτης, δεύτερης και τρίτης έκδοσης των patches συνέχισαν να εξαλείφονται.
Θα συνεχίσουμε να ενημερώνουμε μέχρι να μην εξαρτηθούμε από τυχόν ασταθείς λειτουργίες.
οπότε μπορεί να θέλουμε να αρχίσουμε να δηλώνουμε μια minimal έκδοση του Rust
υποστηρίζεται, όπως γίνεται, για παράδειγμα, για το GCC και το Clang.Ομοίως, μεταναστεύσαμε επίσης στην έκδοση 2021 της γλώσσας Rust.
Όσον αφορά τις άλλες αλλαγές που έγιναν στη νέα αυτή έκδοση, η ανακοίνωση αναφέρει τα εξής:
- Έγινε μετάβαση στη χρήση του σταθερού Rust 1.58.0 ως μεταγλωττιστή αναφοράς.
- Οι αλλαγές που απαιτούνται για το έργο, που δεν περιλαμβάνονται ακόμη στην κύρια εργαλειοθήκη Rust, περιλαμβάνουν τη σημαία "-Zsymbol-mangling-version=v0" (αναμένεται στο Rust 1.59.0) και τη λειτουργία "maybe_uninit_extra" (αναμένεται στο Rust 1.60.0) .
- Προστέθηκαν αυτόματοι έλεγχοι για τη διαθεσιμότητα των εργαλείων Rust και την καταλληλότητά τους, ενώ επεκτάθηκε και η δυνατότητα δοκιμής υποστήριξης Rust στο σύστημα.
- Προτείνονται νέες αφαιρέσεις για την πρόσβαση στους πίνακες αναγνωριστικών συσκευών ("IdArray" και "IdTable") από τον κώδικα Rust.
- Προστέθηκαν επίπεδα για κλήση συναρτήσεων που σχετίζονται με το χρονόμετρο (πλαίσιο ρολογιού).
- Οι ελεγκτές πλατφόρμας ορίζονται πλέον μέσω εφαρμογών χαρακτηριστικών.
- Μια νέα μακροεντολή έχει προστεθεί για να απλοποιηθεί η εγγραφή προγραμμάτων οδήγησης πλατφόρμας και έχει προταθεί ένα νέο γενικό πρότυπο προγράμματος οδήγησης.
- Προστέθηκαν νέες μακροεντολές για δομές "dev_*".
- Προστέθηκαν νέες μέθοδοι "{read,write}*_relaxed" για τον τύπο IoMem .
- Καταργήθηκε η ιδιότητα FileOpener για απλοποίηση των λειτουργιών αρχείων.
- Προστέθηκε η παράμετρος "ThisModule" στον αριθμό των ορισμάτων που διαβιβάστηκαν κατά την εγγραφή του ελεγκτή.
- Προτείνεται ένα τυπικό πρότυπο για τη δημιουργία λειτουργικών μονάδων πυρήνα στη γλώσσα Rust.
Τέλος, εάν ενδιαφέρεστε να μάθετε περισσότερα για αυτή τη νέα έκδοση, μπορείτε να συμβουλευτείτε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.