Lëshimi i ForgeZero 1.9.0, një mjet ndërtimi për C dhe assembler

Ë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

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster