Na een jaar ontwikkeling is de toolkit GNU Mes 0.23 uitgebracht, die het bootstrap-proces voor GCC mogelijk maakt en een gesloten cyclus van herbouw uit de broncode kan bereiken. De toolkit lost de uitdaging op van een geverifieerde initiële bouw van de compiler in distributies, waarbij de cyclus van herbouw wordt doorbroken (voor de bouw van de compiler zijn uitvoerbare bestanden van een al gebouwde compiler vereist, terwijl binaire builds van de compiler een potentiële bron van verborgen backdoors zijn, wat een volledige garantie op de integriteit van builds uit de referentiele broncodes voorkomt).
In GNU Mes is er een zelfvoorzienende (self-hosting) interpreter voor de Scheme-taal, geschreven in C, en een eenvoudigste compiler voor de C-taal (MesCC), geschreven in Scheme. Beide componenten zijn wederzijds bouwbaar. De Scheme-interpreter maakt het mogelijk om de C-compiler MesCC te bouwen, die op zijn beurt een verkorte versie van de TinyCC (tcc) compiler kan bouwen, waarvan de mogelijkheden al voldoende zijn voor het bouwen van GCC.
De Scheme-taal interpreter is behoorlijk compact, beslaat ongeveer 5000 regels code in de eenvoudigste subset van de C-taal en kan worden omgezet in een uitvoerbaar bestand met behulp van de universele translator M2-Planet of de eenvoudigste C-compiler, opgebouwd met behulp van de zelfbouw assembler hex0, die geen externe afhankelijkheden vereist. De interpreter bevat een volledige garbage collector en biedt een bibliotheek met laadbare modules.
In deze nieuwe uitgave is ondersteuning voor de ARM-architectuur (armhf-linux en aarch-linux) geïmplementeerd. De mogelijkheid om Mes samen met een verkorte set bootstrap-bestanden van het GNU Guix-project (GNU Guix Reduced Binary Seed) te gebruiken, is toegevoegd. Ondersteuning voor het bouwen van Mes en de Mes C-bibliotheek met GCC 10.x is geïmplementeerd. In de compiler MesCC wordt een eigen bibliotheek libmescc.a (-lmescc) geleverd, en bij het bouwen met GCC wordt nu «-lgcc» opgegeven. Ondersteuning voor het bouwen van MesCC met Guile 3.0.x is verzekerd.
Bron: opennet.ru
