Wydanie GNU Mes 0.22, narzędzia do samodzielnego budowania dystrybucji

Przedstawiony wydanie narzędzi GNU Mes 0.22, zapewniający proces bootstrapowania dla GCC i umożliwiający osiągnięcie zamkniętej pętli ponownej kompilacji z kodów źródłowych.
Narzędzie to rozwiązuje problem weryfikowanej początkowej kompilacji kompilatora w dystrybucjach, przerywając łańcuch cyklicznej ponownej kompilacji (do budowy kompilatora wymagane są pliki wykonywalne już zbudowanego kompilatora, a binarne zestawy kompilatora są potencjalnym źródłem ukrytych backdoorów, co nie pozwala na pełne gwarantowanie integralności kompilacji z etalonowych kodów źródłowych).

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

Interpreter języka Scheme jest dość kompaktowy, zajmuje około 5000 linii kodu w najprostszym podzbiorze języka C i może być przekształcony w plik wykonywalny przy użyciu uniwersalnego kompilatora M2-Planet lub najprostszy kompilator C zbudowany przy użyciu samokompilującego się assemblera hex0, nie wymagający zewnętrznych zależności. Interpreter ten zawiera w pełni funkcjonalny zbieracz śmieci i oferuje bibliotekę modułów do załadowania.

W nowym wydaniu wprowadzono wsparcie dla powtarzalnych kompilacji z użyciem zestawów mes+mescc lub guile+mescc w dystrybucjach GNU Guix, Debian GNU/Linux i NixOS. Dodano możliwość uruchamiania interpretera Scheme Mes w GNU Hurd, ale kompilator C mescc jeszcze nie działa z powodu braku wsparcia dla wymaganych wywołań systemowych (na przykład fork/exec). Dodano początkowe wsparcie dla tworzenia plików wykonywalnych FreeBSD. Ulepszono wsparcie dla bootstrapowania dystrybucji Guix przy użyciu tylko komponentów w języku Scheme (powłoka Gash (Guile as Shell) zamiast bash i Gash Core Utils zamiast coreutils, grep, sed, gzip, make, awk i tar).

W kolejnych wydaniach oczekiwane jest dodanie wsparcia dla bootstrapingu w NixOS, możliwość uruchamiania bootstrapingu z wykorzystaniem wyłącznie komponentów w języku Scheme w gałęzi wip-bootstrap, wsparcie dla architektury ARM, możliwość kompilacji Mes.c z użyciem M2-Planet, pełne wsparcie dla modułów Guile oraz zapewnienie działania mescc z jądrem Hurd.

Ź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