ForgeZero 4.0: Как я переписал билдер для Си/Ассемблера на Go и выжал 0 аллокаций памяти в горячих путях
Привет! Я AlexVoste, создатель ForgeZero (fz). Если вы когда-нибудь пробовали писать низкоуровневый софт, собирать кастомные загрузчики (bootloaders) или операционные системы, то наверняка сталкивались с «адом многострочных Makefile». Забудьте. Я создал декларативную альтернативу на Go, и сегодня состоялся релиз ForgeZero 4.0.
Изначально проект задумывался как простой CLI-инструмент, написанный на Node.js. Но для низкоуровневого билдера скорость — это всё. Прототип на Node.js безжалостно тормозил. Я принял решение полностью переписать ядро на Go.
В версии 4.0 я поставил перед собой безумную цель: сделать инструмент компиляции настолько быстрым, насколько это вообще позволяет рантайм Go.
🚀 Что под капотом у ForgeZero 4.0?
1. Абсолютная оптимизация: 0 allocs/op
Я полностью перепроектировал горячие пути (hot paths) выполнения бинарника. Путем жесткого профилирования, пулинга объектов и оптимизации парсинга удалось добиться 0 аллокаций в куче на одну операцию при сборке. Инструмент не тратит ни одной лишней микросекунды на сборку мусора (GC) во время компиляции пайплайнов.
2. Native Bare-Metal и плоские бинарники
Специально для фанатов OS Dev и эмбеддеров: fz теперь из коробки умеет компилировать плоские бинарники (.bin). Больше никаких костыльных оверрайдов для линкера в Make — всё настраивается в один клик.
3. Криптографический кэш на BLAKE3
Инкрементальная сборка теперь работает на базе сверхбыстрого хеширования BLAKE3. Билдер мгновенно понимает, какие файлы исходного кода изменились, а какие можно подтянуть из кэша, экономя секунды на больших проектах.
4. Слой HADES и декларативный конфиг
Вместо императивного ада скриптов, вся сборка вашего C/ASM проекта теперь описывается в чистом, понятном человеческому глазу файле .fz.yaml. Архитектура управляется низкоуровневым слоем абстракции HADES.
5. Полная автономность: Ноль зависимостей (No GCC/NASM required)
Самая большая боль при настройке окружения для новичка — это установка компиляторов, прописывание путей в PATH и конфликты версий. С ForgeZero 4.0 вам не нужно предварительно устанавливать GCC, Clang, NASM или FASM. Инструмент полностью автономен. Вы просто скачиваете один единственный бинарник fz, и он сам берёт на себя всю низкоуровневую магию компиляции и сборки. Развертывание рабочего окружения теперь занимает ровно 3 секунды.
6. Нативная работа на Windows (Никакого WSL!)
Большинство современных инструментов сборки для C/ASM требуют либо Linux, либо развертывания тяжелых сред вроде WSL2 или MSYS2 на Windows. ForgeZero 4.0 работает на Windows абсолютно нативно. Вы просто скачиваете один бинарник и собираете свои проекты прямо в классическом PowerShell или CMD. Всё необходимое окружение ForgeZero развернет сам.
Проект полностью бесплатный, независимый и Open-Source.
- Репозиторий на GitHub: https://github.com/forgezero-cli/forgezero
Буду рад любому хардкорному инженерному фидбеку. Как вам идея декларативной сборки для C/ASM? Пишите в комментарии, обсудим архитектуру HADES и оптимизацию Go!