ForgeZero 1.9.0 (fz), як абзори сохтани сатри фармон барои лоиҳаҳое, ки бо забонҳои C, C++ ва ассемблер (NASM, GAS, FASM) навишта шудаанд, бароварда шуд. Ин абзор барои истифодаи асосӣ ба Makefile ё дигар файлҳои конфигуратсия ниёз надорад. Коди лоиҳа бо забони Go навишта шудааст ва тибқи иҷозатномаи MIT иҷозатнома дорад.
ForgeZero намуди файлро муайян мекунад ва ба таври худкор сервери мувофиқро интихоб мекунад. Ҳар як файли рамз ба файли объектӣ компилятсия карда мешавад, сипас рамзҳои глобалии такрорӣ дар ҳамаи объектҳо тафтиш карда мешаванд ва ба як файли иҷрошаванда пайваст карда мешаванд. Файлҳои компилятсияшуда танҳо пас аз ворид кардани тағйирот ба файлҳои рамзии алоқаманд кэш карда мешаванд ва аз нав компилятсия карда мешаванд. Илова бар ин, пайгирии тағйироти системаи файлӣ ва аз нав компилятсия кардан пас аз навсозии файли рамз имконпазир аст.
Компиляторҳои дастгиришаванда GCC, Clang, G++ ва Clang++ мебошанд; ассемблерҳо NASM, GAS ва FASM мебошанд; пайвандкунандагон LD, GCC ва Clang мебошанд; ва бойгонии AR дастгирӣ карда мешавад. Огоҳиҳои ҳатмӣ барои C ва C++ инҳоянд: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Санитаризаторҳои AddressSanitizer ва UndefinedBehaviorSanitizer бо нобаёнӣ фаъол карда мешаванд (онҳоро бо парчами -sanitize=false ғайрифаъол кардан мумкин аст). Платформаҳои дастгиришаванда инҳоянд: Linux, macOS, Windows (WSL2 ва аз ҷиҳати таҷрибавӣ табиӣ).
Тағироти асосӣ дар версияи 1.9.0:
- Иловаи парчами "-target" , ки имкон медиҳад, ки барои ҳама гуна меъморӣ бо асбобҳои мувофиқи префикс компилятсияи салибӣ анҷом дода шавад. fz номҳои компилятор, пайвандкунанда ва бойгониро ба таври худкор дар асоси идентификатори муайяншуда (масалан, "arm-linux-gnueabihf-gcc") муайян мекунад. Ҳамаи платформаҳои мақсадноки стандартии GNU, аз ҷумла arm-linux-gnueabihf, aarch64-linux-gnu ва riscv64-linux-gnu, дастгирӣ карда мешаванд.
- Дастгирии Протоколи Сервери Забон (LSP) амалӣ карда шудааст. Парчами "-compile-commands" файли compile_commands.json (Доираи додаҳои компилятсия)-ро дар решаи лоиҳа тавлид мекунад. Файл аз рӯи забон хонда мешавад. серверҳо clangd ва ccls, ки пуркунии худкор, навигатсия дар код ва ташхисро дар муҳаррироне, ки LSP-ро дастгирӣ мекунанд (Neovim, VSCode, CLion, Emacs ва ғайра), таъмин мекунанд.
- Фармони fz "-update" ҳоло файли дуии ҷориро пеш аз насб кардани версияи нав дар /usr/local/bin/fz.old захира мекунад ва ба шумо имкон медиҳад, ки бе аз нав насб кардан ба версияи қаблӣ баргардед.
- Хатогие дар лоиҳаҳои бисёрфеҳристӣ ислоҳ карда шуд, ки дар он файлҳо бо номҳои якхелаи пойгоҳи зерфеҳристҳои гуногун файлҳои объектии якдигарро аз нав менависанд. Номҳои файлҳои объектӣ ҳоло дар асоси роҳи пурраи нисбӣ ба файли манбаъ тавлид мешаванд.
- Барои сохтани файлҳои алоҳида режими интерактивии "fz -shell" амалӣ карда шуд.
- Фарогирии санҷишӣ барои фармонҳои SplitCommand, CmdSet ва CmdBuild илова карда шуд. Фарогирии санҷишӣ барои бастаи linker аз 17% то 60% афзоиш ёфт ва фарогирии ҳамаи бастаҳо аз 40% гузашт.
- Механизми ивазкунии CheckTool барои сенарияҳои озмоишӣ бо ҷузъҳои занҷири асбобҳои гумшуда илова карда шуд.
Тағйирот аз нашрҳои қаблӣ:
- Нусхаи 1.8.0 васлкунии китобхонаҳои статикиро (-type static / -lib) амалӣ мекунад, беназирии номҳои файлҳои объектро дар лоиҳаҳои бисёрдиректорӣ таъмин мекунад ва хатогиҳоро дар зерсистемаи васлкунӣ, ки бо убури роҳи ".." алоқаманданд, ислоҳ мекунад.
- Нусхаи 1.7.0 компилятсияи параллелӣ (-j N, 0 — ошкоркунии худкори шумораи ядроҳо), дастгирии скриптҳои пайвандкунанда (-T) ва суроғаҳои нуқтаҳои вуруд (-Ttext), режими интерактивӣ (fz -shell), интихоби возеҳи формати баромад (elf32, elf64, bin), компилятсияи файлҳои C++ (.cpp, .cc, .cxx)-ро бо ҳамон парчамҳои огоҳкунандаи қатъӣ, ки барои C мавҷуданд, илова мекунад.
- Нусхаи 1.6.0 оғози лоиҳаро (fz -init, .fz.yaml, .fzignore, README.md), дастгирии формати bin (-format bin) барои боркунакҳо ва нармафзори насбшуда ва майдонҳои конфигуратсия libs, flags.cc, flags.asm, flags.ld илова мекунад.
- Нусхаи 1.5.0 директорияҳои сершумори манбаъ (source_dirs), рӯйхати возеҳи файлҳо (source_files), намунаҳои дохил кардан/хориҷ кардан, майдони libs барои китобхонаҳои пайвандкунанда, файли .fzignore ва муттаҳидсозии бисёрсатҳаи файлҳои конфигуратсияро муаррифӣ мекунад.
Манбаъ: opennet.ru
