I-ForgeZero 1.9.0 (fz), isixhobo sokwakha umgca womyalelo weeprojekthi ezibhalwe nge-C, C++, kunye neelwimi zokuhlanganisa (NASM, GAS, FASM), sikhutshwe. Esi sixhobo asifuni i-Makefile okanye ezinye iifayile zoqwalaselo ukuze zisetyenziswe ngokusisiseko. Ikhowudi yeprojekthi ibhalwe kwi-Go kwaye inelayisenisi phantsi kwelayisenisi ye-MIT.
I-ForgeZero ibona uhlobo lwefayile ize ikhethe ngokuzenzekelayo i-backend efanelekileyo. Ifayile nganye yekhowudi ihlanganiswa ibe yifayile yento, ize ihlolwe ukuba kukho iimpawu zehlabathi eziphindaphindwayo kuzo zonke izinto kwaye idityaniswe kwifayile enye enokusebenziseka. Iifayile eziqokelelweyo ziyagcinwa kwaye zihlanganiswe kwakhona kuphela emva kokuba kwenziwe utshintsho kwiifayile zekhowudi ezinxulumene noko. Ngokuzithandela, ukulandelwa kotshintsho lwenkqubo yefayile kunye nokuhlanganiswa kwakhona kunokwenzeka emva kokuhlaziywa kwefayile yekhowudi.
Ii-compilers ezixhaswayo yi-GCC, i-Clang, i-G++, kunye ne-Clang++; ii-assemblers yi-NASM, i-GAS, kunye ne-FASM; ii-linkers yi-LD, i-GCC, kunye ne-Clang; kwaye i-AR archiver iyaxhaswa. Izilumkiso ezinyanzelekileyo ze-C kunye ne-C++ zezi: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Ii-AddressSanitizer kunye ne-UndefinedBehaviorSanitizer zivulwa ngokusesikweni (zinokukhutshazwa nge--sanitize=false flag). Iiplatifomu ezixhaswayo zezi: Linux, macOS, Windows (I-WSL2 kwaye ifumaneka ngokovavanyo).
Utshintsho oluphambili kwinguqulo 1.9.0:
- Yongeze iflegi ethi "-target" , evumela ukuhlanganiswa okunqamlezileyo kuyo nayiphi na i-architecture ngezixhobo ezifanelekileyo ze-prefix. i-fz imisela ngokuzenzekelayo amagama e-compiler, i-linker, kunye ne-archive ngokusekelwe kwi-identifier echaziweyo (umz., "arm-linux-gnueabihf-gcc"). Zonke iiplatifomu ze-GNU ezisemgangathweni ziyaxhaswa, kuquka i-arm-linux-gnueabihf, i-aarch64-linux-gnu, kunye ne-riscv64-linux-gnu.
- Inkxaso yeProtokholi yeSeva yoLwimi (LSP) isetyenzisiwe. Iflegi ethi "-compile-commands" ivelisa ifayile ye-compile_commands.json (Compilation Database) kwingcambu yeprojekthi. Ifayile ifundwa ngolwimi iiseva i-clangd kunye ne-ccls, ezibonelela ngokugqibezela ngokuzenzekelayo, ukuzulazula kwikhowudi, kunye nokuxilongwa kubahleli abaxhasa i-LSP (Neovim, VSCode, CLion, Emacs, njl.njl.).
- Umyalelo we-fz "-update" ngoku ugcina i-binary yangoku kwi-/usr/local/bin/fz.old ngaphambi kokufaka inguqulelo entsha, okukuvumela ukuba ubuyele kwinguqulelo yangaphambili ngaphandle kokufaka kwakhona.
- Kulungiswe impazamo kwiiprojekthi zeedirektha ezininzi apho iifayile ezinamagama afanayo asuka kwiidirektha ezahlukeneyo bezinokubhala ngaphezulu kweefayile zezinto zomnye nomnye. Amagama eefayile zezinto ngoku enziwa ngokusekelwe kwindlela epheleleyo ehambelanayo nefayile yomthombo.
- Kusetyenziswe imo yokusebenzisana ethi "fz -shell" yokwakha iifayile ezizimeleyo.
- Uvavanyo olugutyungelweyo longezwe kwimiyalelo yeSplitCommand, CmdSet, kunye neCmdBuild. Uvavanyo olugutyungelweyo kwiphakheji ye-linker lunyuke ukusuka kwi-17% ukuya kwi-60%, kwaye uvandlakanyo lwazo zonke iiphakheji ludlule kwi-40%.
- Kongezwe indlela yokutshintsha iCheckTool yokuvavanya iimeko ezinezixhobo ze-toolchain ezingekhoyo.
Utshintsho oluvela kwiimveliso zangaphambili:
- Inguqulelo 1.8.0 isebenzisa ukuhlanganiswa kweelayibrari ezingashukumiyo (-type static / -lib), iqinisekisa ukwahluka kwamagama eefayile zezinto kwiiprojekthi ze-multi-director, kwaye ilungisa iimpazamo kwinkqubo engaphantsi kwendibano enxulumene nokugqitha kwendlela ethi "..".
- Inguqulelo 1.7.0 yongeza ukuhlanganiswa okulinganayo (-j N, 0 — ukufunyanwa ngokuzenzekelayo kwenani lee-cores), inkxaso yee-linker scripts (-T) kunye needilesi zeendawo zokungena (-Ttext), imo yokusebenzisana (fz -shell), ukhetho olucacileyo lwefomathi yemveliso (elf32, elf64, bin), ukuhlanganiswa kweefayile ze-C++ (.cpp, .cc, .cxx) kunye neeflegi zesilumkiso ezifanayo nezingqongqo njenge-C.
- Inguqulelo 1.6.0 yongeza ukuqaliswa kweprojekthi (fz -init, idala .fz.yaml, .fzignore, README.md), inkxaso yefomathi yebhini (-ifomathi yebhini) yee-bootloaders kunye ne-firmware, kunye neendawo zokumisela ii-libs, flags.cc, flags.asm, flags.ld.
- Inguqulelo 1.5.0 yazisa iidirectory ezininzi zemithombo (i-source_dirs), uluhlu lweefayile ezicacileyo (iifayile_zomthombo), i-include/exclude patterns, intsimi ye-libs yeelayibrari ze-linker, ifayile ye-.fzignore, kunye nokudibanisa iifayile zoqwalaselo ngamanqanaba amaninzi.
umthombo: opennet.ru
