Release van ForgeZero 1.9.0, een buildtool voor C en assembler

De release van ForgeZero 1.9.0 (fz) is gepubliceerd, een consoletool voor het bouwen van projecten in C, C++ en assembler (NASM, GAS, FASM). De tool vereist geen Makefile of andere configuratiebestanden voor basisgebruik. De code van het project is geschreven in Go en wordt verspreid onder de MIT-licentie.

ForgeZero bepaalt het bestandstype en selecteert automatisch de benodigde backend. Elk codebestand wordt samengesteld tot een objectbestand, waarna dubbele globale symbolen in alle objecten worden gecontroleerd en wordt samengevoegd in een enkel uitvoerbaar bestand. Gecompileerde bestanden worden gecached en worden alleen opnieuw opgebouwd na wijzigingen in de bijbehorende codebestanden. Optionele wijzigingsbewaking in het bestandssysteem is mogelijk, met herbouw na het bijwerken van codebestanden.

Ondersteunde compilers zijn GCC, Clang, G++, Clang++; assemblers NASM, GAS, FASM; linkers LD, GCC, Clang; archivers AR. Verplichte waarschuwingen voor C en C++: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Standaard zijn de sanitizers AddressSanitizer en UndefinedBehaviorSanitizer ingeschakeld (uitgeschakeld met de vlag -sanitize=false). Ondersteunde platforms zijn Linux, macOS, Windows (WSL2 en experimenteel native).

Belangrijkste wijzigingen in versie 1.9.0:

  • De vlag "-target" is toegevoegd, waarmee cross-compilatie voor willekeurige architecturen mogelijk is, mits de bijbehorende prefixtoolchain beschikbaar is. Fz bepaalt zelfstandig de namen van de compiler, linker en archiver op basis van de opgegeven identificatie (bijvoorbeeld, "arm-linux-gnueabihf-gcc"). Alle standaarddoelplatforms van GNU worden ondersteund, waaronder arm-linux-gnueabihf, aarch64-linux-gnu en riscv64-linux-gnu.
  • Ondersteuning voor het LSP (Language Server Protocol) is geïmplementeerd. De vlag "-compile-commands" genereert een bestand compile_commands.json (Compilation Database) in de hoofdmap van het project. Dit bestand wordt gelezen door taalprogramma's. servers clangd en ccls, waardoor autocompletie, navigatie door de code en diagnose in editors met LSP-ondersteuning (Neovim, VSCode, CLion, Emacs, enz.) mogelijk wordt.
  • De fz-opdracht "-update" slaat nu het huidige binaire bestand op in /usr/local/bin/fz.old voordat een nieuwe versie wordt geïnstalleerd, waardoor een terugval naar de vorige versie mogelijk is zonder herinstallatie.
  • Een fout is verholpen waarbij bestanden met dezelfde basisnamen uit verschillende submappen elkaar overschreven in multidirectoryprojecten. De namen van de objectbestanden worden nu gegenereerd op basis van het volledige relatieve pad naar het bronbestand.
  • De interactieve modus "fz -shell" is geïmplementeerd voor het bouwen van enkele bestanden.
  • Testdekking is toegevoegd voor de commando's SplitCommand, CmdSet en CmdBuild. De testdekking van het bundelpakket is verhoogd van 17% naar 60%, en de dekking van alle pakketten is meer dan 40% geworden.
  • Een vervangingsmechanisme voor CheckTool is toegevoegd voor het testen van scenario's met ontbrekende componenten in de toolchain.

Wijzigingen in eerdere versies:

  • In versie 1.8.0 is de bouw van statische bibliotheken (-type static / -lib) geïmplementeerd, is de uniciteit van objectbestandsnamen in multidirectoryprojecten gewaarborgd, en zijn fouten in de bouwsubsystemen met betrekking tot het vermijden van het pad ".." verholpen.
  • In versie 1.7.0 is parallelle compilatie toegevoegd (-j N, 0 - auto-detectie van het aantal kernen), ondersteuning voor linker-scripts (-T) en het adres van het ingangsnummer (-Ttext), interactieve modus (fz -shell), expliciete keuze van het uitvoerformaat (elf32, elf64, bin), en compilatie van C++-bestanden (.cpp, .cc, .cxx) met dezelfde strikte waarschuwingvlaggen als voor C.
  • In versie 1.6.0 zijn projectinitialisatie (fz -init, maakt .fz.yaml, .fzignore, README.md), ondersteuning voor het bin-formaat (-format bin) voor laders en firmware, configuratievelden libs, flags.cc, flags.asm, flags.ld toegevoegd.
  • In versie 1.5.0 zijn meerdere brondirectories (source_dirs), expliciete bestellijsten (source_files), include/exclude sjablonen, een libs-veld voor de bundelbibliotheek, een .fzignore-bestand, en meervoudige samenvoeging van configuratiebestanden geïmplementeerd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster