Без LLVM, без libc! Предельно чистый системный язык Mach полностью самокомпилируется и ищет разработчиков
Без LLVM, без libc! Этот абсолютно чистый системный язык Mach достиг полной самокомпиляции и ищет участников
В мире языков программирования зависимость от инструментальной цепочки LLVM и стандартной библиотеки C стала почти «стандартной комплектацией» для системных языков. Однако новый опенсорс-проект под названием Mach ломает эту парадигму. Недавно его создатель на Hacker News объявил, что компилятор Mach достиг важной вехи — полной самостоятельной компиляции (self-hosting), и весь тулчейн от исходного кода до исполняемого файла не зависит ни от каких внешних библиотек — ни LLVM, ни привязок к libc, а использовавшийся ранее для бутстрэпа компилятор C был полностью устранён. Mach, выступая в образе «абсолютной чистоты», бросил настоящую бомбу в мир системного программирования и официально начинает набор участников из сообщества.
Самостоятельная компиляция: «последний экзамен» для компилятора
Для компилируемого языка «самохостинг» означает, что его компилятор и основные инструменты полностью написаны на нём же и скомпилированы им самим. Это не только проверка зрелости языка, но и знак того, что проект освободился от паразитирования на экосистемах других языков. Создатель Mach рассказал, что команда достигла этой цели буквально два дня назад. Ранее для сборки Mach требовался исторический бутстрэп-компилятор (достаточно было любого компилятора C), теперь же новая версия полностью «пишет Mach на Mach» и генерирует итоговый бинарный файл, а остатки этапа бутстрэпа полностью удалены. Это комплексная проверка корректности и производительности компилятора Mach, доказывающая его способность самостоятельно создавать сложные системы.
Архитектура с нулевыми зависимостями: безопасность и контроль с нуля
Наиболее примечательная особенность Mach подчёркнута в его TL;DR-описании: во всём конвейере полностью отсутствуют внешние зависимости, включая LLVM и libc. Среди популярных системных языков Rust и Zig полагаются на LLVM для оптимизации и генерации кода, а C глубоко привязан к libc. Mach же выбрал более сложный путь — реализовать собственный бэкенд кодогенерации и минималистичную среду выполнения. Это означает, что разработчику не нужно устанавливать огромный фреймворк LLVM на хост-машине, чтобы генерировать нативный машинный код. Благодаря отсутствию косвенных вызовов libc Mach взаимодействует напрямую с интерфейсами ядра ОС, радикально уменьшая доверенную базу и поверхность атаки, а также предоставляя естественное преимущество для программирования «на голом железе» без операционной системы. Такая философия «самодостаточной» архитектуры открывает огромный потенциал для создания ядер ОС, встроенной прошивки и высокозащищённых систем.
Зачем нам ещё один системный язык?
Когда задают этот вопрос, сообщество Mach указывает на стремление к абсолютной простоте и аудируемости. Современный LLVM занимает сотни мегабайт, имеет уязвимую цепочку поставок и медленную компиляцию; libc обладает долгой историей, но инкапсулирует сотни функций, многие из которых стали историческим бременем. Mach пытается вернуться к сути системного программирования: прямота, прозрачность и полный контроль. Хотя язык всё ещё находится на ранней стадии, его дизайнерские идеи уже привлекли внимание многих разработчиков на HN — тех, кто жаждет инструмент, позволяющий держать всю «тяжесть» компиляции в своих руках. С выпуском самохостируемой версии Mach перестаёт быть просто экспериментальной игрушкой и становится прочной платформой для исследования системного ПО следующего поколения.
Присоединяйтесь к революции базового ПО
На данный момент Mach уже выложен на GitHub (octalide/mach) и официальном сайте (machlang.org) как проект с открытым исходным кодом и открыт для участия. Создатель ясно заявляет, что проект «ищет контрибьюторов»: будь то дизайн языка, реализация стандартной библиотеки, написание документации или оптимизация бэкенда — раннее участие даёт возможность глубоко повлиять на будущее низкоуровневого ПО. Если вы хакер, увлечённый разработкой фронтендов компиляторов, кодогенерацией или созданием операционных систем, не стесняйтесь посетить репозиторий проекта, скомпилируйте Mach с помощью самого Mach и испытайте то гиковское наслаждение, когда не нужно ничего «чужеродного». Возможно, мы станем свидетелями рождения совершенно новой экосистемы.