Η τρίτη έκδοση των ενημερώσεων κώδικα για υποστήριξη προγραμμάτων οδήγησης Rust στο Linux έχει ήδη κυκλοφορήσει

Έξι μήνες μετά τη δημοσίευση της δεύτερης έκδοσης, Μιγκέλ Οτζέντα, συγγραφέας του έργου Rust-for-Linux, παρουσίασε την πρόταση για την τρίτη επιλογή για την ανάπτυξη προγραμμάτων οδήγησης συσκευών γλώσσας Rust στον πυρήνα Linux.

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

Θα πρέπει να θυμόμαστε ότι οι προτεινόμενες αλλαγές επιτρέπουν τη χρήση της Rust ως δεύτερη γλώσσα για την ανάπτυξη προγραμμάτων οδήγησης και λειτουργικών μονάδων πυρήνα.

Rust προγράμματα οδήγησης σε Linux
σχετικό άρθρο:
Η δεύτερη έκδοση των ενημερώσεων κώδικα για υποστήριξη προγραμμάτων οδήγησης Rust στο Linux έχει ήδη αποσταλεί

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

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

Η μετάβαση στη χρήση της σταθερής έκδοσης του Rust 1.57 ολοκληρώθηκε ως μεταγλωττιστής αναφοράς και έχει εξασφαλιστεί η σύνδεση με την έκδοση σταθεροποιημένης γλώσσας Rust 2021. Η μετάβαση στο Rust 2021 pεπιτρέπεται να αρχίσει να εργάζεται για να αποφευχθεί η χρήση τέτοιων ασταθών χαρακτηριστικών σε ενημερώσεις κώδικα όπως const_fn_transmute, const_panic, const_unreachable_unchecked και core_panic και try_reserve.

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

Εκκαθάριση κώδικα για την κατάργηση πιθανών προειδοποιήσεων μεταγλωττιστή κατά τη μεταγλώττιση του πυρήνα σε λειτουργία CONFIG_WERROR. Όταν κωδικοποιείτε σε Rust, περιλαμβάνονται πρόσθετες λειτουργίες μεταγλωττιστή διαγνωστικού ελέγχου και προειδοποιήσεις Clippy linter.

Πρότειναν αφαιρέσεις για χρήση seqlocks (κλειδώματα ροής), κλήσεις επανάκλησης για διαχείριση ενέργειας, μνήμη I/O (readX/writeX), χειριστές νημάτων και διακοπής, GPIO, πρόσβαση συσκευής, προγράμματα οδήγησης και διαπιστευτήρια στον κώδικα Rust.

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

Βελτιωμένη εργασία με συνδέσμους που χρησιμοποιούν τον τύπο Ref απλοποιημένο, με βάση το backend refcount_t, το οποίο χρησιμοποιεί το ομώνυμο βασικό API για την καταμέτρηση αναφορών. Η υποστήριξη για τους τύπους Arc και Rc που παρέχονται στην τυπική βιβλιοθήκη χαρτογράφησης έχει καταργηθεί και δεν είναι διαθέσιμη σε κώδικα που εκτελείται σε επίπεδο πυρήνα (για την ίδια τη βιβλιοθήκη, έχουν προετοιμαστεί επιλογές για την απενεργοποίηση αυτών των τύπων).

Στις ενημερώσεις κώδικα έχει προστεθεί μια έκδοση του προγράμματος οδήγησης PL061 GPIO, που γράφτηκε ξανά στο Rust. Ένα χαρακτηριστικό του προγράμματος οδήγησης είναι ότι η σχεδόν γραμμή προς γραμμή εφαρμογή του επαναλαμβάνει το υπάρχον πρόγραμμα οδήγησης C GPIO. Για προγραμματιστές που θέλουν να εξοικειωθούν με τους ελεγκτές κτιρίων στο Rust, έχει προετοιμαστεί μια σύγκριση γραμμή προς γραμμή για να σας βοηθήσει να κατανοήσετε τι κατασκευάζει η Rust ο κώδικας C σας.

Η κύρια βάση κώδικα Rust υιοθετεί το rustc_codegen_gcc , ένα backend rustc για το GCC που υλοποιεί τη συλλογή AOT χρησιμοποιώντας τη βιβλιοθήκη libgccjit. Με την κατάλληλη ανάπτυξη backend, θα σας επιτρέψει να μεταγλωττίσετε τον κώδικα Rust που εμπλέκεται στον πυρήνα χρησιμοποιώντας το GCC.
Εκτός από την ARM, την Google και τη Microsoft, η Red Hat έχει εκφράσει ενδιαφέρον να χρησιμοποιήσει το Rust στον πυρήνα του Linux.

Τέλος, αν ενδιαφέρεστε να μάθετε περισσότερα για αυτό, μπορείτε να συμβουλευτείτε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.