Pagpagawas sa ForgeZero 1.9.0, usa ka himan sa pagtukod para sa C ug assembler

Gipagawas na ang ForgeZero 1.9.0 (fz), usa ka command-line build tool para sa mga proyekto nga gisulat sa C, C++, ug mga assembly languages ​​​​(NASM, GAS, FASM). Ang himan wala magkinahanglan og Makefile o uban pang mga configuration file para sa batakang paggamit. Ang project code gisulat sa Go ug lisensyado ubos sa lisensya sa MIT.

Ang ForgeZero makamatikod sa tipo sa file ug awtomatikong mopili sa angay nga backend. Ang matag code file gi-compile ngadto sa usa ka object file, dayon gisusi alang sa doble nga global symbols sa tanang objects ug gi-link ngadto sa usa ka executable file. Ang mga gi-compile nga file gi-cache ug gi-recompile lamang human sa mga pagbag-o nga gihimo sa mga nalambigit nga code file. Opsyonal, ang pagsubay sa pagbag-o sa file system ug pag-recompile posible human sa mga pag-update sa code file.

Ang gisuportahan nga mga compiler mao ang GCC, Clang, G++, ug Clang++; ang mga assembler mao ang NASM, GAS, ug FASM; ang mga linker mao ang LD, GCC, ug Clang; ug gisuportahan ang AR archiver. Ang mga mandatory nga pasidaan para sa C ug C++ mao ang: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Ang mga sanitizer sa AddressSanitizer ug UndefinedBehaviorSanitizer gi-enable pinaagi sa default (mahimo kini nga ma-disable gamit ang -sanitize=false flag). Ang gisuportahan nga mga plataporma mao ang: Linux, macOS, Windows (WSL2 ug lumad sa eksperimento).

Panguna nga mga pagbag-o sa bersyon 1.9.0:

  • Gidugang ang bandila nga "-target" , nga nagtugot sa cross-compilation para sa bisan unsang arkitektura gamit ang angay nga mga himan sa prefix. Ang fz awtomatikong nagtino sa mga ngalan sa compiler, linker, ug archiver base sa gitakdang identifier (pananglitan, "arm-linux-gnueabihf-gcc"). Ang tanan nga standard nga mga plataporma sa target sa GNU gisuportahan, lakip ang arm-linux-gnueabihf, aarch64-linux-gnu, ug riscv64-linux-gnu.
  • Реализована поддержка поддержка протокола LSP (Language Server Protocol). Флаг «-compile-commands» генерирует файл compile_commands.json (Compilation Database) в корне проекта. Файл считывается языковыми mga server clangd и ccls, обеспечивая работу автодополнения, навигации по коду и диагностики в редакторах с поддержкой LSP (Neovim, VSCode, CLion, Emacs и др.).
  • Ang fz nga sugo nga "-update" karon nagtipig sa kasamtangang binary ngadto sa /usr/local/bin/fz.old sa dili pa mag-instalar og bag-ong bersyon, nga nagtugot kanimo sa pagbalik sa miaging bersyon nga dili na kinahanglan nga i-instalar pag-usab.
  • Giayo ang usa ka bug sa mga proyekto nga multi-directory diin ang mga file nga adunay parehas nga mga ngalan sa base gikan sa lainlaing mga subdirectory mag-overwrite sa mga object file sa usag usa. Ang mga ngalan sa object file karon gihimo na base sa kompleto nga relatibong agianan sa gigikanan nga file.
  • Gipatuman ang interactive mode nga "fz -shell" para sa paghimo og single files.
  • Gidugang ang test coverage para sa SplitCommand, CmdSet, ug CmdBuild commands. Ang test coverage para sa linker package misaka gikan sa 17% ngadto sa 60%, ug ang coverage para sa tanang packages milapas na sa 40%.
  • Gidugang ang mekanismo sa pag-ilis sa CheckTool para sa pagsulay sa mga senaryo nga adunay nawala nga mga sangkap sa toolchain.

Mga pagbag-o gikan sa miaging mga pagpagawas:

  • Ang Bersyon 1.8.0 nagpatuman sa pag-assemble sa mga static libraries (-type static / -lib), nagsiguro sa pagka-talagsaon sa mga ngalan sa object file sa mga multi-director nga proyekto, ug nag-ayo sa mga sayop sa assembly subsystem nga may kalabutan sa pagtabok sa ".." nga agianan.
  • Ang Bersyon 1.7.0 nagdugang og parallel compilation (-j N, 0 — autodetection sa gidaghanon sa mga core), suporta para sa mga linker script (-T) ug mga entry point address (-Ttext), interactive mode (fz -shell), klaro nga pagpili sa output format (elf32, elf64, bin), compilation sa mga C++ file (.cpp, .cc, .cxx) nga adunay parehas nga estrikto nga mga warning flag sama sa C.
  • Ang Bersyon 1.6.0 nagdugang sa pagsugod sa proyekto (fz -init, nagmugna og .fz.yaml, .fzignore, README.md), suporta sa bin format (-format bin) para sa mga bootloader ug firmware, ug mga configuration field nga libs, flags.cc, flags.asm, flags.ld.
  • Ang Bersyon 1.5.0 nagpaila sa daghang mga direktoryo sa tinubdan (source_dirs), mga lista sa eksplisit nga file (source_files), mga sumbanan sa paglakip/pag-eksklude, usa ka field sa libs para sa mga librarya sa linker, ang .fzignore file, ug multi-level nga paghiusa sa mga file sa pag-configure.

Source: opennet.ru

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster