Vydání ForgeZero 1.9.0, nástroje pro sestavení pro C a assembler

Byla vydána verze ForgeZero 1.9.0 (fz), konzolového nástroje pro sestavení projektů v jazycích C, C++ a assembleru (NASM, GAS, FASM). Nástroj nevyžaduje vytváření Makefile nebo jiných konfiguračních souborů pro základní použití. Kód projektu je napsán v jazyce Go a je distribuován pod licencí MIT.

ForgeZero určuje typ souboru a automaticky vybírá potřebný backend. Každý soubor s kódem je sestaven do objektového souboru, po čemž se provádí kontrola duplicitních globálních symbolů ve všech objektech a provádí se spojení do jediného spustitelného souboru. Sestavené soubory se ukládají do cache a znovu se sestavují pouze po provedení změn v příslušných souborech s kódem. Možné je volitelné sledování změn v FS a opětovné sestavení po aktualizaci souborů s kódem.

Podporovány jsou kompilátory GCC, Clang, G++, Clang++; assemblery NASM, GAS, FASM; spojovače LD, GCC, Clang; archivátor AR. Povinné varování pro C a C++: „-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion“. Sanitizéry AddressSanitizer a UndefinedBehaviorSanitizer jsou ve výchozím nastavení zapnuty a lze je vypnout pomocí přepínače -sanitize=false. Podporovány jsou platformy Linux, macOS, Windows (WSL2 a experimentálně nativně).

Hlavní změny ve verzi 1.9.0:

  • Byla přidána přepínač „-target“ , který umožňuje provádět křížovou kompilaci pro libovolnou architekturu při dostupnosti odpovídajícího prefixového nástroje. fz sám určuje názvy kompilátoru, spojovače a archivátoru podle zadaného identifikátoru (např. „arm-linux-gnueabihf-gcc“). Podporovány jsou jakékoli standardní cílové platformy GNU, včetně arm-linux-gnueabihf, aarch64-linux-gnu a riscv64-linux-gnu.
  • Byla implementována podpora protokolu LSP (Language Server Protocol). Přepínač „-compile-commands“ generuje soubor compile_commands.json (Compilation Database) v kořenovém adresáři projektu. Soubor je čten jazykovými servery clangd a ccls, což zajišťuje funkcionalitu automatického doplňování, navigace v kódu a diagnostiky v editorech s podporou LSP (Neovim, VSCode, CLion, Emacs a další).
  • Příkaz fz „-update“ nyní před instalací nové verze ukládá aktuální binární soubor do /usr/local/bin/fz.old, což umožňuje vrátit se k předchozí verzi bez opětovné instalace.
  • Byla odstraněna chyba, při které v multidirektorových projektech soubory se stejnými základními názvy z různých podsložek přepisovaly objektové soubory navzájem. Názvy objektových souborů se nyní vytvářejí na základě úplné relativní cesty k zdrojovému souboru.
  • Byl implementován interaktivní režim „fz -shell“ pro sestavení jednotlivých souborů.
  • Bylo přidáno testovací pokrytí pro příkazy SplitCommand, CmdSet a CmdBuild. Pokrytí testy balíčku linkeru se zvýšilo z 17 % na 60 %, a pokrytí všech balíčků překročilo 40 %.
  • Byl přidán mechanismus pro substituci CheckTool pro testování scénářů s chybějícími komponentami nástrojového řetězce.

Změny v předchozích vydáních:

  • Ve verzi 1.8.0 byla realizována sestavení statických knihoven (-type static / -lib), zajištěna unikátnost názvů objektových souborů v multidirektorových projektech, a byly opraveny chyby v podsystemu sestavení spojené s obcházením cesty „..“.
  • Ve verzi 1.7.0 byla přidána paralelní kompilace (-j N, 0 — automatické určení počtu jader), podpora linker-skriptů (-T) a adresy bodu vstupu (-Ttext), interaktivní režim (fz -shell), explicitní výběr formátu výstupu (elf32, elf64, bin), kompilace souborů C++ (.cpp, .cc, .cxx) se stejnými přísnými flagy varování, jaké jsou pro C.
  • Ve verzi 1.6.0 byla přidána inicializace projektu (fz -init, vytváří .fz.yaml, .fzignore, README.md), podpora formátu bin (-format bin) pro bootloadery a firmware, konfigurační pole libs, flags.cc, flags.asm, flags.ld.
  • Ve verzi 1.5.0 byla implementována více adresářů zdrojů (source_dirs), explicitní seznamy souborů (source_files), šablony include/exclude, pole libs pro linker knihovny, soubor .fzignore, vícestupňové sloučení konfiguračních souborů.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster