The OpenNET Project / Index page

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

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

06.07.2024 23:54

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

В новом выпуске возобновлена поддержка запуска Mes в окружении GNU Hurd. Добавлены новые модули: rnrs (побитовая арифметика) и srfi (srfi-39). Для совместимости с Guile модуль srfi загружается по умолчанию. Добавлены новые функции: pair-for-each и with-fluids*. В компиляторе MesCC реализована возможность работы с модулями для генерации парсеров и лексических анализаторов NYACC версий с 0.99.0 по 1.09.4. Удалена возможность использования устаревших модулей в стиле mes для NYACC и MesCC.

  1. Главная ссылка к новости (https://www.mail-archive.com/i...)
  2. OpenNews: Выпуск системного менеджера GNU Shepherd 0.10
  3. OpenNews: Выпуск системы управления пакетами GNU Stow 2.4, использующей символические ссылки
  4. OpenNews: Выпуск платёжной системы GNU Taler 0.11, развиваемой проектом GNU
  5. OpenNews: Доступен язык программирования GNU Guile 3.0.10
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61501-mes
Ключевые слова: mes, init
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Bottle (?), 00:10, 07/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересно то, как они решают вопрос компиляции современных версий GCC старым компилятором. Неужели нужно будет повторять цикл компиляции нового GCC старым по несколько раз, чтобы избежать ошибок?
     
     
  • 2.2, Аноним (2), 01:40, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    ну а как еще? вся цепочка бутстрапинга выглядит именно так: более слабый компилятор компилит компилятор понавороченнее, и вот так раз десять-двадцать. ЕМНИП hex0 компилит hex1, hex1 компилит hex2, hex2 компилит cc_x86, cc_x86 компилит M2-Planet, и далее по списку. Где-то в цепочке tinyCC компилит самого себя аж три или четыре раза. GCC тоже.
     
  • 2.3, cheburnator9000 (ok), 01:47, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Емнип достаточно GCC 4.8 для сборки GCC 12. А уже потом GCC 12 пересобрать уже собранным GCC 12. Нафига пересобирать GCC 12 аж четыре раза я хз.
     
     
  • 3.12, Bottle (?), 09:46, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы не допустить ошибок, вызванных неопределённым поведением и поведением, определяемым реализацией. Разные версии компилятора могут по разному один и тот же код компилировать.
     
  • 2.20, Аноним (20), 12:04, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну не такуая уж и длинная цепочка будет. Как-то так:
    2.95 -> 3.4(здесь обязательно включить сборку C++) -> 4.9 -> современная версия.
    Если нужен gdc, то промежуточно ещё собрать GCC 11.
     

  • 1.13, Аноним (13), 10:00, 07/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    От вдумчивого чтения моск затрещал)) Но на самом деле все просто. Да и вариантов сделать иначе не особо. За Scheme +
     
     
  • 2.17, Аноним (17), 11:18, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ага, только бы такое не от гну и был бы кошер. Доверия к ним у людей мало.
     
     
  • 3.21, Аноним (20), 12:06, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот, как раз, к ним доверия лично у меня больше, чем каким-либо другим.
     
  • 3.46, Аноним (46), 01:49, 09/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У корпоративных обезьян, которые за спиной собратьям по стае кости перемывают и по интернетам свой карьеристский гадюкинг разносят за серебрянники и/или от недостатка ума.
    У *людей* всё в порядке с доверием и к GNU, и к FSF, и лично к Столлману.
     
  • 2.18, Bottle (?), 11:21, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле Forth лучше подходит для данной цели.
     
     
  • 3.22, Аноним (20), 12:08, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное, всё-таки, людей с Lisp-менталитетом найдётся больше, чем с Forth.
     
  • 3.43, Вы забыли заполнить поле Name (?), 01:59, 08/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чем?
     

  • 1.19, Аноним (19), 11:42, 07/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Есть прожект live-bootstap [ https://github.com/fosslinux/live-bootstrap ] . Позволяет собрать систему из исходников с минимальным набором блобов.

    К сожалению батстрап процесс очень ресурсозатратный. Безрезультатно потратил весь день на сборку в два потка. Это еще без бутстрапа всяких Жав и Растов.


     
     
  • 2.23, Аноним (20), 12:11, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Хороший будет бутстрап, когда у вас в зависимостях Python :)
     
     
  • 3.28, Аноним (28), 14:34, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Хороший будет бутстрап, когда у вас в зависимостях Python :)

    Ну, во-первых: есть тот же микропитон.
    Во-вторых: к сожалению, не только лишь все, мало кто из анонимных оналитегов читает дальше заголовка - а зря:
    (чуть ли не сразу после заголовка)
    > Without using Python:
    >

     

  • 1.25, крокодил мимо.. (-), 14:22, 07/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    tcc всё же не так гибок, как pcc.. сделал закладку на проэкт.. может пригодится..
     
  • 1.45, погроммист (?), 18:52, 08/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если бы у меня было 9 жизней и бесконечное количество денег, то я бы тоже наверное занимался чем то таким.
     

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



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

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