The OpenNET Project / Index page

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

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

12.11.2023 10:37

После полутора лет разработки состоялся выпуск инструментария GNU Mes 0.25, обеспечивающего процесс бутстрэппинга (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).

В новом выпуске реализована поддержка архитектуры RISC-V (RISC-V64-linux) и добавлена поддержка компиляции с использованием транспайлера M2-Planet. Поддерживается сборка с версией M2-Planet 1.11.0 для целевой платформы x86_64-linux. Указание режима "--bootstrap-mode" при использовании M2-Planet больше не требуется. В MesCC решены проблемы совместимости с версиями GCC 10+, обеспечена инициализация полей структур в значение 0 и восстановлена возможность отладки бинарных файлов на уровне отдельных функций.

В следующих выпусках ожидается появление поддержки бутстрэппинга NixOS только из исходных текстов, поддержки модулей, полностью совместимых с Guile, возможности запуска Gash и Gash-Utils, поддержки бутстрэппинга gcc 4.6.4, а также возможности полной сборки всей системы из исходных текстов в Linux-окружениях на базе архитектур armhf и riscv64.

  1. Главная ссылка к новости (https://www.mail-archive.com/i...)
  2. OpenNews: Выпуск GNU Mes 0.23, инструментария для самодостаточной сборки дистрибутивов
  3. OpenNews: Выпуск Mcron 1.2, реализации cron от проекта GNU
  4. OpenNews: Доступен пакетный менеджер GNU Guix 1.4 и дистрибутив на его основе
  5. OpenNews: Доступен полностью свободный Linux-дистрибутив Trisquel 11.0
  6. OpenNews: Выпуск системного менеджера GNU Shepherd 0.10
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60097-mes
Ключевые слова: mes, build, boot, bootstrap, gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (58) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (3), 11:05, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Больше всего меня поражает такое длительное время между стабильными релизами у опенсурц проектов. Этим они стреляют себе в ногу. Обыватель не будет качать найтли или, не дай бог, собирать их из сурцов. Он скачает офф стабильный релиз. Которому два года и не такой уж он и стабильный - в нем куча багов. Что сделает обыватель, когда эта поделка не заведется изкоробки? Он свалит к проприетарщикам, у которых релизы вылизаны до идеала. Яркий пример - Code::Blocks, у который в последнем релизе поломан копипстинг, что очень сильно раздражает.
     
     
  • 2.4, Аноним (4), 11:22, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Некогда нам, вам нужно вы и собирайте. А мы никому ничего не должны, пусть нас проект будет в жопе все равно мы бесплатно пашем.
    И вообще, какое вам дело до качества, наш код открыт, вот и молитесь на нас теперь!
     
     
  • 3.5, Аноним (5), 11:53, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всё правильно сказано. Опенсорс проекты - это не халява и не бесплатный труд, а решение исключительно своих проблем. Хотите чтобы кто-то решал чужие? Заплатите ему за это. Или face your problems yourself. Опенсорс - не коммунизм.
     
     
  • 4.22, Аноним (4), 14:50, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Получается лучше спиратить проприетарь, чем надеяться, что в попенсорсных аналогах что-то будет работать. Теперь я понимаю почему у нас попенсорс не развит.......
     
     
  • 5.23, Аноним (23), 15:00, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спиратить проприетарь с интегрированной малварью. Сейчас не нулевые, теперь почти всегда так. Если вас такое устраивает - то да.
     
     
  • 6.26, Аноним (4), 16:44, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На приватных трекерах нет никакой малвари.

     
     
  • 7.33, Аноним (33), 21:03, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Дважды наивный. 1. малварь от разработчика идёт, напр. "телеметрия" и прочие закладки для отслеживания нелицензионных установок. 2. С какой стати на приватных нет? Даже если приклеенная малварь не распространяется в сговоре с модератором (а зачастаю она распространяется именно в сговоре с модератором, который оперативно трёт все сообщения с жалобами на малварь, в том числе пруфами уровня детальной пошаговой инструкции по отклеиванию), прибыль от малвари позволит новый аккаунт купить и окупить в маловероятном случае бана.
     
     
  • 8.34, Аноним (4), 22:16, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что трекеров больше, чем один, везде не потрешь отзывы И репутация зараб... текст свёрнут, показать
     
     
  • 9.53, Аноним (53), 15:31, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Секрета не открою, когда скажу, что на репутацию вообще всем похрен в случае мон... текст свёрнут, показать
     
     
  • 10.55, Аноним (4), 15:48, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Примеры давай двойной малвари на подконтрольных, а не теории заговора Я почему ... текст свёрнут, показать
     
  • 5.40, Аноним (40), 01:49, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А вот это — коммунизм! Либо на халяву, либо сп…ть.
     
  • 4.24, Аноним (24), 16:00, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Профессионально приплетаю коммунизм. Дорого.
     
     
  • 5.29, Аноним (29), 17:06, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сделай паузу с приплетаниями, поделись со всеми.
     
  • 4.48, Аноним (48), 11:41, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Всё правильно сказано. Опенсорс проекты - это не халява и не бесплатный
    > труд, а решение исключительно своих проблем. Хотите чтобы кто-то решал чужие?
    > Заплатите ему за это. Или face your problems yourself. Опенсорс -
    > не коммунизм.

    А какжи так?! А какжи "скачивая линукс вы скачиваете коммунизм?!" xD

     
  • 3.21, Аноним (21), 14:47, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В целом существует continuous delivery. Я так и публикую свои библиотеки на npm. Как только изменения попадают в мастер. Только использовал GitHub Actions, которое не рекомендую, они постоянно что-то меняют и оно ломается периодически. Лучше как-то обеспечить локальный сценарий сборки — надёжнее будет.
     
  • 2.6, Аноним (6), 11:55, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> GNU Mes is a Scheme interpreter and C compiler for bootstrapping the GNU System.
    >> The final goal is to help create a full source bootstrap as part of the bootstrappable builds effort for any UNIX-like operating system.
    > Что сделает обыватель, когда эта поделка не заведется изкоробки? Он свалит к проприетарщикам, у которых релизы вылизаны до идеала.

    Не томи, давай уже свою ссылку на хотя бы одного проприетарщика с "вылизаным до идеала" релизом альтернативного софта. Али как обычно, опеннетный балабол?

     
     
  • 3.8, Аноним (8), 11:59, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Все для Вас
    https://visualstudio.microsoft.com/ru/
     
     
  • 4.11, Аноним (11), 12:06, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так ешьте корпоративное вас же ни кто не принуждает.
    Правда если заглянуть внутрь то там тот же опенсорс только уже с закладками нужными
     
  • 4.13, Аноним (6), 12:09, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >> GNU Mes is a Scheme interpreter and C compiler for bootstrapping the GNU System.
    >> .. full source bootstrap as part of the bootstrappable builds effort for any UNIX-like operating system.
    > Все для Вас
    > https://visualstudio.microsoft.com/ru/

    Все для Вас
    https://learn-english-online.org/Lesson1/Lesson1.htm


     
  • 4.25, Аноним (25), 16:42, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это тот вылизанный до идеала компилятор, который фиксит баги, а потом в следующем же крупном релизе их снова возвращает? Вот уж точно, отточеный до идеала.
     
     
  • 5.39, Аноним (40), 01:48, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Недавно как раз вспоминал, какие есть коммерчески успешные игры, собранные свободным компилятором. И вспомнил ровно одну — Quke 1. Но Кармак в своё время тем ещё экспериментатором был. Впрочем, эксперимент не задался.
     
     
  • 6.63, фф (?), 07:20, 16/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В playstation SDK от сони входит gcc - подозреваю, что большинство игр на плойке собрано им.
    Сколько из них были комерчески успешными не скажу.
     
  • 2.10, Аноним (11), 12:01, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >>Обыватель не будет качать найтли или, не дай бог, собирать их из сурцов. Он скачает офф стабильный релиз....

    а кто такой обыватель и зачем ему это нужно

     
     
  • 3.28, Аноним (29), 16:54, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Обыватель каждый день на кухне бутстраппит NixOS. Каждая кухарка должна уметь не только управлять государством, но и обеспечить суверенитет государства операционными системами.
     
  • 2.27, Аноним (25), 16:47, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не на то смотрите. Дело не в том, что между релизами два года, дело в том, что недостаточно тестируют. А то повадились: быстро-быстро пихнули в релиз то, что, по сути, является в лучшем случае бета-версией, а уж в продакшне дотестируют. В итоге всё равно после релиза ждёшь ещё 2-3 патча, чтобы "стабильная" версия стала действительно стабильноый.
     
     
  • 3.35, Аноним (4), 22:22, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это если более менее успешный/популярный проект, а не подделка одного васяна. Такие могут и по 2 года делать промежутки между версиями, а минорных не делать вовсе.
     

  • 1.7, Аноним (11), 11:58, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это божественно!
     
  • 1.9, Аноним (9), 11:59, 12/11/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –2 +/
     
  • 1.14, Аноним (14), 12:41, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Теперь точно сделают свой дистрибутив с нескучными обоями.
     
     
  • 2.15, Аноним (11), 12:43, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Guix ?
     
  • 2.18, Аноним (18), 12:49, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    С консолью на последовательном порту.
     

  • 1.16, Аноним (18), 12:47, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Все конечно хорошо, но лучшебы эти силы пустили на батстрап Rust компилятора. Я RMS доверяю, мне rust нужен, подонки его везде напихали.
     
     
  • 2.17, Аноним (11), 12:48, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    да как напихали так и выпилят делов то
     
  • 2.19, Аноним (19), 13:58, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уже давно есть. Правда цепочка довольно длинная получилась, надо бы оптимизировать.
    https://guix.gnu.org/ru/blog/2018/bootstrapping-rust/
     

  • 1.20, Аноним (20), 14:10, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда-то был TCCBOOT, который в процессе загрузки собирал урезанное ядро Linux.
     
  • 1.30, Аноним (30), 17:51, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В GNU Mes предлагается самодостаточный (self-hosting) интерпретатор для языка Scheme, написанный на языке Си

    Это рушит концепцию развет нет? Все равно для сборки нужен Си компилятор.

     
     
  • 2.31, Аноним (31), 18:28, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Там цепочка начинается с ассемблера, а не с Си
     
     
  • 3.52, Аноним (53), 15:10, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А должна начинаться с простейшего процессора на минимуме простейших кустарно изготавливаемых дискретных элементов, простейшего считывателя перфоленты, простейшего термопринтера, печатающего места для отверстий на перфоленте, простейшей программы для этого устройства в виде транскрипта перфоленты. Всё должно быть выжжено в кубе из кварца по технологии Project Silica и заточено на Шпицбергене.
     
     
  • 4.54, Аноним (54), 15:43, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так оно так и начиналось ;)
    Просто Вы немного опоздали :(
     

  • 1.32, Аноним (32), 20:24, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Оба компонента взаимособираемы.

    тут есть один нюанс: сборка происходит уже собранным компилятором, а выполнение -- уже собранным интерпретатором.
    поэтому пока они оба находятся в исходниках, собирать/выполнять придётся чем-то уже собранным заранее.
    а оно является потенциальным источником закладок -- по исходному условию.

    поэтому надо прочитать код интерпретатора и компилятора, собрать интерпретатор, дизассемблировать, полностью прочитать листинг и убедиться, что никакого вредного кода добавлено не было, затем прочитать код компилятора и собрать его силами интерпретатора.

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

    но это всё-равно легче, чем прочитать весь код gcc или llvm/clang.

     
     
  • 2.38, Аноним (38), 01:00, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для x86 GNU Mes собирается вот из этого: https://github.com/oriansj/bootstrap-seeds/blob/master/POSIX/x86/hex0_x86.hex0
    Здесь бинарник по сути являтся зеркальным отражением своего исходного кода. Подкинуть туда закладки будет мягко говоря тяжеловато.
     
     
  • 3.41, Аноним (41), 03:22, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Забавно, что в README указанного проекта написано

    > NEVER TRUST ANYTHING IN HERE

     
     
  • 4.43, Аноним (38), 08:09, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это правильно. Ты должен проверить исходники, перед тем как использовать. Иначе процесс бутстрапизации теряет смысл
     

  • 1.36, anonymoose (?), 22:32, 12/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А вот дурацкий вопрос:

    Есть у нас, например, MS Windows с дефолтным набором софта.
    Можно на ней раскрутить Юникс-систему через этот bootstrap?

    (mingw, cygwin по условиям задачи исключаются)

     
     
  • 2.37, anonymous (??), 23:08, 12/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кстати, не вопрос ни разу.
    Ставим virtualbox/simh, под ним запускаем систему с компилятором C, профит!
     

  • 1.44, Аноним (44), 08:38, 13/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Когда добавят бутстрэппинг для С#?
     
     
  • 2.50, Аноним (50), 14:24, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда Андреас Хелсберг на горе свистнет
     

  • 1.45, Пряник (?), 10:51, 13/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ещё забыли пункт про сборку Knight процессора на ПЛИС для hex0 (который уже stage0).

    Непонятно, как транспилер M2 Planet создаст исполняемый файл, если транспилер это source-to-source compiler?

     
     
  • 2.59, Тот_ещё_аноним (ok), 18:53, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Целевой source как машкод?
    Заголовок как набор байт?
     

  • 1.46, Пряник (?), 10:53, 13/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Осталось Nix переписать, а то они используют обёртку вокруг него на Guile.
     
  • 1.47, Аноним (48), 11:38, 13/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "В GNU Mes предлагается самодостаточный (self-hosting) интерпретатор для языка Scheme, написанный на языке Си, и простейший компилятор для языка Си (MesCC), написанный на языке Scheme. Оба компонента взаимособираемы. Scheme-интерпретатор даёт возможность собрать Си-компилятор MesCC, который затем позволяет собрать урезанную версию компилятора TinyCC (tcc), возможностей которого уже достаточно для сборки GCC."

    А если уже собранные бинарники собраны так, чтобы в исходники добавлять скрытые закладки на этапе компиляции типа проверенных исходников, как они решили эту "проблему"?!

     
     
  • 2.49, anonymous (??), 12:39, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > А если уже собранные бинарники собраны так, чтобы в исходники добавлять скрытые закладки на этапе компиляции типа проверенных исходников, как они решили эту "проблему"?!

    Сравнить результат бутстрапа на нескольких ОС c разными компиляторами C.

    например, на VAX/VMS DEC C собираем интерпретатор scheme, им интерпретируем MesCC, которым собираем для x86 бинарник из проверочного исходника на C;

    повторяем то же на linux gcc и т.д.

    Если правильно понимаю, MesCC из одного и того же исходника C должен сгенерить идентичный бинарник независимо от того, как собирался scheme, которым интерпретируется MesCC.

     
     
  • 3.56, Аноним (56), 15:52, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    По моему скромному мнению, более надёжным решением было бы написание минималистичного компилятора C на ассембрере целевой архитектуры. Минималистичного насколько это возможно. Да, потребуется отдельно для x86_64, отдедьно для RISC-V64. Затем, _ручная_ трансляция этого C-компилятора в машинные коды с помещением выходного кода в минималистичный ELF-файл. Далее, сборка этим компилятором интерпретатора Scheme.
     
     
  • 4.58, anonymous (??), 18:12, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > ... более надёжным решением было бы написание минималистичного компилятора C на ассембрере целевой архитектуры. Минималистичного насколько это возможно.

    Ему еще рантайм так или иначе потребуется.
    И всю эту радость грузить прямо в RAM тумблерами с пульта. Щолк-щолк.

     
  • 2.57, Пряник (?), 17:58, 13/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Эта новость как раз про решение этой проблемы. Тем чем читал? Я даже выше пояснил: первый компилятор ассемблера stage0 ты собираешь на ПЛИС/FPGA/вентильной матрице.
     

  • 1.51, mos87 (ok), 14:39, 13/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    очень крутая, интересная, технологичная - и, скорее всего, бесполезная норкомания.

    It's not for using - it's just for looking through (c).

     
     
  • 2.65, Аноним (65), 17:37, 16/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Оно наберёт вес только после появления в массах компов с открытыми прошивками (Canoeboot https://www.opennet.me/opennews/art.shtml?num=60011 прошивки видяхи, сетевухи, диска, ...)
    А до этого АНБ легче засунуть трояна в бинарный блоб прошивки (https://en.m.wikipedia.org/wiki/Stuxnet), чем в компилятор C при бутстрапе с stage1.
     

  • 1.64, Аноним (64), 16:57, 16/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Проект также развивает Си-библиотеку 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).
    > В следующих выпусках ожидается появление поддержки бутстрэппинга NixOS  только из исходных текстов.

    Заказываю сборку stage1 от Gentoo и минимал CD: https://distfiles.gentoo.org/releases/amd64/autobuilds/current-install-amd64-m

     

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



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

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