Ir izlaists ForgeZero 1.9.0 (fz) — komandrindas veidošanas rīks projektiem, kas rakstīti C, C++ un asemblera valodās (NASM, GAS, FASM). Rīka pamata lietošanai nav nepieciešams Makefile vai citi konfigurācijas faili. Projekta kods ir rakstīts Go valodā un ir licencēts saskaņā ar MIT licenci.
ForgeZero nosaka faila tipu un automātiski atlasa atbilstošo aizmugursistēmu. Katrs koda fails tiek kompilēts objekta failā, pēc tam tiek pārbaudīts, vai visos objektos nav dublētu globālo simbolu, un savienots vienā izpildāmā failā. Kompilētie faili tiek kešatmiņā saglabāti un atkārtoti kompilēti tikai pēc tam, kad saistītajos koda failos ir veiktas izmaiņas. Pēc koda failu atjaunināšanas ir iespējama failu sistēmas izmaiņu izsekošana un atkārtota kompilācija.
Atbalstītie kompilatori ir GCC, Clang, G++ un Clang++; asembleri ir NASM, GAS un FASM; saistītāji ir LD, GCC un Clang; un tiek atbalstīts AR arhivētājs. Obligātie brīdinājumi C un C++ ir: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". AddressSanitizer un UndefinedBehaviorSanitizer sanitizatori ir iespējoti pēc noklusējuma (tos var atspējot ar karodziņu -sanitize=false). Atbalstītās platformas ir: Linux, macOS, Windows (WSL2 un eksperimentāli natīva).
Galvenās izmaiņas versijā 1.9.0:
- Pievienots karodziņš "-target" , kas nodrošina krustkompilāciju jebkurai arhitektūrai ar atbilstošiem prefiksu rīkiem. fz automātiski nosaka kompilatora, saistītāja un arhivētāja nosaukumus, pamatojoties uz norādīto identifikatoru (piemēram, "arm-linux-gnueabihf-gcc"). Tiek atbalstītas visas standarta GNU mērķa platformas, tostarp arm-linux-gnueabihf, aarch64-linux-gnu un riscv64-linux-gnu.
- Ir ieviests atbalsts valodu servera protokolam (LSP). Karodziņš "-compile-commands" ģenerē failu compile_commands.json (kompilācijas datubāze) projekta saknē. Failu nolasa valoda. serveri clangd un ccls, nodrošinot automātisko pabeigšanu, koda navigāciju un diagnostiku redaktoros, kas atbalsta LSP (Neovim, VSCode, CLion, Emacs u. c.).
- Komanda fz "-update" tagad saglabā pašreizējo bināro failu mapē /usr/local/bin/fz.old pirms jaunas versijas instalēšanas, ļaujot atgriezties pie iepriekšējās versijas bez atkārtotas instalēšanas.
- Novērsta kļūda vairāku direktoriju projektos, kur faili ar identiskiem bāzes nosaukumiem no dažādām apakšdirektorijām pārrakstīja viens otra objektu failus. Objektu failu nosaukumi tagad tiek ģenerēti, pamatojoties uz pilnu relatīvo ceļu uz avota failu.
- Ieviests interaktīvs režīms "fz -shell" atsevišķu failu veidošanai.
- Komandām SplitCommand, CmdSet un CmdBuild ir pievienots testēšanas pārklājums. Saistītāja pakotnes testēšanas pārklājums ir palielināts no 17% līdz 60%, un visu pakotņu pārklājums ir pārsniedzis 40%.
- Pievienots CheckTool aizstāšanas mehānisms testēšanas scenārijiem ar trūkstošiem rīku ķēdes komponentiem.
Izmaiņas salīdzinājumā ar iepriekšējiem izlaidumiem:
- 1.8.0 versija ievieš statisko bibliotēku (-type static / -lib) montāžas funkciju, nodrošina objektu failu nosaukumu unikalitāti vairāku direktoru projektos un novērš kļūdas montāžas apakšsistēmā, kas saistītas ar ".." ceļa šķērsošanu.
- 1.7.0 versijā ir pievienota paralēla kompilācija (-j N, 0 — kodolu skaita automātiska noteikšana), atbalsts saistītāju skriptiem (-T) un ieejas punktu adresēm (-Ttext), interaktīvais režīms (fz -shell), skaidra izvades formāta izvēle (elf32, elf64, bin), C++ failu (.cpp, .cc, .cxx) kompilācija ar tādiem pašiem stingriem brīdinājuma karodziņiem kā C valodā.
- 1.6.0 versijā ir pievienota projekta inicializācija (fz -init, izveido .fz.yaml, .fzignore, README.md), bin formāta atbalsts (-format bin) sāknēšanas ielādētājiem un programmaparatūrai, kā arī konfigurācijas lauki libs, flags.cc, flags.asm, flags.ld.
- 1.5.0 versijā ir ieviesti vairāki avota direktoriji (source_dirs), skaidri failu saraksti (source_files), iekļaušanas/izslēgšanas modeļi, libs lauks saišu bibliotēkām, .fzignore fails un konfigurācijas failu vairāku līmeņu apvienošana.
Avots: opennet.ru
