Το gccrs είναι μια πλήρης εναλλακτική εφαρμογή της γλώσσας Rust έναντι του GCC
Πρόσφατα ανακοινώθηκε ότι το έργο "gccrs" , το οποίο στοχεύει στην παροχή μιας διεπαφής για τη γλώσσα Rust στο GCC (GNU Compiler Collection), βρίσκεται σε καλό δρόμο για την ενσωμάτωσή του στο GCC 13. Στο συνέδριο προγραμματιστών FOSDEM νωρίτερα αυτόν τον μήνα, ο μηχανικός Arthur Cohen έκανε μια παρουσίαση για το gccrs περιγράφοντας την τρέχουσα κατάσταση της εργασίας.
Για όσους δεν είναι εξοικειωμένοι με το έργο gccrs, πρόκειται για μια πλήρη εναλλακτική υλοποίηση της γλώσσας Rust πάνω στο GCC, με στόχο την πλήρη ενσωμάτωσή του στην αλυσίδα εργαλείων του GNU.
Η προέλευση αυτού του έργου είναι μια κοινοτική προσπάθεια πριν από αρκετά χρόνια, όταν η Rust ήταν ακόμα στην έκδοση 0.9. η γλώσσα που δημιουργήθηκε από τη Mozilla υπέστη τόσες πολλές αλλαγές που έγινε δύσκολο για μια κοινοτική προσπάθεια να καλυφθεί.
Τώρα που η γλώσσα είναι σταθερή, ήρθε η ώρα να δημιουργήσετε εναλλακτικούς μεταγλωττιστές:
«Ξεκίνησε το 2014 (και ξεκίνησε ξανά το 2019), η προσπάθεια συνεχίζεται από το 2020 και έχουμε κάνει πολλή προσπάθεια και μεγάλη πρόοδο. Ανεβάσαμε την πρώτη έκδοση του gccrs εντός του GCC. Έτσι την επόμενη φορά που θα εγκαταστήσετε το GCC 13, θα έχει gccrs μέσα.
Μπορείτε να το χρησιμοποιήσετε και μπορείτε να αρχίσετε να το χακάρετε, μπορείτε να αναφέρετε τα προβλήματα όταν αναπόφευκτα καταρρεύσει και πεθάνει φρικτά. Ένα μεγάλο πράγμα που κάνουμε είναι να εργαζόμαστε για να λειτουργήσει η δοκιμαστική σουίτα rustc», είπε ο Άρθουρ Κοέν κατά την παρουσίασή του στο συνέδριο FOSDEM νωρίτερα αυτό το μήνα.
Η δυνατότητα επιτυχούς εκτέλεσης της σουίτας δοκιμών του μεταγλωττιστή rustc παραμένει επίσης ένας στόχος. Σύμφωνα με τον Cohen, η διεπαφή GCC του Rust στοχεύει επίσης στην παλαιότερη έκδοση 1.49 του libcore του Rust.
Στις Συχνές Ερωτήσεις του έργου gccrs σημειώνεται ότι όλες οι τεχνολογίες κατασκευής LLVM, τις οποίες χρησιμοποιεί η Rust, «δεν διαθέτουν ορισμένα backend συμβατά με το GCC, επομένως μια υλοποίηση του gccrs μπορεί να καλύψει τα κενά για χρήση στην ολοκληρωμένη ανάπτυξη ».
Σημειώστε, ωστόσο, ότι ο μεταγλωττιστής Rust-GCC (gccrs) βρίσκεται ακόμα σε πολύ πρώιμο στάδιο και δεν μπορεί ακόμη να χρησιμοποιηθεί για τη μεταγλώττιση πραγματικών προγραμμάτων Rust.
Η ομάδα του GCC ψήφισε τον περασμένο Ιούλιο να εγκρίνει την ενσωμάτωση του gccrs ως σουίτα δημιουργίας. Η σημασία αυτού του έργου έγκειται στη σημασία του για τον πυρήνα του Linux. Στην πραγματικότητα, ο πυρήνας του Linux συνήθως κατασκευάζεται με GCC, αλλά τα σχέδια που επιτρέπουν τη χρήση της γλώσσας Rust παράλληλα με τη C για τον κώδικα του πυρήνα, για λόγους ασφάλειας μνήμης, προχωρούν σταθερά.
Το έργο "Rust for Linux" συγχωνεύτηκε επίσημα στο κύριο δέντρο Linux 6.1 Git τον περασμένο Οκτώβριο, καθιστώντας τη Rust τη δεύτερη γλώσσα αφιερωμένη στην ανάπτυξη Linux, μετά από 31 χρόνια αποκλειστικής ανάπτυξης που βασίζεται στη C.
«Θέλουμε το gccrs να είναι ένας πραγματικός μεταγλωττιστής Rust και όχι ένα έργο παιχνιδιού ή κάτι που συντάσσει μια γλώσσα που μοιάζει με Rust αλλά δεν είναι Rust. προσπαθούμε πραγματικά να κάνουμε αυτή τη δοκιμαστική σουίτα να λειτουργήσει», πρόσθεσε. Κατά τη διάρκεια της παρουσίασης, ο Cohen είπε επίσης ότι ενώ η διεπαφή Rust του GCC 13 έχει ξεκινήσει καλά, υπάρχει ακόμη πολλή δουλειά που πρέπει να γίνει. Ο δανεικός κώδικας επαλήθευσης απουσιάζει εμφανώς αυτή τη στιγμή, η υποστήριξη για ενσωματωμένες και εγγενείς λειτουργικές μονάδες συνεχίζεται και το σημαντικό ορόσημο της μεταγλώττισης του κώδικα Rust για Linux δεν έχει ακόμη επιτευχθεί.
Υπενθυμίζεται ότι το έργο Rust for Linux στοχεύει στην εισαγωγή μιας νέας γλώσσας προγραμματισμού συστήματος στον πυρήνα του Linux. Σύμφωνα με τους ειδικούς, το Rust έχει μια βασική ιδιότητα που το καθιστά πολύ ενδιαφέρον να εξεταστεί ως δεύτερη γλώσσα για τον πυρήνα του Linux: διασφαλίζει ότι δεν θα εμφανιστεί καμία απροσδιόριστη συμπεριφορά (υπό την προϋπόθεση ότι ο μη ασφαλής κώδικας είναι λογικός).
Αυτό περιλαμβάνει την απουσία σφαλμάτων όπως η μετά την ελεύθερη χρήση, οι διπλές ελευθερώσεις, οι αγώνες δεδομένων κ.λπ. Σχετικές συζητήσεις περιστρέφονται γύρω από το ενδεχόμενο να αφαιρεθεί το C υπέρ της γλώσσας Rust. Αλλά ο Linus Torvalds, ο δημιουργός του Linux, είπε ότι αυτός δεν είναι ο δηλωμένος στόχος του έργου Rust for Linux.
Τέλος, αξίζει να αναφερθεί ότι παρόλο που η διεπαφή gccrs συγχωνεύτηκε για την επερχόμενη έκδοση GCC 13, δεν έχει ακόμη φτάσει σε κατάσταση όπου οι περισσότεροι προγραμματιστές της Rust μπορούν να τη χρησιμοποιήσουν ως εναλλακτική λύση στον επίσημο μεταγλωττιστή LLVM της Rust.
Δεν θα έπρεπε να είναι μέχρι το επόμενο έτος, τουλάχιστον με το GCC 14 τουλάχιστον.
Πηγή: https://fosdem.org/