METABYTE
К списку статей

Roc и Zig: переписываем компилятор и не сходим с ума (почти)

История о том, как два языка решили переписать свои компиляторы — и что из этого вышло.

11 мая 20262 мин чтения
Roc и Zig: переписываем компилятор и не сходим с ума (почти)

Когда разработчики языка программирования решают переписать компилятор с нуля, это звучит как авантюра уровня "давай пересоберем IKEA-стеллаж без инструкции". Именно об этом рассказывают Аньяна Вакил и Ричард Фельдман в своем докладе про Roc и Zig.

Оба проекта столкнулись с классической болью: старый компилятор тормозил, обрастал костылями и начинал напоминать JIRA-доску с 47 столбцами. Вместо того чтобы продолжать заклеивать трещины скотчем, команды решили: пишем новый компилятор на другом языке. Zig переписал свой компилятор на самом себе (само-хостинг, йоу!), а Roc выбрал Rust как более зрелую платформу.

Что интересно: оба подхода сработали. Да, были ночные деплои, падения CI и моменты, когда хотелось всё бросить и уйти в фермеры. Но в итоге новые компиляторы работают быстрее, чище и — о чудо! — не падают при компиляции Hello World. Разработчики делятся граблями, на которые наступили: например, как важно сохранять обратную совместимость и не ломать сообщество.

Главный вывод: переписывать компилятор — это как делать рефакторинг монолита, только сложнее. Но если подойти с умом и не бояться экспериментов, результат оправдывает усилия. Ну и да, тестирование на ранних этапах спасает жизнь.

Комментарий студии METABYTE: Переписывать компилятор — это, конечно, круто, но мы бы начинали с код-ревью и хорошей архитектуры. Хотя, если ваш проект уже дорос до уровня Zig, милости просим — поможем не наступить на те же грабли.

СЛЕДУЮЩИЙ ШАГ

Понравилось как мыслим?

Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.