Išleista „ForgeZero 1.9.0 (fz)“ – komandinės eilutės kūrimo priemonė, skirta projektams, parašytiems C, C++ ir asemblerio kalbomis (NASM, GAS, FASM). Įrankio pagrindiniam naudojimui nereikia „Makefile“ ar kitų konfigūracijos failų. Projekto kodas parašytas „Go“ kalba ir licencijuotas pagal MIT licenciją.
„ForgeZero“ aptinka failo tipą ir automatiškai parenka tinkamą valdymo bloką. Kiekvienas kodo failas yra kompiliuojamas į objekto failą, tada patikrinama, ar visuose objektuose nėra pasikartojančių globalių simbolių, ir susiejama su vienu vykdomuoju failu. Sukompiliuoti failai yra kaupiami talpykloje ir perkompiliuojami tik po to, kai atliekami pakeitimai susijusiuose kodo failuose. Pasirinktinai, po kodo failų atnaujinimų galima sekti failų sistemos pakeitimus ir perkompiliuoti.
Palaikomi kompiliatoriai yra GCC, Clang, G++ ir Clang++; asembleriai yra NASM, GAS ir FASM; susiejėjai yra LD, GCC ir Clang; ir palaikomas AR archyvatorius. Privalomi įspėjimai C ir C++ kalboms yra: „-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion“. „AddressSanitizer“ ir „UndefinedBehaviorSanitizer“ dezinfekavimo priemonės yra įjungtos pagal numatytuosius nustatymus (jas galima išjungti naudojant vėliavėlę -sanitize=false). Palaikomos platformos: Linux, macOS, Windows (WSL2 ir eksperimentiškai natyvus).
Pagrindiniai 1.9.0 versijos pakeitimai:
- Pridėta žymė „-target“ , kuris įgalina kryžminį kompiliavimą bet kurioje architektūroje su atitinkamais prefikso įrankiais. fz automatiškai nustato kompiliatoriaus, susiejimo programos ir archyvavimo programos pavadinimus pagal nurodytą identifikatorių (pvz., „arm-linux-gnueabihf-gcc“). Palaikomos visos standartinės GNU tikslinės platformos, įskaitant arm-linux-gnueabihf, aarch64-linux-gnu ir riscv64-linux-gnu.
- Įdiegtas kalbos serverio protokolo (LSP) palaikymas. Pasirinkus „-compile-commands“, projekto šakniniame kataloge sukuriamas failas compile_commands.json (kompiliavimo duomenų bazė). Failą nuskaito kalba. serveriai „clangd“ ir „ccls“, teikiančios automatinio užbaigimo, kodo navigacijos ir diagnostikos funkcijas redaktoriuose, kurie palaiko LSP („Neovim“, „VSCode“, „CLion“, „Emacs“ ir kt.).
- Komanda fz „-update“ dabar išsaugo dabartinį dvejetainį failą /usr/local/bin/fz.old aplanke prieš diegiant naują versiją, todėl galite grįžti prie ankstesnės versijos nediegdami iš naujo.
- Ištaisyta klaida kelių katalogų projektuose, kai failai su identiškais baziniais pavadinimais iš skirtingų pakatalogių perrašydavo vieni kitų objektų failus. Objektų failų pavadinimai dabar generuojami pagal visą santykinį kelią iki šaltinio failo.
- Įdiegtas interaktyvus režimas „fz -shell“ atskirų failų kūrimui.
- Pridėta „SplitCommand“, „CmdSet“ ir „CmdBuild“ komandų testavimo aprėptis. Susiejimo paketo testavimo aprėptis padidėjo nuo 17 % iki 60 %, o visų paketų aprėptis viršijo 40 %.
- Pridėtas „CheckTool“ pakeitimo mechanizmas, skirtas testuoti scenarijus su trūkstamais įrankių grandinės komponentais.
Pakeitimai, palyginti su ankstesniais leidimais:
- 1.8.0 versija įgyvendina statinių bibliotekų surinkimą (-type static / -lib), užtikrina objektų failų pavadinimų unikalumą kelių direktorių projektuose ir ištaiso surinkimo posistemio klaidas, susijusias su „..“ kelio perėjimu.
- 1.7.0 versijoje pridėtas lygiagretus kompiliavimas (-j N, 0 — automatinis branduolių skaičiaus nustatymas), palaikymas susiejimo scenarijams (-T) ir įėjimo taškų adresams (-Ttext), interaktyvus režimas (fz -shell), aiškus išvesties formato pasirinkimas (elf32, elf64, bin), C++ failų (.cpp, .cc, .cxx) kompiliavimas su tomis pačiomis griežtomis įspėjamosiomis vėliavėlėmis kaip ir C kalboje.
- 1.6.0 versijoje pridėtas projekto inicijavimas (fz -init, sukuria .fz.yaml, .fzignore, README.md), bin formato palaikymas (-format bin) įkrovos įkrovikliams ir programinei įrangai bei konfigūracijos laukai libs, flags.cc, flags.asm, flags.ld.
- 1.5.0 versijoje pristatomi keli šaltinio katalogai (source_dirs), aiškūs failų sąrašai (source_files), įtraukimo / neįtraukimo šablonai, libs laukas susiejimo bibliotekoms, .fzignore failas ir kelių lygių konfigūracijos failų sujungimas.
Šaltinis: opennet.ru
