ForgeZero 1.9.0 (fz), chida chomangira mzere wolamula wa mapulojekiti olembedwa mu C, C++, ndi zilankhulo zosonkhanitsira (NASM, GAS, FASM), chatulutsidwa. Chidachi sichifuna Makefile kapena mafayilo ena osinthira kuti chigwiritsidwe ntchito mosavuta. Khodi ya polojekitiyi yalembedwa mu Go ndipo ili ndi chilolezo pansi pa layisensi ya MIT.
ForgeZero imazindikira mtundu wa fayilo ndipo imasankha yokha backend yoyenera. Fayilo iliyonse ya code imasonkhanitsidwa kukhala fayilo ya chinthu, kenako imafufuzidwa ngati pali zizindikiro zobwerezabwereza padziko lonse lapansi pazinthu zonse ndikulumikizidwa kukhala fayilo imodzi yoyeserera. Mafayilo osonkhanitsidwa amasungidwa ndikukonzedwanso pokhapokha kusintha kwapangidwa ku mafayilo ogwirizana nawo a code. Mwanjira ina, kutsatira ndi kukonzanso kusintha kwa dongosolo la fayilo ndikotheka pambuyo pakusintha kwa fayilo ya code.
Ma compiler othandizidwa ndi GCC, Clang, G++, ndi Clang++; ma assembler ndi NASM, GAS, ndi FASM; ma linker ndi LD, GCC, ndi Clang; ndipo AR archiver imathandizidwa. Machenjezo ofunikira a C ndi C++ ndi awa: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". AddressSanitizer ndi UndefinedBehaviorSanitizer sanitizer zimayatsidwa mwachisawawa (zitha kuzimitsidwa ndi -sanitize=false flag). Mapulatifomu othandizidwa ndi awa: Linux, macOS, Windows (WSL2 ndipo ndi yochokera ku kafukufuku).
Zosintha zazikulu mu mtundu 1.9.0:
- Mbendera ya "-target" yawonjezeredwa , zomwe zimathandiza kusonkhanitsa pamodzi kwa zomangamanga zilizonse pogwiritsa ntchito zida zoyenera za prefix. fz imasankha yokha mayina a compiler, linker, ndi archiver kutengera chizindikiro chomwe chatchulidwa (monga, "arm-linux-gnueabihf-gcc"). Mapulatifomu onse okhazikika a GNU amathandizidwa, kuphatikiza arm-linux-gnueabihf, aarch64-linux-gnu, ndi riscv64-linux-gnu.
- Chithandizo cha Language Server Protocol (LSP) chakhazikitsidwa. Mbendera ya "-compile-commands" imapanga fayilo ya compile_commands.json (Compilation Database) muzu wa polojekitiyi. Fayiloyo imawerengedwa ndi chilankhulo maseva clangd ndi ccls, zomwe zimapereka autocompletion, code navigation, ndi diagnostics mu editors zomwe zimathandiza LSP (Neovim, VSCode, CLion, Emacs, etc.).
- Lamulo la fz "-update" tsopano limasunga binary yomwe ilipo ku /usr/local/bin/fz.old musanayike mtundu watsopano, zomwe zimakulolani kubwerera ku mtundu wakale popanda kuyikanso.
- Takonza vuto m'mapulojekiti a ma directory ambiri pomwe mafayilo okhala ndi mayina ofanana ochokera kuma subdirectory osiyanasiyana angalembe mafayilo a chinthu china. Maina a mafayilo a chinthu tsopano amapangidwa kutengera njira yonse yolumikizirana ndi fayilo yoyambira.
- Ndakhazikitsa njira yolumikizirana "fz -shell" yopangira mafayilo amodzi.
- Kufunika kwa mayeso kwawonjezeredwa pa malamulo a SplitCommand, CmdSet, ndi CmdBuild. Kufunika kwa mayeso pa phukusi la linker kwawonjezeka kuchoka pa 17% kufika pa 60%, ndipo kufunika kwa ma phukusi onse kwapitirira 40%.
- Yawonjezera njira yosinthira ya CheckTool yoyesera zochitika zomwe zili ndi zigawo za zida zomwe zikusowa.
Zosintha kuchokera ku zomwe zidatulutsidwa kale:
- Mtundu 1.8.0 umagwiritsa ntchito kusonkhanitsa malaibulale osasinthasintha (-type static / -lib), kumatsimikizira kuti mayina a mafayilo a zinthu ndi apadera m'mapulojekiti a ma multi-director, ndikukonza zolakwika mu subsystem yogwirizana ndi kudutsa kwa njira ya "..".
- Mtundu 1.7.0 umawonjezera kuphatikiza kofanana (-j N, 0 — kuzindikira kokha chiwerengero cha ma cores), chithandizo cha ma linker script (-T) ndi ma entry point address (-Ttext), interactive mode (fz -shell), kusankha momveka bwino mtundu wa output (elf32, elf64, bin), kuphatikiza mafayilo a C++ (.cpp, .cc, .cxx) ndi zizindikiro zochenjeza zomwezo monga za C.
- Mtundu 1.6.0 umawonjezera kuyambitsa pulojekiti (fz -init, imapanga .fz.yaml, .fzignore, README.md), chithandizo cha mtundu wa bin (-format bin) cha ma bootloader ndi firmware, ndipo magawo osinthira ndi libs, flags.cc, flags.asm, flags.ld.
- Mtundu 1.5.0 umabweretsa ma source directories angapo (source_dirs), mndandanda wa mafayilo omveka bwino (source_files), kuphatikiza/kuchotsa mapangidwe, gawo la libs la malaibulale olumikizira, fayilo ya .fzignore, ndi kuphatikiza mafayilo osinthira magawo ambiri.
Source: opennet.ru
