ForgeZero 1.9.0 (fz), kifaa cha ujenzi wa mstari wa amri kwa miradi iliyoandikwa katika C, C++, na lugha za mkusanyiko (NASM, GAS, FASM), kimetolewa. Kifaa hiki hakihitaji faili ya Makefile au faili zingine za usanidi kwa matumizi ya msingi. Msimbo wa mradi umeandikwa katika Go na una leseni chini ya leseni ya MIT.
ForgeZero hugundua aina ya faili na huchagua kiotomatiki sehemu ya nyuma inayofaa. Kila faili ya msimbo hukusanywa katika faili ya kitu, kisha hukaguliwa kwa alama za kimataifa zinazorudiwa katika vitu vyote na kuunganishwa katika faili moja inayoweza kutekelezwa. Faili zilizokusanywa huhifadhiwa na kukusanywa tena baada ya mabadiliko kufanywa kwenye faili zinazohusiana za msimbo. Kwa hiari, ufuatiliaji na ujumuishaji wa mabadiliko ya mfumo wa faili unawezekana baada ya masasisho ya faili za msimbo.
Vikusanyaji vinavyoungwa mkono ni GCC, Clang, G++, na Clang++; vikusanyaji ni NASM, GAS, na FASM; viunganishi ni LD, GCC, na Clang; na hifadhi ya AR inaungwa mkono. Maonyo ya lazima kwa C na C++ ni: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Visafishaji vya AddressSanitizer na UndefinedBehaviorSanitizer vinawezeshwa kwa chaguo-msingi (vinaweza kuzimwa na -sanitize=false flag). Mifumo inayoungwa mkono ni: Linux, macOS, Windows (WSL2 na asili yake kimajaribio).
Mabadiliko kuu katika toleo la 1.9.0:
- Imeongeza bendera ya "-lengo" , ambayo huwezesha ujumuishaji mtambuka kwa usanifu wowote ukitumia zana zinazofaa za kiambishi awali. fz huamua kiotomatiki majina ya kikusanyaji, kiunganishi, na kihifadhi kulingana na kitambulisho kilichobainishwa (k.m., "arm-linux-gnueabihf-gcc"). Mifumo yote ya kawaida ya GNU inayolengwa inaungwa mkono, ikijumuisha arm-linux-gnueabihf, aarch64-linux-gnu, na riscv64-linux-gnu.
- Usaidizi wa Itifaki ya Seva ya Lugha (LSP) umetekelezwa. Bendera ya "-compile-commands" hutoa faili ya compile_commands.json (Hifadhidata ya Mkusanyiko) kwenye mzizi wa mradi. Faili inasomwa kwa lugha seva clangd na ccls, kutoa ukamilishaji kiotomatiki, urambazaji wa msimbo, na uchunguzi katika wahariri wanaounga mkono LSP (Neovim, VSCode, CLion, Emacs, nk.).
- Amri ya fz "-update" sasa inahifadhi mfumo wa sasa wa binary kwenye /usr/local/bin/fz.old kabla ya kusakinisha toleo jipya, na kukuruhusu kurudi kwenye toleo lililopita bila kusakinisha upya.
- Imerekebisha hitilafu katika miradi ya saraka nyingi ambapo faili zenye majina ya msingi yanayofanana kutoka saraka ndogo tofauti zingebadilisha faili za kitu cha kila mmoja. Majina ya faili za kitu sasa yanazalishwa kulingana na njia kamili ya uhusiano hadi kwenye faili chanzo.
- Imetekeleza hali shirikishi "fz -shell" kwa ajili ya kujenga faili moja.
- Ufikiaji wa majaribio umeongezwa kwa amri za SplitCommand, CmdSet, na CmdBuild. Ufikiaji wa majaribio kwa kifurushi cha kiunganishi umeongezeka kutoka 17% hadi 60%, na ufikiaji wa vifurushi vyote umezidi 40%.
- Imeongeza utaratibu wa kubadilisha CheckTool kwa ajili ya kujaribu matukio yenye vipengele vya mnyororo wa zana vilivyokosekana.
Mabadiliko kutoka kwa matoleo ya awali:
- Toleo la 1.8.0 hutekeleza mkusanyiko wa maktaba tuli (-aina tuli / -lib), huhakikisha upekee wa majina ya faili za vitu katika miradi ya director nyingi, na hurekebisha hitilafu katika mfumo mdogo wa mkusanyiko unaohusiana na upitishaji wa njia ya "..".
- Toleo la 1.7.0 linaongeza mkusanyiko sambamba (-j N, 0 — ugunduzi otomatiki wa idadi ya viini), usaidizi wa hati za kiunganishi (-T) na anwani za sehemu ya kuingia (-Ttext), hali shirikishi (fz -shell), uteuzi dhahiri wa umbizo la matokeo (elf32, elf64, bin), mkusanyiko wa faili za C++ (.cpp, .cc, .cxx) zenye bendera kali sawa za onyo kama za C.
- Toleo la 1.6.0 linaongeza uanzishaji wa mradi (fz -init, huunda .fz.yaml, .fzignore, README.md), usaidizi wa umbizo la bin (bin ya -fomati) kwa viendeshaji vya bootloader na programu dhibiti, na sehemu za usanidi libs, flags.cc, flags.asm, flags.ld.
- Toleo la 1.5.0 linaanzisha saraka nyingi za chanzo (source_dirs), orodha dhahiri za faili (source_files), jumuisha/ondoa ruwaza, sehemu ya libs kwa maktaba za viungo, faili ya .fzignore, na uunganishaji wa faili za usanidi wa ngazi nyingi.
Chanzo: opennet.ru
