Ilmus ForgeZero 1.9.0 (fz), konsooli tööriist projektide koostamiseks C, C++ ja assembleri (NASM, GAS, FASM) keeles. Tööriist ei nõua põhikasutuseks Makefile'i või muid konfiguratsioonifaile. Projekti kood on kirjutatud Go keeles ja levitatakse MIT litsentsi alusel.
ForgeZero tuvastab failitüübi ja valib automaatselt vajaliku tagaplaani. Iga koodifail koostatakse objektifailiks, millele järgneb globaalseid sümboleid, mis võivad korduda, sisaldavate objektide kontroll ning ühendamine ühte käivitatavasse faili. Koostatud failid vahelduvad ja neid ehitatakse uuesti ainult siis, kui seotud koodifailidesse tehakse muudatusi. Soovi korral on võimalik jälgida muudatusi failisüsteemis ja uuesti ehitada, kui koodifailides on tehtud värskendusi.
Toetatakse kompilaatoreid GCC, Clang, G++, Clang++; assemblerid NASM, GAS, FASM; linkereid LD, GCC, Clang; arhivereid AR. Kohustuslikud hoiatusteated C ja C++ jaoks: «-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion». Vaikimisi on aktiveeritud sanitaarsüsteemid AddressSanitizer ja UndefinedBehaviorSanitizer (need saab välja lülitada lipuga -sanitize=false). Toetatakse platvorme Linux, macOS, Windows (WSL2 ja eksperimentaalselt natiivselt).
Peamised muudatused versioonis 1.9.0:
- Lisatud lipp «-target» , mis võimaldab teostada ristkompileerimist mistahes arhitektuuri jaoks, kui olemas on vastav eelteenuse tööriist. fz määrab automaatselt kompilaatori, linkeri ja arhiveerija nimed antud identifikaatori põhjal (näiteks «arm-linux-gnueabihf-gcc»). Toetatakse kõikide standardsete GNU sihtplatvormide, sealhulgas arm-linux-gnueabihf, aarch64-linux-gnu ja riscv64-linux-gnu.
- Rakendatud toetus LSP (Language Server Protocol) protokollile. Lipp «-compile-commands» genereerib faili compile_commands.json (Compilation Database) projekti juurkaustas. Faili loevad keeletoed serveritega clangd ja ccls, tagades automaatse täiendamise, koodi navigeerimise ja diagnostika töötamise LSP-tugi editorites (Neovim, VSCode, CLion, Emacs jne).
- fz „-update“ meeskond säilitab uue versiooni installimise ajal olemasoleva binaarfaili aadressis /usr/local/bin/fz.old, mis võimaldab naasta varasema versiooni juurde ilma uuesti installimata.
- Parandatud viga, mille tõttu mitme kaustaga projektides sama baasanimega failid erinevatest alamkaustadest üksteist ülekirjutasid. Objektifailide nimed luuakse nüüd lähtuvalt lähtefaili täis suhtelisest teest.
- Rakendatud interaktiivne režiim „fz -shell“ üksikfailide kogumiseks.
- Lisatud testikate SplitCommand, CmdSet ja CmdBuild käskudele. Kompileerimise paketi testide katvus suurenes 17%-lt 60%-le, ning kõikide pakettide katvus ületas 40%.
- Lisatud CheckTooli asenduse mehhanism puuduvate tööriistade ahelaga skriptide testimiseks.
Eelmiste väljaannete muudatused:
- Versioonis 1.8.0 on implementeeritud staatiliste raamatukogude kogumine (-type static / -lib), tagatud objektifailide nimede unikaalsus mitme kaustaga projektides ning parandatud ehitusalaste alamsüsteemide vead seoses „..“ tee läbimisega.
- Versioonis 1.7.0 on lisatud paralleelne kompileerimine (-j N, 0 — tuvastab protsessorite arvu automaatselt), linkija skriptide tugi (-T) ja sisenemispunkti aadress (-Ttext), interaktiivne režiim (fz -shell), väljundi formaadi selge valik (elf32, elf64, bin), C++ failide (.cpp, .cc, .cxx) kompileerimine sama rangete hoiatuslipukestega nagu C puhul.
- Versioonis 1.6.0 on lisatud projekti initsialiseerimine (fz -init, loob .fz.yaml, .fzignore, README.md), bin formaadi tugi (-format bin) laadijatele ja püsivara jaoks, konfiguratsioonifailide väljad libs, flags.cc, flags.asm, flags.ld.
- Versioonis 1.5.0 on rakendatud mitmed allikate kataloogid (source_dirs), selged failide loendid (source_files), include/exclude mallid, linkija raamatukogude väljad, fail .fzignore, mitmeastmeline konfiguratsioonifailide ühendamine.
Allikas: opennet.ru
