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

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6000
ОС: gnu/linux

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

Сообщение rssbot »

Опубликован релиз 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 от 20 мая: По результатам обсуждения сформирован выпуск ForgeZero 2.0, в котором добавлен пакетный менеджер, значительно ускорен кэш и расширены возможности кросс-компиляции:
  • Хеширование переведено с SHA256 на BLAKE3 - скорость кэша выросла в 7 раз. Файл 10 МБ: 58 мс → 8.7 мс. Верификация пакетов из каталога также использует BLAKE3.
  • Добавлен пакетный менеджер fz pm. Управление зависимостями для C/ASM проектов:

    Код:

    fz pm add ‹репозиторий›
    fz pm remove ‹пакет›
    fz pm update
    fz pm list
    fz pm search ‹запрос›
    fz pm install
    fz pm catalog
    Зависимости описываются в .fz.yaml. Удаление очищает пустые родительские директории. Поддерживается community-driven JSON-каталог пакетов.
  • Появилась поддержка динамических библиотек: флаги -shared, -cc-flag, -ld-flag. Кросс-компиляция через -target ‹triple› - ARM, RISC-V, x86_64, i386, инструментарий подбирается автоматически. Статические библиотеки: -type static / -lib, сборка .a-архивов через ar. Флаг -compile-commands генерирует compile_commands.json для clangd и совместимых LSP-клиентов.
  • Параллельная сборка "-j N".
  • Поддержка линкер-скриптов и адреса секции (-T, -Ttext).
  • Устранены коллизии имён объектных файлов.
  • Исправлены все предупреждения golangci-lint (errcheck, govet, ineffassign), таймауты и контекст для сетевых и git-операций. Покрытие тестами: utils 84%, linker 60%, assembler 60%, builder 56%.

Дополнение 2 от 21 мая: Выпущена версия ForgeZeron 3 инструмента ForgeZero.Технические изменения:
  • Внедрена поддержка Zig в качестве бэкенда для кросс-компиляции C/C++ кода. Позволяет выполнять сборку без использования внешних системных тулчейнов.
  • Встроена функциональность сканирования секретов (секретные ключи, токены), проверки комплаенса лицензий и анализа паттернов безопасности.
  • Реализована поддержка спецификации CycloneDX. Целостность данных подтверждается криптографическим хэшированием BLAKE3.
  • Обеспечена воспроизводимость процесса сборки. Результат компиляции идентичен бит-в-бит на различных конфигурациях оборудования.
  • Добавлена поддержка FASM (ELF64) и WASM (wasm32-wasi).
  • Добавлены иагностические утилиты: "fz verify" (аудит целостности бинарных файлов) и fz bench (профилирование производительности с наносекундной точностью).
  • Поддержка платформы Windows (без использования WSL).


Источник: https://www.opennet.ru/opennews/art.shtml?num=65474
(opennet.ru, мини-новости)
Последний раз редактировалось rssbot 22.05.2026 07:51, всего редактировалось 2 раза.
Причина: Updated upstream
Спасибо сказали: