Ăshte publikuar versioni ForgeZero 1.9.0 (fz), njĂ« mjet konsolĂ« pĂ«r ndĂ«rtimin e projekteve nĂ« gjuhĂ«t C, C++ dhe assembler (NASM, GAS, FASM). Ky mjet nuk kĂ«rkon krijimin e Makefile ose skedarĂ«ve tĂ« tjerĂ« konfigurimi pĂ«r pĂ«rdorim bazĂ«. Kodi i projektit Ă«shtĂ« shkruar nĂ« gjuhĂ«n Go dhe distribuohet nĂ«n licencĂ«n MIT.
ForgeZero pĂ«rcakton llojin e skedarit dhe automatikisht zgjat backend-in e nevojshĂ«m. Ădo skedar me kod ndĂ«rron nĂ« njĂ« skedar objekt, pas sĂ« cilĂ«s kontrollohet pĂ«r simbole globale tĂ« dyfishta nĂ« tĂ« gjitha objektet dhe kompaktimi nĂ« njĂ« skedar ekzekutues tĂ« vetĂ«m bĂ«het. SkedarĂ«t e kompiluar ruhen nĂ« cache dhe rikomplohen vetĂ«m pasi tĂ« bĂ«hen ndryshime nĂ« skedarĂ«t pĂ«rkatĂ«s me kodin. ĂshtĂ« e mundur tĂ« ndiqet opsionalisht ndryshimi nĂ« sistemin e skedarĂ«ve dhe rikonstruimi pas pĂ«rditĂ«simeve tĂ« skedarĂ«ve me kod.
Komponentët e mbështetur: kompilatorët GCC, Clang, G++, Clang++; assemblerët NASM, GAS, FASM; linkerët LD, GCC, Clang; arkivuesi AR. Parashikimet e detyrueshme për C dhe C++: «-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion». Sanitizuesit AddressSanitizer dhe UndefinedBehaviorSanitizer janë të aktivizuar në mënyrë të paracaktuar (çaktivizohen me flamurin -sanitize=false). Mbështeten platformat Linux, macOS, Windows (WSL2 dhe eksperimentalisht natyrshëm).
Ndryshimet kryesore në versionin 1.9.0:
- Flamuri i ri «-target» është shtuar, i cili lejon kryq-kompilimin për arkitekturë të rastësishme në prani të mjeteve përkatëse. fz e përcakton automatikisht emrat e kompilatorit, linkerit dhe arkivuesit sipas identifikuesit të dhënë (për shembull, «arm-linux-gnueabihf-gcc»). Mbështeten çdo platformë standarde shënjestruese GNU, duke përfshirë arm-linux-gnueabihf, aarch64-linux-gnu dhe riscv64-linux-gnu.
- Implementohet mbështetje për protokollin LSP (Language Server Protocol). Flamuri «-compile-commands» gjeneron skedarin compile_commands.json (Baza e Kompilimit) në rrënjën e projektit. Skedari lexon nga gjuhët serverëve clangd dhe ccls, duke siguruar funksionimin e autocompletion, navigimit në kod dhe diagnostikës në redaktorët me mbështetje për LSP (Neovim, VSCode, CLion, Emacs, etj.).
- Ekipa fz «-update» para instalimit të versionit të ri tani ruan skedarin aktual binar në /usr/local/bin/fz.old, duke lejuar rikthimin në versionin e mëparshëm pa reinstalim.
- Korrigjimi i një gabimi që shkaktonte në projektet me shumë drejtime që skedarët me emra bazë të njëjtë nga nënkatalogje të ndryshme të tejkalonin skedarët objekt të njëri-tjetrit. Emrat e skedarëve objeto tani formohen mbi bazën e rrugës përkatëse të plote në skedarin burimor.
- Krijuar një mod i ndërveprimit «fz -shell» për ndërtimin e skedarëve të vetme.
- Shtuar mbulimin me teste për komandat SplitCommand, CmdSet dhe CmdBuild. Mbulimi me teste i paketës së montimit është rritur nga 17% në 60%, ndërsa mbulimi total i të gjitha paketave ka tejkaluar 40%.
- Shtuar mekanizmi i zëvendësimit CheckTool për testimin e skenarëve me komponentë të munguar të grupit të veglave.
Ndryshimet në versionet e mëparshme:
- Në versionin 1.8.0 është implementuar ndërtimi i librarive statike (-type static / -lib), është siguruar unikaliteti i emrave të skedarëve objekt në projektet me shumë drejtime, dhe janë rregulluar gabimet në nën-sistemin e ndërtimit që lidhen me kalimin e rrugës «..».
- NĂ« versionin 1.7.0 Ă«shtĂ« shtuar kompilimi paralel (-j N, 0 â auto-pĂ«rcaktimi i numrit tĂ« bĂ«rthamave), mbĂ«shtetje pĂ«r skriptet e linker-it (-T) dhe adresĂ«n e pikĂ«s sĂ« hyrjes (-Ttext), mĂ«nyra interaktive (fz -shell), pĂ«rzgjedhja eksplicite e formatit tĂ« daljes (elf32, elf64, bin), kompilimi i skedarĂ«ve C++ (.cpp, .cc, .cxx) me tĂ« njĂ«jtat flamuj tĂ« rreptĂ« 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 konfigurimi libs, flags.cc, flags.asm, flags.ld.
- Në versionin 1.5.0 janë realizuar drejtoritë e shumta të burimeve (source_dirs), listat eksplicite të skedarëve (source_files), shabllonët për përjashtim/inclusion, fusha libs për bibliotekat e linker-it, skedari .fzignore, ndërthurja multilayer e skedave të konfigurimeve.
Burimi: opennet.ru
