Η γλώσσα προγραμματισμού Η Rust είχε πάντα στόχο να αντικαταστήσει το C στην ανάπτυξη πυρήνα Linux. Και είναι ότι καθώς το Rust έχει ωριμάσει, αρκετοί προγραμματιστές έχουν εκφράσει αυξανόμενο ενδιαφέρον για τη χρήση του στον πυρήνα του Linux.
Στο εικονικό συνέδριο του Linux Plumbers 2020, η ροή των μικροδιασκέψεων από την LLVM οργάνωσε μια συνεδρία για ανοιχτές ερωτήσεις και εμπόδια για την ανοδική αποδοχή του Rust στον πυρήνα του Linux.
Το ενδιαφέρον για αυτό το θέμα είναι ορατό, καθώς αυτή η συνεδρία ήταν η πιο δημοφιλής της εκδήλωσης του 2020.
Πρέπει λοιπόν τώρα να ξαναγράψουμε ολόκληρο τον πυρήνα του Linux με τη γλώσσα Rust; Αυτή η συζήτηση δεν χρονολογείται από σήμερα και έχει τονιστεί από την εμφάνιση της πρώτης σταθερής έκδοσης του Rust το 2015.
Ενόψει των δυνατοτήτων που προσφέρονται Rust, κάποιοι προτείνουν να το κάνεις. Φέτος, στο συνέδριο Linux Plumbers τον Αύγουστο, οι ομιλητές είχαν ξανά χρόνο να το συζητήσουν.
Και το εκπληκτικό είναι ότι φαίνεται να συμφωνούν ομόφωνα όχι για την επανεγγραφή του υπάρχοντος κώδικα στο Rust, αλλά για την ανάπτυξη πυρήνα που συνεχίζει να χρησιμοποιεί το Rust. Δηλαδή, οραματίζονται έναν κόσμο στον οποίο θα μπορούσαν να γραφτούν νέα κομμάτια κώδικα σε Rust.
Αυτή η συνεδρία βασίστηκε σε προηγούμενες εργασίες πολλών προγραμματιστών, συμπεριλαμβανομένης μιας ομιλίας που έκαναν ο Alex Gaynor και ο Geoffrey Thomas στο Linux Security Summit πέρυσι.
Στο συνέδριο, παρουσίασαν την εργασία τους σχετικά με τη δημιουργία πρωτοτύπων ενοτήτων πυρήνα Rust και υποστήριξαν την υιοθέτηση του Rust στον πυρήνα.
Ανέφεραν εργασίες που δείχνουν ότι περίπου τα δύο τρίτα των τρωτών σημείων του πυρήνα στα οποία έχουν εκχωρηθεί CVE στο Android και το Ubuntu σχετίζονται με ζητήματα ασφάλειας της μνήμης.
Κατέληξαν να το εξηγήσουν αυτό Το Rust μπορεί να αποφύγει εντελώς αυτού του είδους τα σφάλματα χάρη στα ασφαλέστερα API ενεργοποιείται από τον τύπο του συστήματός σας και τον επαληθευτή δανείου σας.
Αυτή η μελέτη κατάφερε να πείσει ήδη αρκετούς συντηρητές Ο Linus Torvalds, ο οποίος υποστήριξε την εισαγωγή του Rust στον πυρήνα. Ο Thomas και ο Gaynor, ο Josh Triplett, συνεπικεφαλής της ομάδας γλώσσας Rust και ένας μακροχρόνιος προγραμματιστής πυρήνα Linux, καθώς και άλλοι ενδιαφερόμενοι προγραμματιστές συμμετείχαν όλοι στη συζήτηση για το θέμα.
Έθιξαν εν συντομία τη μέχρι τώρα δουλειά τους και μερικές από τις πρώτες σκέψεις και ερωτήσεις τους πριν ανοίξουν τις περισσότερες φορές για συζήτηση.
Αυτά είναι η χρήση των υπαρχόντων API του πυρήνα, η υποστήριξη αρχιτεκτονικής και μια ερώτηση σχετικά με τη συμβατότητα ABI μεταξύ Rust και C.
Στην πραγματικότητα, το πιστεύουν αρχικά η εισαγωγή του Rust στη δομή δέντρου πρέπει να σέβεται τα υπάρχοντα C API.
Ωστόσο, όλοι αισθάνονται ότι ο διάβολος κρύβεται στις λεπτομέρειες και τόσο η δουλειά που έχει γίνει μέχρι τώρα όσο και η συζήτηση κατά τη διάρκεια της συνεδρίας έχουν αποκαλύψει κάποιες ανοιχτές προκλήσεις.
Για παράδειγμα, το Linux κάνει μεγάλη χρήση μακροεντολών προεπεξεργαστή και ενσωματωμένων συναρτήσεων, οι οποίες δεν υποστηρίζονται τόσο εύκολα από το εργαλείο bindgen του Rust και τη διεπαφή εξωτερικής λειτουργίας.
Σύμφωνα με αυτούς, επί του παρόντος η μόνη ώριμη εφαρμογή του Rust είναι ο μεταγλωττιστής rustc, η οποία εκδίδει κώδικα μέσω LLVM.
Ο πυρήνας Linux υποστηρίζει μια μεγάλη ποικιλία αρχιτεκτονικών, πολλές από τις οποίες δεν έχουν διαθέσιμο backend LLVM.
Από την πλευρά του, ο Triplett πρότεινε ότι η προσθήκη του Rust στον πυρήνα θα βοηθούσε στην αύξηση της αρχιτεκτονικής υποστήριξης του Rust, επικαλούμενος την εμπειρία του με το έργο Debian. Ανέφερε ότι η εισαγωγή του λογισμικού Rust στο Debian βοήθησε να ενθαρρύνει τους λάτρεις και τους χρήστες εξειδικευμένων αρχιτεκτονικών να βελτιώσουν την υποστήριξη Rust, και ελπίζει να προσθέσει υποστήριξη πυρήνα για να έχει παρόμοιο αποτέλεσμα.
Συγκεκριμένα, ήταν πεπεισμένος ότι οποιαδήποτε αρχιτεκτονική με LLVM backend θα ήταν γρήγορα συμβατή με το Rust. Η συζήτηση επικεντρώθηκε επίσης σε εναλλακτικές εφαρμογές Rust ως μια πορεία προς ευρύτερη υποστήριξη αρχιτεκτονικής.
Η συνεδρία ολοκληρώθηκε χωρίς πιο συγκεκριμένα ορόσημα, αλλά φαίνεται να υπάρχει γενικός ενθουσιασμός για την υποστήριξη των Rust Mods και αυξανόμενη συμφωνία σχετικά με τις γενικές απαιτήσεις για αυτήν την υποστήριξη.