ForgeZero 1.9.0 (fz), një mjet ndërtimi në linjë komandash për projekte të shkruara në C, C++ dhe gjuhë assembly (NASM, GAS, FASM), është publikuar. Mjeti nuk kërkon një Makefile ose skedarë të tjerë konfigurimi për përdorim bazë. Kodi i projektit është shkruar në Go dhe është i licencuar sipas licencës MIT.
ForgeZero zbulon llojin e skedarit dhe zgjedh automatikisht backend-in e duhur. Ădo skedar kodi kompilohet nĂ« njĂ« skedar objekti, pastaj kontrollohet pĂ«r simbole globale tĂ« dyfishta nĂ« tĂ« gjitha objektet dhe lidhet nĂ« njĂ« skedar tĂ« vetĂ«m ekzekutues. SkedarĂ«t e kompiluar ruhen nĂ« memorje dhe rikompilohen vetĂ«m pasi tĂ« bĂ«hen ndryshime nĂ« skedarĂ«t e kodit tĂ« shoqĂ«ruar. Opsionale, gjurmimi i ndryshimeve tĂ« sistemit tĂ« skedarĂ«ve dhe rikompilimi janĂ« tĂ« mundura pas pĂ«rditĂ«simeve tĂ« skedarĂ«ve tĂ« kodit.
Kompiluesit e mbështetur janë GCC, Clang, G++ dhe Clang++; asamblerët janë NASM, GAS dhe FASM; lidhësit janë LD, GCC dhe Clang; dhe arkivuesi AR mbështetet. Paralajmërimet e detyrueshme për C dhe C++ janë: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Sanitizuesit AddressSanitizer dhe UndefinedBehaviorSanitizer janë të aktivizuar si parazgjedhje (ato mund të çaktivizohen me flamurin -sanitize=false). Platformat e mbështetura janë: Linux, macOS, Windows (WSL2 dhe eksperimentalisht vendas).
Ndryshimet kryesore në versionin 1.9.0:
- U shtua flamuri "-target" , i cili mundëson përpilimin e kryqëzuar për çdo arkitekturë me mjetet e duhura të prefiksit. fz përcakton automatikisht emrat e përpiluesit, lidhësit dhe arkivuesit bazuar në identifikuesin e specifikuar (p.sh., "arm-linux-gnueabihf-gcc"). Mbështeten të gjitha platformat standarde të synuara GNU, duke përfshirë arm-linux-gnueabihf, aarch64-linux-gnu dhe riscv64-linux-gnu.
- ĂshtĂ« zbatuar mbĂ«shtetje pĂ«r Protokollin e Serverit tĂ« GjuhĂ«s (LSP). Flamuri "-compile-commands" gjeneron njĂ« skedar compile_commands.json (Baza e tĂ« DhĂ«nave tĂ« Kompilimit) nĂ« rrĂ«njĂ«n e projektit. Skedari lexohet nga gjuha. serverat clangd dhe ccls, duke ofruar plotĂ«sim automatik, navigim kodi dhe diagnostikim nĂ« redaktorĂ« qĂ« mbĂ«shtesin LSP (Neovim, VSCode, CLion, Emacs, etj.).
- Komanda fz "-update" tani e ruan skedarin binar aktual në /usr/local/bin/fz.old para instalimit të një versioni të ri, duke ju lejuar të riktheheni në versionin e mëparshëm pa e riinstaluar.
- U rregullua një gabim në projektet me shumë drejtori ku skedarët me emra bazë identikë nga nëndrejtori të ndryshme do të mbishkruanin skedarët e objekteve të njëri-tjetrit. Emrat e skedarëve të objekteve tani gjenerohen bazuar në rrugën e plotë relative drejt skedarit burimor.
- U implementua modaliteti interaktiv "fz -shell" për ndërtimin e skedarëve të vetëm.
- Mbulimi i testimit është shtuar për komandat SplitCommand, CmdSet dhe CmdBuild. Mbulimi i testimit për paketën lidhëse është rritur nga 17% në 60% dhe mbulimi për të gjitha paketat ka tejkaluar 40%.
- U shtua një mekanizëm zëvendësimi i CheckTool për testimin e skenarëve me komponentë të munguar të zinxhirit të mjeteve.
Ndryshimet nga versionet e mëparshme:
- Versioni 1.8.0 zbaton montimin e bibliotekave statike (-tipi statik / -lib), siguron unikalitetin e emrave të skedarëve të objekteve në projektet me shumë drejtues dhe rregullon gabimet në nënsistemin e montimit që lidhen me përshkimin e shtegut ".."
- Versioni 1.7.0 shton kompilimin paralel (-j N, 0 â zbulim automatik i numrit tĂ« bĂ«rthamave), mbĂ«shtetje pĂ«r skriptet e lidhĂ«sve (-T) dhe adresat e pikave tĂ« hyrjes (-Ttext), modalitetin interaktiv (fz -shell), pĂ«rzgjedhjen e qartĂ« tĂ« formatit tĂ« daljes (elf32, elf64, bin), kompilimin e skedarĂ«ve C++ (.cpp, .cc, .cxx) me tĂ« njĂ«jtat flamuj paralajmĂ«rues tĂ« rreptĂ« si pĂ«r C.
- Versioni 1.6.0 shton inicializimin e projektit (fz -init, krijon .fz.yaml, .fzignore, README.md), mbështetje për formatin bin (-format bin) për ngarkuesit e nisjes dhe firmware-in, si dhe fushat e konfigurimit libs, flags.cc, flags.asm, flags.ld.
- Versioni 1.5.0 prezanton drejtori të shumëfishta burimore (source_dirs), lista të qarta skedarësh (source_files), modele përfshirjeje/përjashtimi, një fushë libs për libraritë lidhëse, skedarin .fzignore dhe bashkim shumënivelësh të skedarëve të konfigurimit.
Burimi: opennet.ru
