ForgeZero 1.9.0 (fz), ett kommandoradsverktyg för projekt skrivna i C, C++ och assemblersprÄk (NASM, GAS, FASM), har slÀppts. Verktyget krÀver inte en Makefile eller andra konfigurationsfiler för grundlÀggande anvÀndning. Projektkoden Àr skriven i Go och licensierad under MIT-licensen.
ForgeZero identifierar filtypen och vÀljer automatiskt lÀmplig backend. Varje kodfil kompileras till en objektfil, kontrolleras sedan för dubbletter av globala symboler i alla objekt och lÀnkas till en enda körbar fil. Kompilerade filer cachas och kompileras om endast efter att Àndringar har gjorts i de associerade kodfilerna. Alternativt Àr spÄrning av filsystemÀndringar och omkompilering möjlig efter kodfiluppdateringar.
De kompilatorer som stöds Àr GCC, Clang, G++ och Clang++; assemblers Àr NASM, GAS och FASM; lÀnkare Àr LD, GCC och Clang; och AR-arkiveraren stöds. Obligatoriska varningar för C och C++ Àr: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Saneringsverktygen AddressSanitizer och UndefinedBehaviorSanitizer Àr aktiverade som standard (de kan inaktiveras med flaggan -sanitize=false). De plattformar som stöds Àr: Linux, macOS, Windows (WSL2 och experimentellt nativt).
HuvudÀndringar i version 1.9.0:
- Lade till flaggan "-target" , vilket möjliggör korskompilering för vilken arkitektur som helst med lÀmpliga prefixverktyg. fz bestÀmmer automatiskt namnen pÄ kompilatorn, lÀnkaren och arkiveraren baserat pÄ den angivna identifieraren (t.ex. "arm-linux-gnueabihf-gcc"). Alla standard GNU-mÄlplattformar stöds, inklusive arm-linux-gnueabihf, aarch64-linux-gnu och riscv64-linux-gnu.
- Stöd för Language Server Protocol (LSP) har implementerats. Flaggan "-compile-commands" genererar en compile_commands.json-fil (kompileringsdatabas) i projektets rot. Filen lÀses av sprÄket. servrar clangd och ccls, som tillhandahÄller autokomplettering, kodnavigering och diagnostik i editorer som stöder LSP (Neovim, VSCode, CLion, Emacs, etc.).
- Kommandot fz "-update" sparar nu den aktuella binÀrfilen till /usr/local/bin/fz.old innan en ny version installeras, vilket gör att du kan ÄterstÀlla till den tidigare versionen utan att installera om den.
- à tgÀrdade ett fel i projekt med flera kataloger dÀr filer med identiska basnamn frÄn olika underkataloger skrev över varandras objektfiler. Objektfilnamn genereras nu baserat pÄ den fullstÀndiga relativa sökvÀgen till kÀllfilen.
- Implementerade interaktivt lÀge "fz -shell" för att bygga enskilda filer.
- TesttÀckning har lagts till för kommandona SplitCommand, CmdSet och CmdBuild. TesttÀckningen för lÀnkarpaketet har ökat frÄn 17 % till 60 %, och tÀckningen för alla paket har överstigit 40 %.
- Lade till en CheckTool-ersÀttningsmekanism för testscenarier med saknade verktygskedjekomponenter.
Ăndringar frĂ„n tidigare utgĂ„vor:
- Version 1.8.0 implementerar assemblering av statiska bibliotek (-type static / -lib), sÀkerstÀller unikheten hos objektfilnamn i projekt med flera direktörer och ÄtgÀrdar fel i assemblersystemet relaterade till genomkörningen av sökvÀgen "..".
- Version 1.7.0 lĂ€gger till parallell kompilering (-j N, 0 â automatisk detektering av antalet kĂ€rnor), stöd för lĂ€nkskript (-T) och startpunktsadresser (-Ttext), interaktivt lĂ€ge (fz -shell), explicit val av utdataformat (elf32, elf64, bin), kompilering av C++-filer (.cpp, .cc, .cxx) med samma strikta varningsflaggor som för C.
- Version 1.6.0 lÀgger till projektinitialisering (fz -init, skapar .fz.yaml, .fzignore, README.md), stöd för bin-format (-format bin) för bootloaders och firmware, och konfigurationsfÀlt libs, flags.cc, flags.asm, flags.ld.
- Version 1.5.0 introducerar flera kÀllkataloger (source_dirs), explicita fillistor (source_files), inkluderings-/exkluderingsmönster, ett libs-fÀlt för lÀnkarbibliotek, .fzignore-filen och flernivÄsammanslagning av konfigurationsfiler.
KĂ€lla: opennet.ru
