C va assembler uchun yig'ish vositasi bo'lgan ForgeZero 1.9.0 ning chiqarilishi

C, C++ va assembler tillarida (NASM, GAS, FASM) yozilgan loyihalar uchun buyruq satrini yaratish vositasi bo'lgan ForgeZero 1.9.0 (fz) chiqarildi. Asbob asosiy foydalanish uchun Makefile yoki boshqa konfiguratsiya fayllarini talab qilmaydi. Loyiha kodi Go tilida yozilgan va MIT litsenziyasi ostida litsenziyalangan.

ForgeZero fayl turini aniqlaydi va avtomatik ravishda tegishli serverni tanlaydi. Har bir kod fayli obyekt fayliga kompilyatsiya qilinadi, so'ngra barcha obyektlarda takroriy global belgilar mavjudligi tekshiriladi va bitta bajariladigan faylga bog'lanadi. Kompilyatsiya qilingan fayllar keshlanadi va faqat tegishli kod fayllariga o'zgartirishlar kiritilgandan so'ng qayta kompilyatsiya qilinadi. Ixtiyoriy ravishda, kod fayli yangilangandan so'ng fayl tizimidagi o'zgarishlarni kuzatish va qayta kompilyatsiya qilish mumkin.

Qo'llab-quvvatlanadigan kompilyatorlar GCC, Clang, G++ va Clang++; assemblerlar NASM, GAS va FASM; bog'lovchilar LD, GCC va Clang; va AR arxivatori qo'llab-quvvatlanadi. C va C++ uchun majburiy ogohlantirishlar: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". AddressSanitizer va UndefinedBehaviorSanitizer dezinfektsiyalovchilari sukut bo'yicha yoqilgan (ularni -sanitize=false bayrog'i bilan o'chirib qo'yish mumkin). Qo'llab-quvvatlanadigan platformalar: Linux, macOS, Windows (WSL2 va eksperimental ravishda mahalliy).

1.9.0 versiyasidagi asosiy o'zgarishlar:

  • "-target" bayrog'i qo'shildi , bu tegishli prefiks vositalari yordamida har qanday arxitektura uchun o'zaro kompilyatsiyani ta'minlaydi. fz belgilangan identifikatorga (masalan, "arm-linux-gnueabihf-gcc") asoslanib kompilyator, bog'lovchi va arxivlovchi nomlarini avtomatik ravishda aniqlaydi. Barcha standart GNU maqsadli platformalari, jumladan, arm-linux-gnueabihf, aarch64-linux-gnu va riscv64-linux-gnu qo'llab-quvvatlanadi.
  • Til Server Protokolini (LSP) qo'llab-quvvatlash amalga oshirildi. "-compile-commands" bayrog'i loyiha ildizida compile_commands.json (Kompilyatsiya Ma'lumotlar Bazasi) faylini yaratadi. Fayl til bo'yicha o'qiladi. serverlar clangd va ccls, LSP (Neovim, VSCode, CLion, Emacs va boshqalar) ni qo'llab-quvvatlaydigan muharrirlarda avtomatik to'ldirish, kod navigatsiyasi va diagnostikani ta'minlaydi.
  • fz "-update" buyrug'i endi yangi versiyani o'rnatishdan oldin joriy ikkilik faylni /usr/local/bin/fz.old ga saqlaydi, bu sizga qayta o'rnatmasdan oldingi versiyaga qaytish imkonini beradi.
  • Ko'p katalogli loyihalardagi turli pastki kataloglardan bir xil asosiy nomlarga ega fayllar bir-birining obyekt fayllarini ustiga yozib qo'yishi mumkin bo'lgan xato tuzatildi. Ob'ekt fayl nomlari endi manba fayliga to'liq nisbiy yo'l asosida yaratiladi.
  • Bitta fayllarni yaratish uchun "fz -shell" interaktiv rejimi joriy etildi.
  • SplitCommand, CmdSet va CmdBuild buyruqlari uchun sinov qamrovi qo'shildi. Linker paketi uchun sinov qamrovi 17% dan 60% gacha oshdi va barcha paketlar uchun qamrov 40% dan oshdi.
  • Asboblar zanjiri komponentlari yetishmayotgan stsenariylarni sinab ko'rish uchun CheckTool almashtirish mexanizmi qo'shildi.

Avvalgi nashrlardan o'zgarishlar:

  • 1.8.0 versiyasi statik kutubxonalarni (-type static / -lib) yig'ishni amalga oshiradi, ko'p direktorli loyihalarda obyekt fayl nomlarining noyobligini ta'minlaydi va ".." yo'lini kesib o'tish bilan bog'liq yig'ish quyi tizimidagi xatolarni tuzatadi.
  • 1.7.0 versiyasi parallel kompilyatsiya (-j N, 0 — yadrolar sonini avtomatik aniqlash), bog'lovchi skriptlarni (-T) va kirish nuqtasi manzillarini (-Ttext) qo'llab-quvvatlash, interaktiv rejim (fz -shell), chiqish formatini aniq tanlash (elf32, elf64, bin), C++ fayllarini (.cpp, .cc, .cxx) C uchun bo'lgani kabi qat'iy ogohlantirish bayroqlari bilan kompilyatsiya qilishni qo'shadi.
  • 1.6.0 versiyasi loyihani ishga tushirishni (fz -init, .fz.yaml, .fzignore, README.md fayllarini yaratadi), yuklash vositalari va dasturiy ta'minot uchun bin formatini qo'llab-quvvatlashni (-format bin) va libs, flags.cc, flags.asm, flags.ld konfiguratsiya maydonlarini qo'shadi.
  • 1.5.0 versiyasi bir nechta manba kataloglarini (source_dirs), aniq fayl ro'yxatlarini (source_files), qo'shish/chiqarib tashlash andozalarini, bog'lovchi kutubxonalar uchun libs maydonini, .fzignore faylini va konfiguratsiya fayllarini ko'p darajali birlashtirishni taqdim etadi.

Manba: opennet.ru

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster