Inilabas na ang ForgeZero 1.9.0 (fz), isang command-line build tool para sa mga proyektong nakasulat sa C, C++, at mga assembly language (NASM, GAS, FASM). Hindi na kailangan ng tool ang Makefile o iba pang configuration file para sa basic na paggamit. Ang project code ay nakasulat sa Go at lisensyado sa ilalim ng MIT license.
Tinutukoy ng ForgeZero ang uri ng file at awtomatikong pinipili ang naaangkop na backend. Ang bawat code file ay kino-compile sa isang object file, pagkatapos ay sinusuri para sa mga duplicate na global symbol sa lahat ng object at iniuugnay sa isang executable file. Ang mga na-compile na file ay naka-cache at muling kino-compile pagkatapos lamang magkaroon ng mga pagbabago sa mga kaugnay na code file. Bilang opsyon, posible ang pagsubaybay at muling pag-compile ng pagbabago ng file system pagkatapos ng mga pag-update ng code file.
Ang mga sinusuportahang compiler ay GCC, Clang, G++, at Clang++; ang mga assembler ay NASM, GAS, at FASM; ang mga linker ay LD, GCC, at Clang; at sinusuportahan ang AR archiver. Ang mga mandatoryong babala para sa C at C++ ay: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Ang mga sanitizer ng AddressSanitizer at UndefinedBehaviorSanitizer ay pinagana bilang default (maaari itong i-disable gamit ang -sanitize=false flag). Ang mga sinusuportahang platform ay: Linux, macOS, Windows (WSL2 at katutubo sa eksperimento).
Основные изменения версии 1.9.0:
- Idinagdag ang watawat na "-target" , na nagbibigay-daan sa cross-compilation para sa anumang arkitektura gamit ang naaangkop na mga tool sa prefix. Awtomatikong tinutukoy ng fz ang mga pangalan ng compiler, linker, at archiver batay sa tinukoy na identifier (hal., "arm-linux-gnueabihf-gcc"). Sinusuportahan ang lahat ng karaniwang platform ng GNU target, kabilang ang arm-linux-gnueabihf, aarch64-linux-gnu, at riscv64-linux-gnu.
- Naipatupad na ang suporta para sa Language Server Protocol (LSP). Ang flag na "-compile-commands" ay bubuo ng compile_commands.json (Compilation Database) file sa project root. Ang file ay binabasa ayon sa wika. mga server clangd at ccls, na nagbibigay ng autocompletion, code navigation, at diagnostics sa mga editor na sumusuporta sa LSP (Neovim, VSCode, CLion, Emacs, atbp.).
- Ang utos na fz na "-update" ay nagse-save na ngayon ng kasalukuyang binary sa /usr/local/bin/fz.old bago mag-install ng bagong bersyon, na nagbibigay-daan sa iyong bumalik sa nakaraang bersyon nang hindi na muling ini-install.
- Inayos ang isang bug sa mga proyektong may maraming direktoryo kung saan ang mga file na may magkaparehong pangalan ng base mula sa iba't ibang subdirektoryo ay mag-o-overwrite sa mga object file ng isa't isa. Ang mga pangalan ng object file ay nabubuo na ngayon batay sa buong relatibong path patungo sa source file.
- Ipinatupad ang interactive mode na "fz -shell" para sa pagbuo ng mga indibidwal na file.
- Idinagdag ang saklaw ng pagsubok para sa mga utos na SplitCommand, CmdSet, at CmdBuild. Ang saklaw ng pagsubok para sa linker package ay tumaas mula 17% patungong 60%, at ang saklaw para sa lahat ng mga pakete ay lumampas sa 40%.
- Nagdagdag ng mekanismong kapalit ng CheckTool para sa pagsubok ng mga senaryo na may mga nawawalang bahagi ng toolchain.
Mga pagbabago mula sa mga nakaraang paglabas:
- Ipinapatupad ng Bersyon 1.8.0 ang pag-assemble ng mga static library (-type static / -lib), tinitiyak ang pagiging natatangi ng mga pangalan ng object file sa mga multi-director project, at inaayos ang mga error sa assembly subsystem na may kaugnayan sa pagtawid sa ".." path.
- Nagdaragdag ang Bersyon 1.7.0 ng parallel compilation (-j N, 0 — autodetection ng bilang ng mga core), suporta para sa mga linker script (-T) at mga entry point address (-Ttext), interactive mode (fz -shell), tahasang pagpili ng output format (elf32, elf64, bin), compilation ng mga C++ file (.cpp, .cc, .cxx) na may parehong mahigpit na warning flags gaya ng para sa C.
- Idinagdag ng Bersyon 1.6.0 ang pagsisimula ng proyekto (fz -init, lumilikha ng .fz.yaml, .fzignore, README.md), suporta sa bin format (-format bin) para sa mga bootloader at firmware, at mga field ng configuration na libs, flags.cc, flags.asm, flags.ld.
- Ipinakikilala ng Bersyon 1.5.0 ang maraming direktoryo ng pinagmulan (source_dirs), mga listahan ng tahasang file (source_files), mga pattern na isama/ibukod, isang field na libs para sa mga linker library, ang .fzignore file, at multi-level na pagsasama ng mga configuration file.
Pinagmulan: opennet.ru
