Lëshimi i ForgeZero 1.9.0 (fz), një mjet konsolë për ndërtimin e projekteve në C, C++ dhe assembler (NASM, GAS, FASM) është publik. Ky mjet nuk kërkon krijimin e një Makefile apo ndonjë skedari tjetër konfigurimi për përdorim bazë. Kodi i projektit është shkruar në Go dhe shpërndahet nën licencën MIT.
ForgeZero pĂ«rcakton llojin e skedarit dhe zgjidh automatikisht backend-in e nevojshĂ«m. Ădo skedar me kod grumbullohet nĂ« njĂ« skedar objekt, pas sĂ« cilĂ«s kryhet kontrolli i simboleve globale tĂ« dyfishta nĂ« tĂ« gjithĂ« objektet dhe bĂ«het lidhja nĂ« njĂ« skedar ekzekutiv tĂ« vetĂ«m. Skedaret e kompiluara ruhen nĂ« cache dhe ripĂ«rtĂ«rihen vetĂ«m pas ndryshimeve nĂ« skedarĂ«t pĂ«rkatĂ«s me kod. ĂshtĂ« e mundur tĂ« ndiqet opsionalisht ndryshimi nĂ« sistemin e skedarĂ«ve dhe tĂ« ripĂ«rtĂ«rihen pas pĂ«rditĂ«simit tĂ« skedarĂ«ve me kod.
Përkrahja e kompilerëve GCC, Clang, G++, Clang++; assembler-ëve NASM, GAS, FASM; linkuesve LD, GCC, Clang; arkivuesit AR. Paralajmërimet e detyrueshme për C dhe C++: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Në mënyrë të paracaktuar janë aktivizuar sanitizatorët AddressSanitizer dhe UndefinedBehaviorSanitizer (çaktivizohen me flag-un -sanitize=false). Përkrahja e platformave Linux, macOS, Windows (WSL2 dhe eksperimentalisht në mënyrë natyrale).
Ndryshimet kryesore në versionin 1.9.0:
- Shtuar flag-un "-target" , i cili lejon kryerjen e ndërtimit të kryqëzuar për arkitekturën e dëshiruar, nëse ka mjetet përkatëse të paraprakisë. fz e përcakton vetë emrat e kompilerit, linkuesit dhe arkivuesit sipas identifikuesit të dhënë (p.sh., "arm-linux-gnueabihf-gcc"). Përkrahja për çdo platformë standarde të target-it GNU, përfshirë arm-linux-gnueabihf, aarch64-linux-gnu dhe riscv64-linux-gnu.
- Implementuar mbështetje për protokollin LSP (Language Server Protocol). Flag-u "-compile-commands" gjeneron skedarin compile_commands.json (Database e Kompilimit) në rrënjën e projektit. Skedari lexohen nga gjuhët serverë clangd dhe ccls, duke siguruar funksionimin e autokompelimit, navigimit në kod dhe diagnostikës në redaktorët që mbështesin LSP (Neovim, VSCode, CLion, Emacs etj.).
- Komanda fz "-update" para instalimit të versionit të ri tani ruan skedarin ekzistues binaries në /usr/local/bin/fz.old, duke lejuar kthimin pas në versionin e mëparshëm pa e ribërë instalimin.
- Korrigjimi i një gabimi në projektet me shumë direktorë ku skedarët me emra bazë të njëjtë nga nën-drejtorët e ndryshëm mbi-shkruanin skedarët objektiv të njëri-tjetrit. Emrat e skedarëve objektiv tani formohen në bazë të rrugës relative të plotë të skedarit burimor.
- Implementimi i modit interaktiv «fz -shell» për përbërjen e skedarëve të vetëm.
- Shtuar mbulimi me teste për komandat SplitCommand, CmdSet dhe CmdBuild. Mbulimi me teste i paketës së lidhësit është rritur nga 17% në 60%, ndërsa mbulimi i të gjithë paketave ka kaluar 40%.
- Shtuar mekanizmi i zëvendësimit CheckTool për testimin e skenarëve pa komponentë të zinxhirëve të veglave.
Ndryshimet në versionet e mëparshme:
- Në versionin 1.8.0 është implementuar ndërtimi i bibliotekave statike (-type static / -lib), është siguruar unikiteti i emrave të skedarëve objektiv në projektet me shumë direktorë, janë rregulluar gabimet në nën-sistemin e ndërtimit që lidhen me kalimin e rrugëve «..».
- NĂ« versionin 1.7.0 Ă«shtĂ« shtuar kompilimi paralel (-j N, 0 â auto-shkenca e numrit tĂ« bĂ«rthameve), mbĂ«shtetje pĂ«r skriptet e lidhĂ«sit (-T) dhe adresat e pikĂ«s sĂ« hyrjes (-Ttext), moda interaktive (fz -shell), zgjedhje e qartĂ« e formatit tĂ« daljes (elf32, elf64, bin), kompiliimi i skedarĂ«ve C++ (.cpp, .cc, .cxx) me tĂ« njĂ«jtat flagje tĂ« rrepta paralajmĂ«rimi si pĂ«r C.
- Në versionin 1.6.0 janë shtuar inicializimi i projektit (fz -init, krijon .fz.yaml, .fzignore, README.md), mbështetje për formatin bin (-format bin) për ngarkuesit dhe firmware, fushat konfiguruese libs, flags.cc, flags.asm, flags.ld.
- Në versionin 1.5.0 janë realizuar direktori të shumta burimesh (source_dirs), lista të qarta skedari (source_files), shabllone për përfshirje / përjashtim, fusha libs për bibliotekat e lidhësve, skedari .fzignore, bashkimi multi-niveli i skedarëve konfiguruese.
Burimi: opennet.ru
