Издање ForgeZero 1.9.0, алата за изградњу за C и асемблер

Објављен је ForgeZero 1.9.0 (fz), алат за изградњу из командне линије за пројекте написане у C, C++ и асемблерским језицима (NASM, GAS, FASM). Алату није потребан Makefile или друге конфигурационе датотеке за основну употребу. Код пројекта је написан у Go-у и лиценциран је под MIT лиценцом.

ФорџЗеро детектује тип датотеке и аутоматски бира одговарајући бекенд. Свака датотека кода се компајлира у објектну датотеку, затим се проверава да ли постоје дуплирани глобални симболи у свим објектима и повезује у једну извршну датотеку. Компајлиране датотеке се кеширају и поново компајлирају тек након што се изврше измене у повезаним датотекама кода. Опционо, праћење промена у систему датотека и поновна компајлација су могући након ажурирања датотека кода.

Подржани компајлери су 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“ , што омогућава унакрсну компајлацију за било коју архитектуру са одговарајућим префиксним алатима. fz аутоматски одређује имена компајлера, линкера и архивера на основу наведеног идентификатора (нпр. „arm-linux-gnueabihf-gcc“). Подржане су све стандардне ГНУ циљне платформе, укључујући arm-linux-gnueabihf, aarch64-linux-gnu и riscv64-linux-gnu.
  • Имплементирана је подршка за Протокол језичког сервера (LSP). Заставица „-compile-commands“ генерише датотеку compile_commands.json (база података компилације) у корену пројекта. Датотеку чита програм language. сервери 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 имплементира асемблирање статичких библиотека (-тип 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), обрасце укључивања/искључивања, поље libs за библиотеке линкера, датотеку .fzignore и спајање конфигурационих датотека на више нивоа.

Извор: опеннет.ру

Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster