Izid ForgeZero 1.9.0, orodja za gradnjo v C in assemblerju

Objavljen je izid ForgeZero 1.9.0 (fz), konzolnega orodja za gradnjo projektov v jezikih C, C++ in assembleru (NASM, GAS, FASM). Orodje ne zahteva ustvarjanja Makefile ali drugih konfiguracijskih datotek za osnovno uporabo. Koda projekta je napisana v programskem jeziku Go in se distribuira pod MIT licenco.

ForgeZero določa tip datoteke in samodejno izbira potrebno ozadje. Vsaka datoteka s kodo se sestavi v objektno datoteko, po čemer se izvede preverjanje podvajajočih se globalnih simbolov v vseh objektih ter izvajanje povezovanja v enotno izvršljivo datoteko. Sestavljene datoteke se predpomnijo in se ponovno sestavijo le po spremembah v povezanih datotekah s kodo. Mogoče je tudi opcijsko sledenje spremembam v FŠ in ponovno sestavljanje po posodobitvi datotek s kodo.

Podprti so prevajalniki GCC, Clang, G++, Clang++; assemblerji NASM, GAS, FASM; povezovalci LD, GCC, Clang; arhivator AR. Obvezna opozorila za C in C++: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Po privzetku so vključeni sanitizatorji AddressSanitizer in UndefinedBehaviorSanitizer (izklopita z zastavico -sanitize=false). Podprte so platforme Linux, macOS, Windows (WSL2 in eksperimentalno domače).

Glavne spremembe v različici 1.9.0:

  • Dodana je zastavica "-target" , ki omogoča križarjenje za poljuben arhitektur v prisotnosti ustreznega predkladnega orodja. Fz samodejno določa imena prevajalnika, povezovalnika in arhivatorja po določenem identifikatorju (na primer, "arm-linux-gnueabihf-gcc"). Podprte so vse standardne ciljne platforme GNU, vključno z arm-linux-gnueabihf, aarch64-linux-gnu in riscv64-linux-gnu.
  • Implementirana je podpora za protokol LSP (Language Server Protocol). Zastavica "-compile-commands" generira datoteko compile_commands.json (Databaza za prevajanje) v korenu projekta. Datoteko preberejo jezikovni strežniki clangd in ccls, kar omogoča delovanje samodejnega dopolnjevanja, navigacije po kodi in diagnostike v urejevalnikih s podporo za LSP (Neovim, VSCode, CLion, Emacs itd.).
  • Ukaz fz "-update" pred namestitvijo nove različice zdaj shranjuje trenutno izvršno datoteko v /usr/local/bin/fz.old, kar omogoča vrnitev na prejšnjo različico brez ponovne namestitve.
  • Odpravljena je napaka, pri kateri so v multidirektorskih projektih datoteke z enakimi osnovnimi imeni iz različnih podmap prepisovale objektne datoteke druga druge. Imena objektnih datotek se zdaj oblikujejo na podlagi celotne relativne poti do izvorne datoteke.
  • Izveden je interaktivni način „fz -shell“ za sestavljanje posameznih datotek.
  • Dodana je testna pokritost za ukaze SplitCommand, CmdSet in CmdBuild. Pokritost s testi paketa povezovalnika se je povečala s 17 % na 60 %, pokritost vseh paketov pa je presegla 40 %.
  • Dodan je mehanizem za zamenjavo CheckTool za testiranje scenarijev z manjkajočimi komponentami orodja.

Spremembe prejšnjih izdaj:

  • V različici 1.8.0 je bila omogočena izgradnja statičnih knjižnic (-type static / -lib), zagotavljena je edinstvenost imen objektnih datotek v multidirektorskih projektih, odpravljene so napake v podsystemu sestavljanja, povezane s prehodom poti „..“.
  • V različici 1.7.0 je bila dodana paralelna kompilacija (-j N, 0 — samodejna določitev števila jeder), podpora skriptom za povezovanje (-T) in naslov točke vnosa (-Ttext), interaktivni način (fz -shell), izrecna izbira formata izhoda (elf32, elf64, bin), kompilacija datotek C++ (.cpp, .cc, .cxx) s tistimi istimi strogimi zastavami opozoril, ki veljajo za C.
  • V različici 1.6.0 so bila dodana inicializacija projekta (fz -init, ustvari .fz.yaml, .fzignore, README.md), podpora za format bin (-format bin) za nalagalnike in programsko opremo, konfiguracijska polja libs, flags.cc, flags.asm, flags.ld.
  • V različici 1.5.0 so bile izvedene večkratne mape virov (source_dirs), jasni seznami datotek (source_files), predloge include/exclude, polje libs za knjižnice povečevalnika, datoteka .fzignore, večstopenjsko združevanje konfiguracijskih datotek.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster