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 āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻ āϏā§āύā§āĻāύāĻŋāϝāĻŧ āĻāĻāĻŽā§āύāĻŋāύāĻŋāϝāĻŧāĻž:
- "-āĻāĻžāϰā§āĻā§āĻ" āĻĢā§āϞā§āϝāĻžāĻ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϝāĻž āĻāĻĒāϝā§āĻā§āϤ āĻĒā§āϰāĻŋāĻĢāĻŋāĻā§āϏ āĻā§āϞā§āϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āϝā§āĻā§āύ⧠āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰā§āϰ āĻāύā§āϝ āĻā§āϰāϏ-āĻāĻŽā§āĻĒāĻžāĻāϞā§āĻļāύ āϏāĻā§āώāĻŽ āĻāϰā§āĨ¤ fz āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāϝāĻŧāĻžāϰā§āϰ (āϝā§āĻŽāύ, "arm-linux-gnueabihf-gcc") āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ, āϞāĻŋāĻā§āĻāĻžāϰ āĻāĻŦāĻ āĻāϰā§āĻāĻŋāĻāĻžāϰā§āϰ āύāĻžāĻŽ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āĨ¤ arm-linux-gnueabihf, aarch64-linux-gnu, āĻāĻŦāĻ riscv64-linux-gnu āϏāĻš āϏāĻŽāϏā§āϤ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ GNU āĻāĻžāϰā§āĻā§āĻ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āϏāĻŽāϰā§āĻĨāĻŋāϤāĨ¤
- Đ ĐĩаĐģиСОваĐŊа ĐŋОддĐĩŅĐļĐēа ĐŋОддĐĩŅĐļĐēа ĐŋŅĐžŅĐžĐēĐžĐģа LSP (Language Server Protocol). ФĐģĐ°Đŗ ÂĢ-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 āĻāĻŽāĻžāύā§āĻĄāĻā§āϞā§āϰ āĻāύā§āϝ āĻā§āϏā§āĻ āĻāĻāĻžāϰā§āĻ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āϞāĻŋāĻā§āĻāĻžāϰ āĻĒā§āϝāĻžāĻā§āĻā§āϰ āĻā§āϏā§āĻ āĻāĻāĻžāϰā§āĻ ā§§ā§% āĻĨā§āĻā§ āĻŦā§āĻĄāĻŧā§ ā§Ŧā§Ļ% āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āϏāĻāϞ āĻĒā§āϝāĻžāĻā§āĻā§āϰ āĻāĻāĻžāϰā§āĻ ā§Ēā§Ļ% āĻ āϤāĻŋāĻā§āϰāĻŽ āĻāϰā§āĻā§āĨ¤
- āϝā§āϏāĻŦ āĻā§āϏā§āĻāĻŋāĻ āϏāĻŋāύāĻžāϰāĻŋāĻāϤ⧠āĻā§āϞāĻā§āĻāύā§āϰ āĻāĻĒāĻžāĻĻāĻžāύ āĻ āύā§āĻĒāϏā§āĻĨāĻŋāϤ, āϏā§āĻā§āϞā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻā§āĻāĻā§āϞ (CheckTool) āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻŦā§āϝāĻŦāϏā§āĻĨāĻž āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āϏāĻāϏā§āĻāϰāĻŖāĻā§āϞ⧠āĻĨā§āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāϏāĻŽā§āĻš:
- āϏāĻāϏā§āĻāϰāĻŖ ā§§.ā§Ž.ā§Ļ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āĻ ā§āϝāĻžāϏā§āĻŽā§āĻŦāϞāĻŋ (-type static / -lib) āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰā§, āĻāĻāĻžāϧāĻŋāĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϝā§āĻā§āϤ āĻĒā§āϰā§āĻā§āĻā§āĻā§ āĻ āĻŦāĻā§āĻā§āĻ āĻĢāĻžāĻāϞā§āϰ āύāĻžāĻŽā§āϰ āĻ āύāύā§āϝāϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āĻāĻŦāĻ ".." āĻĒāĻžāĻĨ āĻā§āϰāĻžāĻāĻžāϰā§āϏāĻžāϞ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻ ā§āϝāĻžāϏā§āĻŽā§āĻŦāϞāĻŋ āϏāĻžāĻŦāϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϤā§āϰā§āĻāĻŋāĻā§āϞ⧠āϏāĻāĻļā§āϧāύ āĻāϰā§āĨ¤
- āϏāĻāϏā§āĻāϰāĻŖ ā§§.ā§.ā§Ļ-āϤ⧠āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞ āĻāĻŽā§āĻĒāĻžāĻāϞā§āĻļāύ (-j N, 0 â āĻā§āϰā§āϰ āϏāĻāĻā§āϝāĻž āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻļāύāĻžāĻā§āϤāĻāϰāĻŖ), āϞāĻŋāĻā§āĻāĻžāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ (-T) āĻāĻŦāĻ āĻāύā§āĻā§āϰāĻŋ āĻĒāϝāĻŧā§āύā§āĻ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏ (-Ttext)-āĻāϰ āĻāύā§āϝ āϏāĻŽāϰā§āĻĨāύ, āĻāύā§āĻāĻžāϰā§āĻā§āĻāĻŋāĻ āĻŽā§āĻĄ (fz -shell), āĻāĻāĻāĻĒā§āĻ āĻĢāϰāĻŽā§āϝāĻžāĻā§āϰ āϏā§āϏā§āĻĒāώā§āĻ āύāĻŋāϰā§āĻŦāĻžāĻāύ (elf32, elf64, bin), āĻāĻŦāĻ C-āĻāϰ āĻŽāϤā§āĻ āĻāĻāĻ āĻāĻ ā§āϰ āϏāϤāϰā§āĻā§āĻāϰāĻŖ āĻĢā§āϞā§āϝāĻžāĻ āϏāĻš C++ āĻĢāĻžāĻāϞ (.cpp, .cc, .cxx) āĻāĻŽā§āĻĒāĻžāĻāϞā§āĻļāύāĨ¤
- āϏāĻāϏā§āĻāϰāĻŖ ā§§.ā§Ŧ.ā§Ļ-āϤ⧠āĻĒā§āϰā§āĻā§āĻā§āĻ āĻāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻā§āĻļāύ (fz -init, āϝāĻž .fz.yaml, .fzignore, README.md āϤā§āϰāĻŋ āĻāϰā§), āĻŦā§āĻāϞā§āĻĄāĻžāϰ āĻ āĻĢāĻžāϰā§āĻŽāĻāϝāĻŧā§āϝāĻžāϰā§āϰ āĻāύā§āϝ āĻŦāĻŋāύ āĻĢāϰāĻŽā§āϝāĻžāĻ āϏāĻžāĻĒā§āϰā§āĻ (-format bin), āĻāĻŦāĻ libs, flags.cc, flags.asm, flags.ld-āĻāϰ āĻŽāϤ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻŋāϞā§āĻĄ āϝā§āĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
- āϏāĻāϏā§āĻāϰāĻŖ ā§§.ā§Ģ.ā§Ļ-āϤ⧠āĻāĻāĻžāϧāĻŋāĻ āϏā§āϰā§āϏ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ (source_dirs), āϏā§āϏā§āĻĒāώā§āĻ āĻĢāĻžāĻāϞ āϤāĻžāϞāĻŋāĻāĻž (source_files), include/exclude āĻĒā§āϝāĻžāĻāĻžāϰā§āύ, āϞāĻŋāĻā§āĻāĻžāϰ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ libs āĻĢāĻŋāϞā§āĻĄ, .fzignore āĻĢāĻžāĻāϞ āĻāĻŦāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞā§āϰ āĻŦāĻšā§-āϏā§āϤāϰā§āϝāĻŧ āĻŽāĻžāϰā§āĻāĻŋāĻ āĻŦā§āϝāĻŦāϏā§āĻĨāĻž āĻāĻžāϞ⧠āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻāϤā§āϏ: opennet.ru
