เบเบฒเบ™เบ›เปˆเบญเบ ForgeZero 1.9.0, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเป‰เบฒเบ‡เบชเบณเบฅเบฑเบš C เปเบฅเบฐ assembler

ForgeZero 1.9.0 (fz), เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเป‰เบฒเบ‡เปเบšเบš command-line เบชเบณเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบžเบฒเบชเบฒ C, C++, เปเบฅเบฐเบžเบฒเบชเบฒ assembly (NASM, GAS, FASM), เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบฅเป‰เบง. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ Makefile เบซเบผเบทเป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบทเปˆเบ™เป†เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ–เบทเบเบ‚เบฝเบ™เบ”เป‰เบงเบเบžเบฒเบชเบฒ Go เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT.

ForgeZero เบเบงเบ”เบžเบปเบšเบ›เบฐเป€เบžเบ”เป„เบŸเบฅเปŒ เปเบฅเบฐ เป€เบฅเบทเบญเบ backend เบ—เบตเปˆเป€เปเบฒเบฐเบชเบปเบกเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบงเบ”เบชเบญเบšเบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบŠเปเป‰เบฒเบเบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเบ—เบธเบเบงเบฑเบ”เบ–เบธ เปเบฅเบฐ เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ”เบฝเบง. เป„เบŸเบฅเปŒเบ—เบตเปˆเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบŠเบปเปˆเบงเบ„เบฒเบง เปเบฅเบฐ เบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™เปƒเปเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เปเปˆเป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ เปเบฅเบฐ เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™เปƒเปเปˆเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”.

เบ•เบปเบงเบ„เบญเบกเป„เบžเป€เบฅเบตเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเปเบกเปˆเบ™ 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-gnuebihf-gcc"). เปเบžเบฅเบ”เบŸเบญเบกเป€เบ›เบปเป‰เบฒเปเบฒเบ GNU เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš, เบฅเบงเบกเบ—เบฑเบ‡ arm-linux-gnuebihf, 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 เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบš toolchain เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›.

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบญเบเบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰:

  • เป€เบงเบตเบŠเบฑเบ™ 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) เบชเบณเบฅเบฑเบš bootloaders เปเบฅเบฐ firmware, เปเบฅเบฐ fields เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ libs, flags.cc, flags.asm, flags.ld.
  • เป€เบงเบตเบŠเบฑเบ™ 1.5.0 เปเบ™เบฐเบ™เบณเบซเบผเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ (source_dirs), เบฅเบฒเบเบŠเบทเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™ (source_files), เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฅเบงเบก/เบเบปเบเป€เบงเบฑเป‰เบ™, เบžเบฒเบเบชเบฐเปœเบฒเบก libs เบชเบณเบฅเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” linker, เป„เบŸเบฅเปŒ .fzignore, เปเบฅเบฐเบเบฒเบ™เบฅเบงเบกเป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบผเบฒเบเบฅเบฐเบ”เบฑเบš.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster