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

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 серверами 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

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster