Wydanie GNU Mes 0.26, narzędzia do samodzielnej kompilacji dystrybucji

Opublikowano wydanie narzędzia GNU Mes 0.26, które zapewnia proces bootstrappingu dla GCC i umożliwia osiągnięcie zamkniętej pętli przetwarzania z tekstów źródłowych. Narzędzie rozwiązuje problem weryfikowanej początkowej kompilacji kompilatora w dystrybucjach, przerywając cykl odnawiania (aby zbudować kompilator, wymagane są pliki wykonywalne już zbudowanego kompilatora, a binarne kompilacje kompilatora mogą być potencjalnym źródłem ukrytych backdoorów, co nie pozwala na pełne zapewnienie integralności kompilacji z referencyjnych tekstów źródłowych).

W GNU Mes oferowany jest samowystarczalny interpreter dla języka Scheme, napisany w języku C, oraz najprostszy kompilator dla języka C (MesCC), napisany w języku Scheme. Oba komponenty mogą się wzajemnie kompilować. Interpreter Scheme umożliwia zbudowanie kompilatora C MesCC, który następnie pozwala na skompilowanie okrojonej wersji kompilatora TinyCC (tcc), której możliwości są wystarczające do kompilacji GCC.

Interpreter języka Scheme jest bardzo kompaktowy, zajmuje około 5000 linii kodu w najprostszej podzbiorze języka C i może być przekształcony w plik wykonywalny za pomocą uniwersalnego translacji M2-Planet lub najprostszego kompilatora C, zbudowanego przy użyciu samokompilującego assemblera hex0, nie wymagającego zewnętrznych zależności. Interpreter zawiera pełnoprawny zbieracz śmieci i udostępnia bibliotekę modułów do załadowania. Projekt rozwija również bibliotekę C Mes, która jest wystarczająca do zbudowania glibc 2.2.5, binutils 2.20.1 oraz gcc 2.95.3, niezbędnych do wdrożenia dystrybucji Guix dla platform i686-linux, x86_64-linux, armhf-linux oraz aarch64-linux, wykorzystując jedynie kody źródłowe (Full Source Bootstrap).

W nowym wydaniu dodano wsparcie dla modułów całkowicie zgodnych z Guile oraz możliwości uruchamiania Gash i Gash-Utils. Zrealizowano przejście z użycia assert na wykorzystywanie wyjątków. Dodano wsparcie dla wyrażeń regularnych. Opracowano dziewięć nowych modułów (ftw, i18n, receive, regex, io_ports, bytevectors, srfi-2, srfi-11 i srfi-37). Dodano 46 nowych funkcji, w tym chdir, clone-port, closedir, concatenate, drop, environ, execle, mkdir, opendir, partition, pipe, readdir, reduce, rmdir, seek, span, sleep, umask, uname i utimes. W kolejnych wydaniach przewidywane jest wsparcie dla bootstrappingu NixOS wyłącznie z tekstów źródłowych, możliwość bootstrappingu gcc 4.6.4, a także wsparcie dla pełnej kompilacji całego systemu z tekstów źródłowych w środowiskach Linux opartych na architekturach armhf i riscv64.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster