C və assembler üçün qurma vasitəsi olan ForgeZero 1.9.0-ın buraxılışı

C, C++ və assembler dillərində (NASM, GAS, FASM) yazılmış layihələr üçün əmr sətri qurma vasitəsi olan ForgeZero 1.9.0 (fz) buraxıldı. Alət əsas istifadə üçün Makefile və ya digər konfiqurasiya faylları tələb etmir. Layihə kodu Go dilində yazılıb və MIT lisenziyası altında lisenziyalaşdırılıb.

ForgeZero fayl növünü aşkarlayır və avtomatik olaraq müvafiq arxa planı seçir. Hər bir kod faylı bir obyekt faylına kompilyasiya edilir, sonra bütün obyektlərdə təkrarlanan qlobal simvollar yoxlanılır və tək bir icra edilə bilən fayla əlaqələndirilir. Kompilyasiya edilmiş fayllar yalnız əlaqəli kod fayllarında dəyişikliklər edildikdən sonra keşlənir və yenidən kompilyasiya edilir. İsteğe bağlı olaraq, kod faylı yeniləmələrindən sonra fayl sistemindəki dəyişikliklərin izlənməsi və yenidən kompilyasiya edilməsi mümkündür.

Dəstəklənən kompilyatorlar GCC, Clang, G++ və Clang++-dır; assemblerlər NASM, GAS və FASM-dir; linkerlər LD, GCC və Clang-dır; və AR arxivatoru dəstəklənir. C və C++ üçün məcburi xəbərdarlıqlar bunlardır: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". AddressSanitizer və UndefinedBehaviorSanitizer dezinfeksiyaediciləri standart olaraq aktivdir (onlar -sanitize=false bayrağı ilə deaktiv edilə bilər). Dəstəklənən platformalar bunlardır: Linux, macOS, Windows (WSL2 və eksperimental olaraq yerli).

1.9.0 versiyasında əsas dəyişikliklər:

  • "-target" bayrağı əlavə edildi , müvafiq prefiks alətləri ilə istənilən arxitektura üçün çarpaz kompilyasiyanı təmin edir. fz, göstərilən identifikatora (məsələn, "arm-linux-gnueabihf-gcc") əsasən kompilyatorun, linkerin və arxivatorun adlarını avtomatik olaraq müəyyən edir. arm-linux-gnueabihf, aarch64-linux-gnu və riscv64-linux-gnu daxil olmaqla bütün standart GNU hədəf platformaları dəstəklənir.
  • Dil Server Protokolu (LSP) üçün dəstək tətbiq edilmişdir. "-compile-commands" bayrağı layihə kökündə compile_commands.json (Kompilyasiya Verilənlər Bazası) faylı yaradır. Fayl dil tərəfindən oxunur. serverlər clangd və ccls, LSP-ni (Neovim, VSCode, CLion, Emacs və s.) dəstəkləyən redaktorlarda avtomatik tamamlama, kod naviqasiyası və diaqnostika təmin edir.
  • fz "-update" əmri artıq yeni versiyanı quraşdırmadan əvvəl cari ikili faylı /usr/local/bin/fz.old qovluğunda saxlayır və bu da yenidən quraşdırmadan əvvəlki versiyaya qayıtmağınıza imkan verir.
  • Çoxqovluqlu layihələrdə fərqli altqovluqlardan eyni əsas adlara malik faylların bir-birinin obyekt fayllarını yenidən yazması ilə bağlı xəta düzəldildi. Obyekt fayl adları artıq mənbə faylına gedən tam nisbi yola əsasən yaradılır.
  • Tək faylların qurulması üçün "fz -shell" interaktiv rejimi tətbiq edildi.
  • SplitCommand, CmdSet və CmdBuild əmrləri üçün test əhatə dairəsi əlavə edildi. Linker paketi üçün test əhatə dairəsi 17%-dən 60%-ə qədər artıb və bütün paketlər üçün əhatə dairəsi 40%-i keçib.
  • Alət zənciri komponentlərinin çatışmazlığı olan ssenariləri sınaqdan keçirmək üçün CheckTool əvəzetmə mexanizmi əlavə edildi.

Əvvəlki buraxılışlardan dəyişikliklər:

  • 1.8.0 versiyası statik kitabxanaların (-type static / -lib) yığılmasını həyata keçirir, çoxdirektorlu layihələrdə obyekt fayl adlarının unikallığını təmin edir və ".." yolunun keçməsi ilə əlaqəli yığım alt sistemindəki səhvləri düzəldir.
  • 1.7.0 versiyasına paralel tərtibat (-j N, 0 — nüvələrin sayının avtomatik aşkarlanması), linker skriptləri (-T) və giriş nöqtəsi ünvanları (-Ttext) üçün dəstək, interaktiv rejim (fz -shell), çıxış formatının açıq seçimi (elf32, elf64, bin), C++ fayllarının tərtibatı (.cpp, .cc, .cxx) C üçün olduğu kimi eyni ciddi xəbərdarlıq bayraqları ilə əlavə olunur.
  • 1.6.0 versiyası layihənin başlanğıcını (fz -init, .fz.yaml, .fzignore, README.md yaradır), bootloaderlər və proqram təminatı üçün bin format dəstəyini (-format bin) və libs, flags.cc, flags.asm, flags.ld konfiqurasiya sahələrini əlavə edir.
  • 1.5.0 versiyası çoxsaylı mənbə qovluqlarını (source_dirs), açıq fayl siyahılarını (source_files), daxil etmə/çıxarma şablonlarını, linker kitabxanaları üçün libs sahəsini, .fzignore faylını və konfiqurasiya fayllarının çoxsəviyyəli birləşməsini təqdim edir.

Mənbə: opennet.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster