ИздаванС Π½Π° ForgeZero 1.9.0, инструмСнт Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° C ΠΈ асСмблСр

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.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Language Server Protocol (LSP). Π€Π»Π°Π³ΡŠΡ‚ "-compile-commands" Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Ρ„Π°ΠΉΠ» compile_commands.json (Compilation Database) Π² ΠΊΠΎΡ€Π΅Π½Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π€Π°ΠΉΠ»ΡŠΡ‚ сС Ρ‡Π΅Ρ‚Π΅ ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ°. ΡΡŠΡ€Π²ΡŠΡ€ΠΈ clangd ΠΈ ccls, осигуряващи Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅, навигация Π² ΠΊΠΎΠ΄Π° ΠΈ диагностика Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ LSP (Neovim, VSCode, CLion, Emacs ΠΈ Π΄Ρ€.).
  • ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° fz "-update" Π²Π΅Ρ‡Π΅ Π·Π°ΠΏΠ°Π·Π²Π° тСкущия Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ» Π² /usr/local/bin/fz.old ΠΏΡ€Π΅Π΄ΠΈ инсталиранС Π½Π° Π½ΠΎΠ²Π° вСрсия, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° сС Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ към ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° вСрсия Π±Π΅Π· прСинсталиранС.
  • ΠžΡ‚ΡΡ‚Ρ€Π°Π½Π΅Π½Π° Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ с мноТСство Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΏΡ€ΠΈ която Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Π΅Π΄Π½Π°ΠΊΠ²ΠΈ Π±Π°Π·ΠΎΠ²ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ прСзаписваха ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° другия. Π˜ΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π²Π΅Ρ‡Π΅ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ въз основа Π½Π° пълния относитСлСн ΠΏΡŠΡ‚ Π΄ΠΎ изходния Ρ„Π°ΠΉΠ».
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ "fz -shell" Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ тСстово ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ SplitCommand, CmdSet ΠΈ CmdBuild. ВСстовото ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° Π»ΠΈΠ½ΠΊΠΈΡ€Π°Π½Π΅ сС Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΎ ΠΎΡ‚ 17% Π½Π° 60%, Π° ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π·Π° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΅ Π½Π°Π΄Ρ…Π²ΡŠΡ€Π»ΠΈΠ»ΠΎ 40%.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° замСстванС Π½Π° CheckTool Π·Π° тСстванС Π½Π° сцСнарии с липсващи ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΎΡ‚ Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° инструмСнти.

ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈ спрямо ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ издания:

  • ВСрсия 1.8.0 Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° асСмблиранСто Π½Π° статични Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (-Ρ‚ΠΈΠΏ 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с DDoS Π·Π°Ρ‰ΠΈΡ‚Π°, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΡƒΠ΅Π± хостинг със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS Π°Ρ‚Π°ΠΊΠΈ, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster