Πέμπτη έκδοση ενημερώσεων κώδικα για τον πυρήνα 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 έχει προστεθεί στο σύστημα συνεχούς ενοποίησης που βασίζεται στο bot 0DAY/LKP που υποστηρίζεται από την Intel και έχει ξεκινήσει η δημοσίευση των αναφορών δοκιμών. Ετοιμαζόμαστε να ενσωματώσουμε την υποστήριξη Rust στο αυτοματοποιημένο σύστημα δοκιμών KernelCI. Η δοκιμή που βασίζεται στο GitHub CI έχει μεταφερθεί στη χρήση δοχείων.
  • Τα modules του πυρήνα Rust απαλλάσσονται από την ανάγκη ορισμού των χαρακτηριστικών του κιβωτίου "#![no_std]" και "#![feature(…)]".
  • Προστέθηκε υποστήριξη για μεμονωμένους στόχους συναρμολόγησης (.o, .s, .ll και .i).
  • Οι οδηγίες κώδικα ορίζουν κανόνες για το διαχωρισμό των σχολίων (“//”) και την τεκμηρίωση του κώδικα (“///”).
  • Το σενάριο is_rust_module.sh έχει επεξεργαστεί εκ νέου.
  • Προστέθηκε υποστήριξη για πρωτόγονα συγχρονισμού στατικής (καθολικής κοινής μεταβλητής) με βάση την υλοποίηση "CONFIG_CONSTRUCTORS".
  • Η διαχείριση κλειδώματος είναι απλοποιημένη: Το Guard και το GuardMut συνδυάζονται και ένας παραμετροποιημένος τύπος.
  • Είναι δυνατός ο καθορισμός πρόσθετων παραμέτρων κατά την εγγραφή συσκευών.
  • Προστέθηκε η αφαίρεση "RwSemaphore", η οποία λειτουργεί ως περιτύλιγμα πάνω από τη δομή rw_semaphore C.
  • Για να χρησιμοποιήσετε το mmap, προστέθηκε μια νέα μονάδα mm και μια αφαίρεση VMA (ένα περιτύλιγμα πάνω από τη δομή vm_area_struct).
  • Το πρόγραμμα οδήγησης GPIO PL061 έχει αλλάξει στη χρήση της μακροεντολής «dev_*!».
  • Πραγματοποιήθηκε γενική εκκαθάριση του κώδικα.

Πηγή: opennet.ru

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