C жана ассемблер үчүн куруу куралы болгон ForgeZero 1.9.0 чыгарылышы

C, C++ жана ассемблер тилдеринде (NASM, GAS, FASM) жазылган долбоорлор үчүн буйрук сабын түзүү куралы болгон ForgeZero 1.9.0 (fz) чыгарылды. Курал негизги колдонуу үчүн 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") негизделген компилятордун, шилтемелөөчүнүн жана архивдөөчүнүн аттарын автоматтык түрдө аныктайт. arm-linux-gnueabihf, aarch64-linux-gnu жана riscv64-linux-gnu сыяктуу бардык стандарттуу 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 буйруктары үчүн тесттик камтуу кошулду. Байланыштыруучу пакет үчүн тесттик камтуу 17% дан 60% га чейин көбөйдү, ал эми бардык пакеттер үчүн камтуу 40% дан ашты.
  • Toolchain компоненттери жок сценарийлерди сыноо үчүн 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 файлы жана конфигурация файлдарын көп деңгээлдүү бириктирүү киргизилген.

Source: opennet.ru

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster