Nach anderthalb Jahren Entwicklung wurde das GNU Mes 0.25-Toolkit veröffentlicht, das den Bootstrapping-Prozess fĂŒr GCC ermöglicht und einen geschlossenen Rekompilierungszyklus aus Quelltexten gewĂ€hrleistet. Das Toolkit löst das Problem des verifiziert initialen Compiler-Baus in Distributionen, indem es die Kette der zyklischen Rekompilierung unterbricht (da fĂŒr den Bau des Compilers bereits kompilierte Executables benötigt werden und die binĂ€ren Versionen des Compilers potenzielle Quellen fĂŒr versteckte Backdoors darstellen, was eine vollstĂ€ndige Garantie der IntegritĂ€t der Builds aus Referenz-Quelltexten unmöglich macht).
GNU Mes bietet einen autarken (self-hosting) Interpreter fĂŒr die Programmiersprache Scheme, geschrieben in C, sowie einen einfachen Compiler fĂŒr C (MesCC), der in Scheme geschrieben ist. Beide Komponenten sind gegenseitig kompilierbar. Der Scheme-Interpreter ermöglicht die Erstellung des C-Compilers MesCC, der wiederum die Erstellung einer abgespeckten Version des Compilers TinyCC (tcc) erlaubt, dessen Funktionen bereits ausreichen, um GCC zu erstellen.
Der Scheme-Interpreter ist sehr kompakt und umfasst etwa 5000 Codezeilen in einem einfachen Teilmenge der C-Sprache. Er kann in eine ausfĂŒhrbare Datei umgewandelt werden, indem der universelle Ăbersetzer M2-Planet oder ein einfacher C-Compiler verwendet wird, der mit einem selbstkompilierenden Assembler hex0 erstellt wurde, der keine externen AbhĂ€ngigkeiten benötigt. Der Interpreter enthĂ€lt einen vollwertigen Garbage Collector und bietet eine Bibliothek von nachladbaren Modulen. Das Projekt entwickelt auch die C-Bibliothek Mes C, die ausreicht, um glibc 2.2.5, binutils 2.20.1 und gcc 2.95.3 zu erstellen, die zur Bereitstellung der Distribution Guix fĂŒr die Plattformen i686-linux, x86_64-linux, armhf-linux und aarch64-linux erforderlich sind, wobei nur die Quelltexte verwendet werden (Full Source Bootstrap).
In dieser neuen Version wird die UnterstĂŒtzung fĂŒr die RISC-V-Architektur (RISC-V64-linux) eingefĂŒhrt und die Kompilierung mit dem Transpiler M2-Planet hinzugefĂŒgt. Der Bau wird mit der Version M2-Planet 1.11.0 fĂŒr die Zielplattform x86_64-linux unterstĂŒtzt. Die Angabe des Modus "âbootstrap-mode" bei der Nutzung von M2-Planet ist nicht mehr erforderlich. In MesCC wurden KompatibilitĂ€tsprobleme mit GCC-Versionen 10+ behoben, die Initialisierung von Strukturfeldern auf 0 sichergestellt und die Möglichkeit der Fehlersuche in BinĂ€rdateien auf Funktionsebene wiederhergestellt.
In kĂŒnftigen Versionen wird die UnterstĂŒtzung fĂŒr das Bootstrapping von NixOS ausschlieĂlich aus Quelltexten, UnterstĂŒtzung fĂŒr vollstĂ€ndig mit Guile kompatible Module, die Möglichkeit zur AusfĂŒhrung von Gash und Gash-Utils sowie das Bootstrapping von gcc 4.6.4 und die Möglichkeit einer vollstĂ€ndigen Systemzusammenstellung aus Quelltexten in Linux-Umgebungen auf Basis der Architekturen armhf und riscv64 erwartet.
Quelle: opennet.ru
