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

Ο Miguel Ojeda, συγγραφέας του έργου Rust-for-Linux, πρότεινε μια ενημερωμένη έκδοση στοιχείων για την ανάπτυξη προγραμμάτων οδήγησης συσκευών στη γλώσσα Rust προς εξέταση από τους προγραμματιστές του πυρήνα Linux. Η υποστήριξη Rust θεωρείται πειραματική, αλλά έχει ήδη συμφωνηθεί για συμπερίληψη στον κλάδο του Linux-next. Η νέα έκδοση εξαλείφει τα σχόλια που έγιναν κατά τη συζήτηση της πρώτης έκδοσης των ενημερώσεων κώδικα. Ο Linus Torvalds έχει ήδη συμμετάσχει στη συζήτηση και πρότεινε την αλλαγή της λογικής για την επεξεργασία ορισμένων λειτουργιών bit.

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

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

Οι πιο αξιοσημείωτες αλλαγές στη νέα έκδοση των ενημερώσεων κώδικα:

  • Ο κώδικας εκχώρησης μνήμης απαλλάσσεται από την πιθανή δημιουργία κατάστασης "πανικού" όταν συμβαίνουν σφάλματα όπως η έλλειψη μνήμης. Περιλαμβάνεται μια παραλλαγή της βιβλιοθήκης κατανομής Rust, η οποία επεξεργάζεται ξανά τον κώδικα για να χειριστεί αστοχίες, αλλά ο απώτερος στόχος είναι να μεταφερθούν όλα τα χαρακτηριστικά που χρειάζονται για τον πυρήνα στην κύρια έκδοση του alloc (οι αλλαγές έχουν ήδη προετοιμαστεί και μεταφερθεί στο πρότυπο Βιβλιοθήκη Rust).
  • Αντί για νυχτερινές εκδόσεις, μπορείτε τώρα να χρησιμοποιήσετε εκδόσεις beta και σταθερές εκδόσεις του μεταγλωττιστή rustc για να μεταγλωττίσετε έναν πυρήνα με υποστήριξη Rust. Επί του παρόντος, το rustc 1.54-beta1 χρησιμοποιείται ως μεταγλωττιστής αναφοράς, αλλά μετά την κυκλοφορία του 1.54 στο τέλος του μήνα, θα υποστηρίζεται ως μεταγλωττιστής αναφοράς.
  • Προστέθηκε υποστήριξη για γραπτές δοκιμές χρησιμοποιώντας το τυπικό χαρακτηριστικό "#[test]" για το Rust και τη δυνατότητα χρήσης doctests για τεκμηρίωση δοκιμών.
  • Προστέθηκε υποστήριξη για αρχιτεκτονικές ARM32 και RISCV επιπλέον των x86_64 και ARM64 που υποστηριζόταν προηγουμένως.
  • Βελτιωμένες υλοποιήσεις του GCC Rust (GCC frontend for Rust) και rustc_codegen_gcc (rustc backend για GCC), το οποίο πλέον περνάει όλες τις βασικές δοκιμές.
  • Ένα νέο επίπεδο αφαίρεσης προτείνεται για χρήση σε προγράμματα Rust μηχανισμών πυρήνα γραμμένους σε C, όπως κόκκινα-μαύρα δέντρα, αντικείμενα με μέτρηση αναφοράς, δημιουργία περιγραφέων αρχείων, εργασίες, αρχεία και διανύσματα I/O.
  • Τα στοιχεία ανάπτυξης προγραμμάτων οδήγησης έχουν βελτιωμένη υποστήριξη για τη λειτουργική μονάδα file_operations, τη μακροεντολή μονάδας!, την εγγραφή μακροεντολών και τα υποτυπώδη προγράμματα οδήγησης (διερευνήστε και αφαιρέστε).
  • Το Binder υποστηρίζει πλέον μεταβίβαση περιγραφών αρχείων και αγκίστρων LSM.
  • Ένα πιο λειτουργικό παράδειγμα προγράμματος οδήγησης Rust προτείνεται - bcm2835-rng για τη γεννήτρια τυχαίων αριθμών υλικού των πλακών Raspberry Pi.

Επιπλέον, αναφέρονται ορισμένα έργα εταιρειών που σχετίζονται με τη χρήση του Rust στον πυρήνα:

  • Η Microsoft έχει εκφράσει ενδιαφέρον να συμμετάσχει στις εργασίες για την ενσωμάτωση της υποστήριξης Rust στον πυρήνα Linux και είναι έτοιμη να παρέχει υλοποιήσεις προγραμμάτων οδήγησης για το Hyper-V στο Rust τους επόμενους μήνες.
  • Η ARM εργάζεται για τη βελτίωση της υποστήριξης Rust για συστήματα που βασίζονται σε ARM. Το έργο Rust έχει ήδη προτείνει αλλαγές που θα έκαναν τα συστήματα ARM 64-bit σε πλατφόρμα Tier 1.
  • Η Google παρέχει απευθείας υποστήριξη για το έργο Rust for Linux, αναπτύσσει μια νέα υλοποίηση του μηχανισμού επικοινωνίας διαδικασιών Binder στο Rust και εξετάζει τη δυνατότητα επανεπεξεργασίας διαφόρων προγραμμάτων οδήγησης στο Rust. Μέσω του ISRG (Internet Security Research Group), η Google παρείχε χρηματοδότηση για εργασίες για την ενσωμάτωση της υποστήριξης Rust στον πυρήνα του Linux.
  • Η IBM έχει εφαρμόσει υποστήριξη πυρήνα για συστήματα Rust για PowerPC.
  • Το εργαστήριο LSE (Systems Research Laboratory) έχει αναπτύξει ένα πρόγραμμα οδήγησης SPI στο Rust.

Πηγή: opennet.ru

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