The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск GNU Mes 0.26, инструментария для самодостаточной сборки дистрибутивов

03.12.2023 22:57

Опубликован выпуск инструментария GNU Mes 0.26, обеспечивающего процесс бутстрэппинга (bootstrap) для GCC и позволяющего добиться замкнутого цикла пересборки из исходных текстов. Инструментарий решает задачу верифицированной начальной сборки компилятора в дистрибутивах, разрывая цепочку цикличной пересборки (для сборки компилятора требуются исполняемые файлы уже собранного компилятора, а бинарные сборки компилятора являются потенциальным источником скрытых закладок, что не позволяет полностью гарантировать целостность сборок из эталонных исходных текстов).

В GNU Mes предлагается самодостаточный (self-hosting) интерпретатор для языка Scheme, написанный на языке Си, и простейший компилятор для языка Си (MesCC), написанный на языке Scheme. Оба компонента взаимособираемы. Scheme-интерпретатор даёт возможность собрать Си-компилятор MesCC, который затем позволяет собрать урезанную версию компилятора TinyCC (tcc), возможностей которого уже достаточно для сборки GCC.

Интерпретатор языка Scheme очень компактный, занимает около 5000 строк кода на простейшем подмножестве языка Си и может быть преобразован в исполняемый файл с использованием универсального транслятора M2-Planet или простейшего Си-компилятора, собранного с использованием самособираемого ассемблера hex0, не требующего внешних зависимостей. При этом интерпретатор включает полноценный сборщик мусора и предоставляет библиотеку загружаемых модулей. Проект также развивает Си-библиотеку Mes C, которой достаточно для сборки glibc 2.2.5, binutils 2.20.1 и gcc 2.95.3, необходимых для развёртывания дистрибутива Guix для платформ i686-linux, x86_64-linux, armhf-linux и aarch64-linux, используя только исходные тексты (Full Source Bootstrap).

В новом выпуске добавлена поддержка модулей, полностью совместимых с Guile, и предоставлена возможности запуска Gash и Gash-Utils. Осуществлён переход с assert на использование исключений. Добавлена поддержка регулярных выражений. Реализованы девять новых модулей (ftw, i18n, receive, regex, io ports, bytevectors, srfi-2, srfi-11 и srfi-37). Добавлено 46 новых функций, среди которых chdir, clone-port, closedir, concatenate, drop, environ, execle, mkdir, opendir, partition, pipe, readdir, reduce, rmdir, seek, span, sleep, umask, uname и utimes. В следующих выпусках ожидается поддержка бутстрэппинга NixOS только из исходных текстов, возможность бутстрэппинга gcc 4.6.4, а также поддержка полной сборки всей системы из исходных текстов в Linux-окружениях на базе архитектур armhf и riscv64.

  1. Главная ссылка к новости (https://www.mail-archive.com/i...)
  2. OpenNews: Выпуск GNU Mes 0.25, инструментария для самодостаточной сборки дистрибутивов
  3. OpenNews: Выпуск системного менеджера GNU Shepherd 0.10
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60228-mes
Ключевые слова: mes, init, build, boot, bootstrap
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (20) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 23:07, 03/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А разве не была недавно новость эта?
     
     
  • 2.3, Аноним (3), 23:27, 03/12/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А разве не была недавно новость эта?

    Месяц назад была версия 0.25

     

  • 1.4, Bottle (?), 23:38, 03/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отличная вещь для гентушников.
     
     
  • 2.9, Аноним (9), 00:39, 04/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Для LFSников и прочих линуксдлясебяшников тоже.
     

  • 1.6, bircoph (ok), 23:42, 03/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > позволяет собрать урезанную версию компилятора TinyCC (tcc), возможностей которого уже достаточно для сборки GCC

    Вот этого я не понял. Для сборки современного GCC нужен C++, которого в tcc нет. Или там идёт бутстрап gcc со старых версий?

    В общем, не ясно, как они g++ получают.

     
     
  • 2.7, Аноним (7), 23:48, 03/12/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    gcc-2.95.3 там собирают
     
  • 2.10, Аноним (9), 00:45, 04/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Собирают какой-нибудь версси <4.8, который ещё на C был. В нём, в т.ч., собирают и g++. Затем, полученным g++ уже собирают GCC >4.8.
     

  • 1.11, Виндроид (?), 01:03, 04/12/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –5 +/
     

     ....ответы скрыты (3)

  • 1.15, mos87 (ok), 06:52, 04/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Эээ ну вы куда.. у меня ещё новость о 0.25 не закрыта.
     
  • 1.16, Аноним (16), 06:54, 04/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Все еще не решена проблема гипотетического наличия вируса в компиляторе, который распространяет себя на другие компиляторы, собираемые им.
     
     
  • 2.18, Аноним (17), 07:14, 04/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >  Все еще не решена проблема гипотетического наличия вируса в компиляторе, который распространяет себя на другие компиляторы, собираемые им.

    В данной новости уже добавлена информация про самособираемый компилятор.
    Т.е. теперь вам не надо читать clang или gcc, теперь достаточно изучить hex0 и иметь x86-совместимую систему.
    (Изучить hex0 уже вполне возможно: он маленький и хорошо документирован).

    Понятно, что если сборка происходит под эмулятором, то источником рисков является эмулятор.
    А если используется реальный комп, то биос должен быть гарантированно чистым и без всяко-разных зондов.

    Далее, там ещё всякие прошивки процессоров/контроллеров имеются.

    Так что данная ниша кибер-выживальщиков по-прежнему имеет очень большой задел.

     
  • 2.22, Аноним (22), 12:20, 04/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >с использованием самособираемого ассемблера hex0

    Если с этого начать, то можно убедиться в отсутствии в его исходном коде вируса, трояна, бекдора, etc. Систему команд и Ассемблер соответствующего CPU знать нужно.

     

  • 1.19, Аноним (19), 08:32, 04/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я прям очень запутался, вроде оно для бутстрапа, а вроде зависимости от таких штук как Guile. Объясните толком как это собирать, например начиная со stage0.
     
     
  • 2.21, Аноним (22), 12:15, 04/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    До stage0 нужно ещё полноценный GCC собрать сначала.
     
  • 2.24, Аноним (24), 12:50, 04/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот тут написано, что Mes в 2 режимах может собираться. Для каждого свои требования.
    https://git.savannah.gnu.org/cgit/mes.git/tree/INSTALL
     
  • 2.25, Аноним (24), 13:04, 04/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.gnu.org/software/mes/manual/html_node/The-Mes-Bootstrap-Process.ht
     

  • 1.23, Аноним (23), 12:25, 04/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Слишком сложно. Лучше бы с загрузочной дискеты FreeDOS начали, закончили GCC 13.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру