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

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск инструмСнтария 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.

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