The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск ForgeZero 1.9.0, инструмента сборки для C и ассемблера

19.05.2026 06:38 (MSK)

Опубликован релиз ForgeZero 1.9.0 (fz), консольного инструмента сборки для проектов на языках C, C++ и ассемблере (NASM, GAS, FASM). Инструмент не требует создания Makefile или иных конфигурационных файлов для базового использования. Код проекта написан на языке Go и распространяется под лицензией MIT.

ForgeZero определяет тип файла и автоматически выбирает необходимый бэкенд. Каждый файл с кодом собирается в объектный файл, после чего выполняется проверка дублирующихся глобальных символов во всех объектах и осуществляется компоновка в единых исполняемый файл. Скомпилированные файлы кэшируются и повторно пересобираются только после внесения изменений в связанные с ними файлы с кодом. Возможно опциональное отслеживание изменений в ФС и пересборка после обновления файлов с кодом.

Поддерживаются компиляторы GCC, Clang, G++, Clang++; ассемблеры NASM, GAS, FASM; компоновщики LD, GCC, Clang; архиватор AR. Обязательные предупреждения для C и C++: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". По умолчанию включены санитайзеры AddressSanitizer и UndefinedBehaviorSanitizer (отключаются флагом -sanitize=false). Поддерживаются платформы Linux, macOS, Windows (WSL2 и экспериментально нативно).

Основные изменения в версии 1.9.0:

  • Добавлен флаг "-target" <triple>, позволяющий выполнять кросс-компиляцию для произвольной архитектуры при наличии соответствующего префиксного инструментария. fz самостоятельно определяет имена компилятора, компоновщика и архиватора по указанному идентификатору (например, "arm-linux-gnueabihf-gcc"). Поддерживаются любые стандартные целевые платформы GNU, в том числе arm-linux-gnueabihf, aarch64-linux-gnu и riscv64-linux-gnu.
  • Реализована поддержка поддержка протокола LSP (Language Server Protocol). Флаг "-compile-commands" генерирует файл compile_commands.json (Compilation Database) в корне проекта. Файл считывается языковыми серверами clangd и ccls, обеспечивая работу автодополнения, навигации по коду и диагностики в редакторах с поддержкой LSP (Neovim, VSCode, CLion, Emacs и др.).
  • Команда fz "-update" перед установкой новой версии теперь сохраняет текущий бинарный файл в /usr/local/bin/fz.old, что позволяет откатиться к предыдущей версии без переустановки.
  • Устранена ошибка, при которой в мультидиректорных проектах файлы с одинаковыми базовыми именами из разных подкаталогов перезаписывали объектные файлы друг друга. Имена объектных файлов теперь формируются на основе полного относительного пути к исходному файлу.
  • Реализован интерактивный режим "fz -shell" для сборки одиночных файлов.
  • Добавлено тестовое покрытие для команд SplitCommand, CmdSet и CmdBuild. Покрытие тестами пакета компоновщика увеличено с 17% до 60%, а покрытие всех пакетов превысило 40%.
  • Добавлен механизм подмены CheckTool для тестирования сценариев с отсутствующими компонентами тулчейна.

Изменения предыдущих выпусков:

  • В версии 1.8.0 реализована сборка статических библиотек (-type static / -lib), обеспечена уникальность имён объектных файлов в мультидиректорных проектах, исправлены ошибки в подсистеме сборки, связанные с обходом пути "..".
  • В версии 1.7.0 добавлена параллельная компиляция (-j N, 0 — автоопределение числа ядер), поддержка линкер-скриптов (-T) и адреса точки входа (-Ttext), интерактивный режим (fz -shell), явный выбор формата вывода (elf32, elf64, bin), компиляция файлов C++ (.cpp, .cc, .cxx) с теми же строгими флагами предупреждений, что и для C.
  • В версии 1.6.0 добавлены инициализация проекта (fz -init, создаёт .fz.yaml, .fzignore, README.md), поддержка формата bin (-format bin) для загрузчиков и прошивок, конфигурационные поля libs, flags.cc, flags.asm, flags.ld.
  • В версии 1.5.0 реализованы множественные директории источников (source_dirs), явные списки файлов (source_files), шаблоны include/exclude, поле libs для библиотек компоновщика, файл .fzignore, многоуровневое слияние конфигурационных файлов.


  1. Главная ссылка к новости (https://github.com/forgezero-c...)
  2. OpenNews: Обновление операционной системы MenuetOS 1.57.70, написанной на ассемблере
  3. OpenNews: Обновление ОС KolibriN 10.1 и MenuetOS 1.34, написанных на ассемблере
  4. OpenNews: Ассемблер занял десятое место в рейтинге популярности языков программирования
  5. OpenNews: asmttpd - http-сервер на ассемблере
Автор новости: alexvoste
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65474-forgezero
Ключевые слова: forgezero, asm
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (4) RSS
  • 1, Аноним (-), 07:13, 19/05/2026 [ответить]  
  • +2 +/
    Это замена утилите make?
     
     
  • 4, Олег (??), 09:04, 19/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Похоже на то.
     

  • 2, анм (?), 07:35, 19/05/2026 [ответить]  
  • –2 +/
    за мусорку в bin - максимальное неуважение проекту, автору и его матери
     
  • 3, Tron is Whistling (?), 08:22, 19/05/2026 [ответить]  
  • +1 +/
    "в мультидиректорных проектах файлы с одинаковыми базовыми именами из разных подкаталогов перезаписывали объектные файлы друг друга"
    Дальше не читал, понятно, что уже не нужно, потому что изначально ногами делано.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру