Vydanie ForgeZero 1.9.0, nástroja na zostavovanie pre C a assembler

Bol vydaný ForgeZero 1.9.0 (fz), nástroj na zostavovanie projektov z príkazového riadku napísaných v jazykoch C, C++ a assemblerových jazykoch (NASM, GAS, FASM). Nástroj nevyžaduje pre základné používanie súbor Makefile ani iné konfiguračné súbory. Kód projektu je napísaný v jazyku Go a je licencovaný pod licenciou MIT.

ForgeZero detekuje typ súboru a automaticky vyberie vhodný backend. Každý súbor s kódom sa skompiluje do objektového súboru, potom sa skontroluje, či sa vo všetkých objektoch nevyskytujú duplicitné globálne symboly, a prepojí sa do jedného spustiteľného súboru. Kompilované súbory sa ukladajú do vyrovnávacej pamäte a rekompilujú až po vykonaní zmien v súvisiacich súboroch s kódom. Voliteľne je možné sledovať zmeny súborového systému a rekompilovať ich po aktualizáciách súborov s kódom.

Podporované kompilátory sú GCC, Clang, G++ a Clang++; assemblery sú NASM, GAS a FASM; linkery sú LD, GCC a Clang; a podporovaný je aj archivátor AR. Povinné upozornenia pre C a C++ sú: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Sanitizery AddressSanitizer a UndefinedBehaviorSanitizer sú štandardne povolené (možno ich zakázať pomocou príznaku -sanitize=false). Podporované platformy sú: Linux, macOS, Windows (WSL2 a experimentálne natívny).

Hlavné zmeny vo verzii 1.9.0:

  • Pridaný príznak „-target“ , čo umožňuje krížovú kompiláciu pre akúkoľvek architektúru s príslušnými prefixovými nástrojmi. fz automaticky určuje názvy kompilátora, linkera a archivátora na základe zadaného identifikátora (napr. „arm-linux-gnueabihf-gcc“). Podporované sú všetky štandardné cieľové platformy GNU vrátane arm-linux-gnueabihf, aarch64-linux-gnu a riscv64-linux-gnu.
  • Bola implementovaná podpora pre protokol Language Server Protocol (LSP). Príznak „-compile-commands“ generuje súbor compile_commands.json (kompilačná databáza) v koreňovom adresári projektu. Súbor je čítaný jazykom. serverov clangd a ccls, ktoré poskytujú automatické dopĺňanie, navigáciu v kóde a diagnostiku v editoroch podporujúcich LSP (Neovim, VSCode, CLion, Emacs atď.).
  • Príkaz fz „-update“ teraz pred inštaláciou novej verzie uloží aktuálny binárny súbor do priečinka /usr/local/bin/fz.old, čo vám umožní vrátiť sa k predchádzajúcej verzii bez preinštalovania.
  • Opravená chyba v projektoch s viacerými adresármi, kde súbory s rovnakými základnými názvami z rôznych podadresárov prepisovali navzájom objektové súbory. Názvy objektových súborov sa teraz generujú na základe úplnej relatívnej cesty k zdrojovému súboru.
  • Implementovaný interaktívny režim „fz -shell“ na vytváranie jednotlivých súborov.
  • Pre príkazy SplitCommand, CmdSet a CmdBuild bolo pridané testovacie pokrytie. Testovacie pokrytie balíka linkera sa zvýšilo zo 17 % na 60 % a pokrytie všetkých balíkov prekročilo 40 %.
  • Pridaný mechanizmus nahradenia CheckTool pre testovacie scenáre s chýbajúcimi komponentmi nástrojovej reťaze.

Zmeny oproti predchádzajúcim vydaniam:

  • Verzia 1.8.0 implementuje zostavovanie statických knižníc (-typ static / -lib), zabezpečuje jedinečnosť názvov objektových súborov v projektoch s viacerými adresármi a opravuje chyby v subsystéme zostavovania súvisiace s prechodom cesty „..“
  • Verzia 1.7.0 pridáva paralelnú kompiláciu (-j N, 0 — automatická detekcia počtu jadier), podporu pre linkerové skripty (-T) a vstupné adresy (-Ttext), interaktívny režim (fz -shell), explicitný výber výstupného formátu (elf32, elf64, bin), kompiláciu súborov C++ (.cpp, .cc, .cxx) s rovnakými prísnymi varovnými príznakmi ako pre C.
  • Verzia 1.6.0 pridáva inicializáciu projektu (fz -init, vytvára .fz.yaml, .fzignore, README.md), podporu formátu bin (-format bin) pre bootloadery a firmvér a konfiguračné polia libs, flags.cc, flags.asm, flags.ld.
  • Verzia 1.5.0 zavádza viacero zdrojových adresárov (source_dirs), explicitné zoznamy súborov (source_files), vzory zahrnutia/vylúčenia, pole libs pre linkerové knižnice, súbor .fzignore a viacúrovňové zlučovanie konfiguračných súborov.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster