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

ПослС ΠΏΠΎΠ»ΡƒΡ‚ΠΎΡ€Π° Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ состоялся выпуск инструмСнтария 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.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ