Izlazak ForgeZero 1.9.0, alata za izgradnju za C i asembler

Objavljen je ForgeZero 1.9.0 (fz), alat za izradu projekata napisanih u C, C++ i asemblerskim jezicima (NASM, GAS, FASM) putem naredbenog retka. Alatu nije potreban Makefile ili druge konfiguracijske datoteke za osnovnu upotrebu. Kod projekta napisan je u Gou i licenciran je pod MIT licencom.

ForgeZero detektira vrstu datoteke i automatski odabire odgovarajući backend. Svaka datoteka koda se kompilira u objektnu datoteku, zatim se provjerava ima li dupliciranih globalnih simbola u svim objektima i povezuje u jednu izvršnu datoteku. Kompilirane datoteke se predmemoriraju i ponovno kompiliraju tek nakon što se naprave promjene u povezanim datotekama koda. Opcionalno, praćenje promjena datotečnog sustava i ponovno kompiliranje mogući su nakon ažuriranja datoteka koda.

Podržani kompajleri su GCC, Clang, G++ i Clang++; asembleri su NASM, GAS i FASM; linkeri su LD, GCC i Clang; a podržan je i AR arhiver. Obavezna upozorenja za C i C++ su: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Sanitizeri AddressSanitizer i UndefinedBehaviorSanitizer omogućeni su prema zadanim postavkama (mogu se onemogućiti zastavom -sanitize=false). Podržane platforme su: Linux, macOS, Windows (WSL2 i eksperimentalno nativno).

Glavne promjene u verziji 1.9.0:

  • Dodana je zastavica "-target" , što omogućuje unakrsno kompiliranje za bilo koju arhitekturu s odgovarajućim alatima za prefiks. fz automatski određuje imena kompajlera, linkera i arhivera na temelju navedenog identifikatora (npr. "arm-linux-gnueabihf-gcc"). Podržane su sve standardne GNU ciljne platforme, uključujući arm-linux-gnueabihf, aarch64-linux-gnu i riscv64-linux-gnu.
  • Implementirana je podrška za Language Server Protocol (LSP). Zastavica "-compile-commands" generira datoteku compile_commands.json (Compilation Database) u korijenu projekta. Datoteku čita program language. poslužitelji clangd i ccls, koji omogućuju automatsko dovršavanje, navigaciju kodom i dijagnostiku u uređivačima koji podržavaju LSP (Neovim, VSCode, CLion, Emacs, itd.).
  • Naredba fz "-update" sada sprema trenutnu binarnu datoteku u /usr/local/bin/fz.old prije instaliranja nove verzije, što vam omogućuje povratak na prethodnu verziju bez ponovne instalacije.
  • Ispravljena je greška u projektima s više direktorija gdje bi datoteke s identičnim osnovnim nazivima iz različitih poddirektorija prepisivale međusobne objektne datoteke. Nazivi objektnih datoteka sada se generiraju na temelju pune relativne putanje do izvorne datoteke.
  • Implementiran interaktivni način rada "fz -shell" za izgradnju pojedinačnih datoteka.
  • Dodana je pokrivenost testiranjem za naredbe SplitCommand, CmdSet i CmdBuild. Pokrivenost testiranjem za paket povezivača povećala se sa 17% na 60%, a pokrivenost za sve pakete premašila je 40%.
  • Dodan je mehanizam zamjene CheckTool-a za testiranje scenarija s nedostajućim komponentama alatnog lanca.

Promjene u odnosu na prethodna izdanja:

  • Verzija 1.8.0 implementira sastavljanje statičkih biblioteka (-tip static / -lib), osigurava jedinstvenost naziva objektnih datoteka u projektima s više direktorija i ispravlja pogreške u podsustavu sastavljanja povezane s prolaskom putanje ".."
  • Verzija 1.7.0 dodaje paralelnu kompilaciju (-j N, 0 — automatsko otkrivanje broja jezgri), podršku za skripte linkera (-T) i adrese ulaznih točaka (-Ttext), interaktivni način rada (fz -shell), eksplicitni odabir izlaznog formata (elf32, elf64, bin), kompilaciju C++ datoteka (.cpp, .cc, .cxx) s istim strogim zastavicama upozorenja kao za C.
  • Verzija 1.6.0 dodaje inicijalizaciju projekta (fz -init, stvara .fz.yaml, .fzignore, README.md), podršku za bin format (-format bin) za bootloadere i firmware te konfiguracijska polja libs, flags.cc, flags.asm, flags.ld.
  • Verzija 1.5.0 uvodi više izvornih direktorija (source_dirs), eksplicitne popise datoteka (source_files), obrasce uključivanja/isključivanja, polje libs za biblioteke povezivača, datoteku .fzignore i višerazinsko spajanje konfiguracijskih datoteka.

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster