Veröffentlichung der Werkzeuge , das den Bootstrapping-Prozess für GCC ermöglicht und einen geschlossenen Reparateurzyklus aus Quelltexten erreicht.
Das Tool löst die Aufgabe einer verifiziert initialen Compiler-Bau in Distributionen und durchbricht die Kette der zyklischen Neubauten (für den Bau eines Compilers sind ausführbare Dateien eines bereits gebauten Compilers erforderlich, und binäre Compiler-Bauten sind potenzielle Quellen für versteckte Hintertüren, was eine vollständige Garantie der Integrität von Bauten aus Referenz-Quelltexten ausschließt).
In GNU Mes ein selbstgenügsamer (self-hosting) Interpreter für die Programmiersprache Scheme, geschrieben in C, und ein einfachster Compiler für die Programmiersprache C (MesCC), geschrieben in Scheme. Beide Komponenten sind gegenseitig compilierbar. Der Scheme-Interpreter ermöglicht es, den C-Compiler MesCC zu bauen, der dann eine abgespeckte Version des Compilers (tcc) bereitstellt, dessen Funktionen bereits ausreichend sind, um GCC zu bauen.
Der Interpreter der Scheme-Sprache ist recht kompakt, umfasst etwa 5000 Zeilen Code in dem einfachsten Teilmenge der Programmiersprache C und kann mit einem universellen Transpiler oder einem einfachen C-Compiler, der mit einem sich selbst bauenden Assembler erzeugt wurde, in eine ausführbare Datei umgewandelt werden. , der keine externen Abhängigkeiten benötigt. Zudem enthält der Interpreter einen vollwertigen Garbage Collector und stellt eine Bibliothek von Ladbaren Modulen bereit.
Im neuen Release wurde die Unterstützung für reproduzierbare Bauten unter Verwendung der Kombinationen mes+mescc oder guile+mescc in den Distributionen GNU Guix, Debian GNU/Linux und NixOS gewährleistet. Die Möglichkeit wurde hinzugefügt, den Scheme-Interpreter Mes unter GNU Hurd zu starten, aber der C-Compiler mescc funktioniert noch nicht aufgrund der fehlenden Unterstützung notwendiger Systemaufrufe (z.B. fork/exec). Erste Unterstützung für die Erstellung von ausführbaren Dateien unter FreeBSD wurde hinzugefügt. Die Unterstützung für das Bootstrapping der Guix-Distribution wurde verbessert, wobei nur Komponenten in der Sprache Scheme verwendet werden (die Kommandozeile Gash (Guile as Shell) anstelle von bash und Gash Core Utils anstelle von coreutils, grep, sed, gzip, make, awk und tar).
In den kommenden Veröffentlichungen wird die Unterstützung für Bootstrapping für NixOS erwartet, die Einbeziehung von Bootstrapping, das ausschließlich mit Komponenten auf Scheme-Basis in der wip-bootstrap-Zweig unterstützt sowie die Unterstützung der ARM-Architektur, die Möglichkeit, Mes.c mit M2-Planet zu kompilieren, vollständige Unterstützung von Guile-Modulen und die Sicherstellung, dass mescc mit dem Hurd-Kernel funktioniert.
Quelle: opennet.ru
