Veröffentlichung des Werkzeugs , das den Bootstrapping-Prozess für GCC ermöglicht und einen geschlossenen Zyklus der Neubau aus Quelltexten erreicht.
Das Tool löst das Problem des verifizierten Initialbaus des Compilers in Distributionen, indem es die Kette der zyklischen Neubauten durchbricht (für den Bau des Compilers sind bereits executable Dateien des zuvor gebauten Compilers erforderlich, da binäre Compiler-Bauten potenzielle Quellen für versteckte Backdoors darstellen, was eine vollständige Gewährleistung der Integrität von Bauten aus Referenzquelltexten erschwert).
In GNU Mes ein selbstgenügsamer (self-hosting) Interpreter für die Programmiersprache Scheme, geschrieben in C, und ein einfacher Compiler für C (MesCC), geschrieben in Scheme. Beide Komponenten sind gegenseitig aufbaubar. Der Scheme-Interpreter ermöglicht es, den C-Compiler MesCC zu bauen, der dann eine abgespeckte Version des Compilers (tcc) erstellt, dessen Fähigkeiten bereits zur Erstellung von GCC ausreichen.
Der Interpreter der Programmiersprache Scheme ist recht kompakt, umfasst etwa 5000 Zeilen Code im einfachsten Teilmengen des C und kann mit einem universellen Übersetzer oder einem einfachsten C-Compiler, der mit einem selbstaufbauenden Assembler erstellt wurde, in eine ausführbare Datei umgewandelt werden , der keine externen Abhängigkeiten erfordert. Dabei beinhaltet der Interpreter einen vollständigen Garbage Collector und bietet eine Bibliothek von dynamisch ladbaren Modulen.
In der neuen Ausgabe wird die Unterstützung für wiederholbare Builds mit den Bindungen mes+mescc oder guile+mescc in den Distributionen GNU Guix, Debian GNU/Linux und NixOS gewährleistet. Außerdem wurde die Möglichkeit hinzugefügt, den Scheme-Interpreter Mes in GNU Hurd zu starten, jedoch funktioniert der C-Compiler mescc noch nicht aufgrund fehlender Unterstützung für erforderliche Systemaufrufe (z. B. fork/exec). Erste Unterstützung für die Erstellung von ausführbaren Dateien in FreeBSD wurde hinzugefügt. Die Unterstützung für das Bootstrapping der Guix-Distribution mit ausschließlich in Scheme geschriebenen Komponenten wurde verbessert (Gash Shell (Guile as Shell) anstelle von bash und Gash Core Utils anstelle von coreutils, grep, sed, gzip, make, awk und tar).
In den nächsten Ausgaben wird die Unterstützung für Bootstrap-Methoden in NixOS erwartet, die Implementierung des Bootstrappings ausschließlich mit Komponenten in Scheme im wip-bootstrap-Zweig, Unterstützung der ARM-Architektur, die Möglichkeit, Mes.c mit M2-Planet zu kompilieren, vollständige Unterstützung für Guile-Module sowie die Gewährleistung, dass mescc mit dem Hurd-Kernel funktioniert.
Quelle: opennet.ru
