Nach anderthalb Jahren Entwicklung wurde das Toolset GNU Mes 0.25 veröffentlicht, das den Bootstrap-Prozess für GCC unterstützt und einen geschlossenen Rekompilierungszyklus aus Quelltexten ermöglicht. Das Toolset adressiert die Herausforderung einer verifizierten Initialkompilierung des Compilers in Distributionen, indem es die Kette der zyklischen Rekompilation durchbricht (zum Compilieren des Compilers sind ausführbare Dateien eines bereits kompilierten Compilers erforderlich, und binäre Compiler-Bauweisen können potenzielle Quellen für versteckte Hintertüren sein, was eine vollständige Garantie der Integrität der Builds aus den Referenz-Quelltexten ausschließt).
GNU Mes bietet einen selbstlaufenden (self-hosting) Interpreter für die Programmiersprache Scheme, der in C geschrieben ist, sowie einen einfachen Compiler für C (MesCC), der in Scheme geschrieben wurde. Beide Komponenten sind gegenseitig kompilierbar. Der Scheme-Interpreter ermöglicht den Bau des C-Compilers MesCC, der dann zur Erstellung einer abgespeckten Version des Compilers TinyCC (tcc) verwendet werden kann, dessen Funktionen bereits ausreichend sind, um GCC zu kompilieren.
Der Scheme-Interpreter ist äußerst kompakt und umfasst etwa 5000 Zeilen Code für eine einfachste Untermenge der Programmiersprache C. Er kann über den universellen Übersetzer M2-Planet oder einen einfachen C-Compiler, der mit dem selbstbauenden Assembler hex0 erstellt wurde und keine externen Abhängigkeiten benötigt, in eine ausführbare Datei umgewandelt werden. Der Interpreter umfasst einen vollständigen Garbage Collector und stellt eine Bibliothek für dynamisch ladbare Module zur Verfügung. Das Projekt entwickelt zudem die C-Bibliothek Mes C, die ausreichend ist, um glibc 2.2.5, binutils 2.20.1 und gcc 2.95.3 zusammenzustellen, die benötigt werden, um die Guix-Distribution für Plattformen wie i686-linux, x86_64-linux, armhf-linux und aarch64-linux zu implementieren, wobei ausschließlich Quelltexte (Full Source Bootstrap) verwendet werden.
In der neuen Version wird die Unterstützung für die RISC-V-Architektur (RISC-V64-linux) sowie die Unterstützung für die Kompilierung mit dem Transpiler M2-Planet eingeführt. Die Kompilierung mit Version 1.11.0 von M2-Planet für die Zielplattform x86_64-linux wird unterstützt. Die Angabe des Modus "—bootstrap-mode" ist bei der Verwendung von M2-Planet nicht mehr erforderlich. MesCC behebt Kompatibilitätsprobleme mit GCC-Versionen 10+, stellt die Initialisierung von Strukturfeldern auf den Wert 0 sicher und stellt die Möglichkeit zur Debugging binärer Dateien auf Funktionslevel wieder her.
In den kommenden Ausgaben wird die Unterstützung für das Bootstrapping von NixOS nur aus Quellcodes, die Unterstützung von Modulen, die vollständig mit Guile kompatibel sind, die Möglichkeit der Ausführung von Gash und Gash-Utils, sowie die Unterstützung des Bootstrappings von gcc 4.6.4 und die Möglichkeit, das gesamte System aus Quellcodes in Linux-Umgebungen auf der Basis von armhf und riscv64 zu erstellen, erwartet.
Quelle: opennet.ru
