Κυκλοφορία του GNU Mes 0.23, ενός κιτ εργαλείων για αυτόνομο κτίριο διανομής

Μετά από ένα χρόνο ανάπτυξης, κυκλοφόρησε το κιτ εργαλείων GNU Mes 0.23, παρέχοντας μια διαδικασία εκκίνησης για το GCC και επιτρέποντας έναν κλειστό κύκλο αναδόμησης από τον πηγαίο κώδικα. Η εργαλειοθήκη επιλύει το πρόβλημα της επαληθευμένης αρχικής συναρμολόγησης μεταγλωττιστή στις διανομές, σπάζοντας την αλυσίδα της κυκλικής αναδόμησης (η δημιουργία ενός μεταγλωττιστή απαιτεί εκτελέσιμα αρχεία ενός ήδη κατασκευασμένου μεταγλωττιστή και οι συγκροτήσεις δυαδικών μεταγλωττιστών αποτελούν πιθανή πηγή κρυφών σελιδοδεικτών, που δεν επιτρέπει την πλήρη εγγύηση την ακεραιότητα των συγκροτημάτων από τους πηγαίους κώδικες αναφοράς).

Το GNU Mes προσφέρει έναν διερμηνέα self-hosting για τη γλώσσα Scheme, γραμμένο στη γλώσσα C και έναν απλό μεταγλωττιστή για τη γλώσσα C (MesCC), γραμμένο στη γλώσσα Scheme. Και τα δύο εξαρτήματα είναι διασυναρμολογούμενα. Ο διερμηνέας Scheme καθιστά δυνατή τη δημιουργία του μεταγλωττιστή MesCC C, ο οποίος στη συνέχεια σας επιτρέπει να δημιουργήσετε μια απογυμνωμένη έκδοση του μεταγλωττιστή TinyCC (tcc), οι δυνατότητες του οποίου είναι ήδη επαρκείς για τη δημιουργία GCC.

Ο διερμηνέας της γλώσσας Scheme είναι αρκετά συμπαγής, καταλαμβάνει περίπου 5000 γραμμές κώδικα στο απλούστερο υποσύνολο της γλώσσας C και μπορεί να μετατραπεί σε ένα εκτελέσιμο αρχείο χρησιμοποιώντας τον καθολικό μεταφραστή M2-Planet ή έναν απλό μεταγλωττιστή C που συναρμολογείται χρησιμοποιώντας το αυτοσυναρμολογημένο hex0 assembler, που δεν απαιτεί εξωτερικές εξαρτήσεις. Ταυτόχρονα, ο διερμηνέας περιλαμβάνει έναν πλήρη συλλέκτη σκουπιδιών και παρέχει μια βιβλιοθήκη με ενότητες με δυνατότητα φόρτωσης.

Η νέα έκδοση περιλαμβάνει υποστήριξη για την αρχιτεκτονική ARM (armhf-linux και aarch-linux). Προστέθηκε η δυνατότητα χρήσης Mes μαζί με ένα μειωμένο σύνολο αρχείων bootstrap από το έργο GNU Guix (GNU Guix Reduced Binary Seed). Υλοποιήθηκε υποστήριξη για τη δημιουργία Mes και Mes C βιβλιοθήκης χρησιμοποιώντας το GCC 10.x. Ο μεταγλωττιστής MesCC αποστέλλει τώρα τη δική του βιβλιοθήκη libmescc.a (-lmescc) και κατά τη δημιουργία με GCC, προσδιορίζεται τώρα το "-lgcc". Παρέχεται υποστήριξη για τη δημιουργία MesCC με Guile 3.0.x.

Πηγή: opennet.ru

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