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

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ выпуск инструмСнтария GNU Mes 0.22, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ процСсс бутстрэппинга (bootstrap) для GCC ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° пСрСсборки ΠΈΠ· исходных тСкстов.
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ сборки компилятора Π² дистрибутивах, разрывая Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎΠΉ пСрСсборки (для сборки компилятора Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΡƒΠΆΠ΅ собранного компилятора, Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ сборки компилятора ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ источником скрытых Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ сборок ΠΈΠ· эталонных исходных тСкстов).

Π’ GNU Mes прСдлагаСтся самодостаточный (self-hosting) ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для языка Scheme, написанный Π½Π° языкС Π‘ΠΈ, ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ компилятор для языка Π‘ΠΈ (MesCC), написанный Π½Π° языкС Scheme. Оба ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° взаимособираСмы. Scheme-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π‘ΠΈ-компилятор MesCC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ позволяСт ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΡƒΡ€Π΅Π·Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ компилятора TinyCC (tcc), возмоТностСй ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ достаточно для сборки GCC.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка Scheme достаточно ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 5000 строк ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ подмноТСствС языка Π‘ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² исполняСмый Ρ„Π°ΠΉΠ» с использованиСм ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ транслятора M2-Planet ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ Π‘ΠΈ-компилятора, собранного с использованиСм самособираСмого ассСмблСра hex0, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй. ΠŸΡ€ΠΈ этом ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ сборщик мусора ΠΈ прСдоставляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС обСспСчСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° повторяСмых сборок с использованиСм связок mes+mescc ΠΈΠ»ΠΈ guile+mescc Π² дистрибутивах GNU Guix, Debian GNU/Linux ΠΈ NixOS. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска Scheme-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Mes Π² GNU Hurd, Π½ΠΎ Π‘ΠΈ-компилятор mescc Π΅Ρ‰Ρ‘ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ·-Π·Π° отсутствия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, fork/exec). Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² FreeBSD. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° бутстрэппинга дистрибутива Guix с использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° языкС Scheme (командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Gash (Guile as Shell) вмСсто bash ΠΈ Gash Core Utils вмСсто coreutils, grep, sed, gzip, make, awk ΠΈ tar).

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… выпусках оТидаСтся появлСниС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ бутстрэппинга для NixOS, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ бутстрэппинга Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с использованиСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° языкС Scheme Π² Π²Π΅Ρ‚ΠΊΠ΅ wip-bootstrap, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ARM, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ компиляции Mes.c с использованиСм M2-Planet, полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Guile, обСспСчСниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ mescc с ядром Hurd.

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

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