Lansarea GNU Mes 0.22, un instrument pentru construirea autonomă a distribuțiilor

Prezentat lansarea instrumentarului GNU Mes 0.22, care asigură procesul de bootstrap pentru GCC și permite atingerea unui ciclu închis de recompilare din sursele originale.
Instrumentarul rezolvă problema construirii verificate inițiale a compilatorului în distribuții, întrerupând lanțul de recompilare ciclică (pentru construirea compilatorului sunt necesare fișiere executabile deja construite, iar versiunile binare ale compilatorului sunt surse potențiale de backdoor-uri, ceea ce nu permite garantarea completă a integrității construcțiilor din sursele de referință).

În GNU Mes se oferă un interpret auto-suficient pentru limbajul Scheme, scris în C, și un compilator simplu pentru limbajul C (MesCC), scris în Scheme. Ambele componente sunt capabile să se reconstruiască reciproc. Interpretul Scheme permite construirea compilatorului C MesCC, care apoi permite construirea unei versiuni reduse a compilatorului TinyCC (tcc), a cărui capacitate este suficientă pentru construirea GCC.

Interpretul limbajului Scheme este destul de compact, ocupând aproximativ 5000 de linii de cod într-un subset simplu al limbajului C și poate fi transformat într-un fișier executabil folosind un translator universal M2-Planet sau un compilator de bază C, construit folosind un asamblor auto-reconstruit hex0, care nu necesită dependențe externe. La aceeași vreme, interpretul include un colector de gunoi complet și oferă o bibliotecă de module încărcabile.

În noua versiune a fost asigurată suportul pentru construcții repetabile utilizând legături mes+mescc sau guile+mescc în distribuțiile GNU Guix, Debian GNU/Linux și NixOS. A fost adăugată posibilitatea de a rula interpretul Scheme Mes în GNU Hurd, însă compilatorul C mescc nu funcționează încă din cauza lipsei suportului pentru apelurile de sistem necesare (de exemplu, fork/exec). A fost adăugat suport inițial pentru crearea fișierelor executabile FreeBSD. Suportul pentru bootstrapping-ul distribuției Guix a fost îmbunătățit folosind doar componente în limbajul Scheme (shell-ul Gash (Guile as Shell) în loc de bash și Gash Core Utils în loc de coreutils, grep, sed, gzip, make, awk și tar).

Următoarele versiuni vor aduce suport pentru bootstrapping pentru NixOS, activarea bootstrapping-ului folosind doar componente în limbajul Scheme în ramura wip-bootstrap, suport pentru arhitectura ARM, posibilitatea de a compila Mes.c folosind M2-Planet, suport complet pentru modulele Guile, asigurarea funcționării mescc cu nucleul Hurd.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster