Τέταρτη έκδοση ενημερώσεων κώδικα για τον πυρήνα Linux με υποστήριξη για τη γλώσσα Rust

Ο Miguel Ojeda, συγγραφέας του έργου Rust-for-Linux, πρότεινε μια τέταρτη έκδοση στοιχείων για την ανάπτυξη προγραμμάτων οδήγησης συσκευών στη γλώσσα Rust προς εξέταση από τους προγραμματιστές του πυρήνα Linux. Η υποστήριξη Rust θεωρείται πειραματική, αλλά έχει ήδη συμφωνηθεί για συμπερίληψη στον κλάδο του linux-next και είναι αρκετά ώριμη ώστε να ξεκινήσει η εργασία για τη δημιουργία επιπέδων αφαίρεσης σε υποσυστήματα πυρήνα, καθώς και τη σύνταξη προγραμμάτων οδήγησης και λειτουργικών μονάδων. Η ανάπτυξη χρηματοδοτείται από την Google και την ISRG (Internet Security Research Group), η οποία είναι ο ιδρυτής του έργου Let's Encrypt και προωθεί το HTTPS και την ανάπτυξη τεχνολογιών για τη βελτίωση της ασφάλειας στο Διαδίκτυο.

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

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

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

  • Η μετάβαση στη χρήση της σταθερής έκδοσης του Rust 1.58.0 ως μεταγλωττιστή αναφοράς έχει γίνει. Μεταξύ των απαραίτητων αλλαγών για το έργο, οι οποίες δεν περιλαμβάνονται ακόμη στο κύριο κιτ εργαλείων Rust, είναι η σημαία "-Zsymbol-mangling-version=v0" (αναμένεται στο Rust 1.59.0) και η λειτουργία "maybe_uninit_extra" (αναμένεται στο Rust 1.60.0 .XNUMX) σημειώνονται .
  • Προστέθηκαν αυτόματοι έλεγχοι για τη διαθεσιμότητα κατάλληλων εργαλείων Rust και διευρύνθηκε η δυνατότητα δοκιμής υποστήριξης Rust στο σύστημα.
  • Έχουν προταθεί νέες αφαιρέσεις για την πρόσβαση σε πίνακες αναγνωριστικών συσκευών ("IdArray" και "IdTable") από τον κώδικα Rust.
  • Προστέθηκαν επίπεδα για πρόσβαση σε λειτουργίες που σχετίζονται με το χρονόμετρο (πλαίσιο ρολογιού).
  • Τα προγράμματα οδήγησης πλατφόρμας ορίζονται πλέον μέσω εφαρμογών χαρακτηριστικών.
  • Μια νέα μακροεντολή έχει προστεθεί για να απλοποιηθεί η καταχώριση προγραμμάτων οδήγησης πλατφόρμας και έχει προταθεί ένα νέο γενικό πρότυπο προγράμματος οδήγησης.
  • Προστέθηκαν μακροεντολές για δομές "dev_*".
  • Προστέθηκαν μέθοδοι "{read,write}*_relaxed" για τον τύπο IoMem .
  • Καταργήθηκε η ιδιότητα FileOpener για να απλοποιηθούν οι λειτουργίες αρχείων.
  • Η παράμετρος "ThisModule" έχει προστεθεί στα ορίσματα που διαβιβάζονται κατά την εγγραφή ενός προγράμματος οδήγησης.
  • Προτείνεται ένα τυπικό πρότυπο για τη δημιουργία μονάδων πυρήνα στη γλώσσα Rust.

Πηγή: opennet.ru

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