Verëffentlechung vu ForgeZero 1.9.0, engem Build-Tool fir C an Assembler

ForgeZero 1.9.0 (fz), en Tool fir d'Erstelle vun engem Kommandozeilenprogramm fir Projeten, déi a C, C++ an Assemblersproochen (NASM, GAS, FASM) geschriwwe sinn, gouf erausbruecht. Fir de Basisgebrauch brauch den Tool kee Makefile oder aner Konfiguratiounsdateien. De Projetcode ass a Go geschriwwen a gëtt ënner der MIT-Lizenz lizenzéiert.

ForgeZero erkennt den Dateityp a wielt automatesch de passenden Backend aus. All Code-Datei gëtt an eng Objetdatei kompilléiert, dann op duebel global Symboler iwwer all Objeten iwwerpréift a mat enger eenzeger ausführbarer Datei verlinkt. Kompiléiert Dateien ginn nëmmen nach Ännerungen un den associéierte Code-Dateien am Cache gespäichert a rekompilléiert. Optional ass d'Verfollegung vun den Dateisystemännerungen an d'Rekompiléierung no Aktualiséierunge vun de Code-Dateien méiglech.

Déi ënnerstëtzte Compiler sinn GCC, Clang, G++ a Clang++; Assembler sinn NASM, GAS a FASM; Linker sinn LD, GCC a Clang; an den AR-Archiver gëtt ënnerstëtzt. Obligatoresch Warnungen fir C an C++ sinn: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". D'Sanitizer AddressSanitizer an UndefinedBehaviorSanitizer sinn standardméisseg aktivéiert (si kënnen mam Fändel -sanitize=false deaktivéiert ginn). Déi ënnerstëtzte Plattforme sinn: Linux, macOS, Windows (WSL2 an experimentell nativ).

Main Ännerungen an der Versioun 1.9.0:

  • "-target" Fändel bäigefüügt , wat Cross-Compilatioun fir all Architektur mat de passenden Präfix-Tools erméiglecht. fz bestëmmt automatesch d'Nimm vum Compiler, Linker an Archiver baséiert op dem spezifizéierten Identifizéierer (z.B. "arm-linux-gnueabihf-gcc"). All Standard GNU Zilplattforme ginn ënnerstëtzt, dorënner arm-linux-gnueabihf, aarch64-linux-gnu a riscv64-linux-gnu.
  • Ënnerstëtzung fir de Language Server Protocol (LSP) gouf implementéiert. De Fändel "-compile-commands" generéiert eng compile_commands.json (Kompilatiounsdatebank) Datei am Projetroot. D'Datei gëtt vun der Sprooch gelies. Serveren clangd a ccls, déi Autokomplettéierung, Codenavigatioun an Diagnostik an Editoren ubidden, déi LSP ënnerstëtzen (Neovim, VSCode, CLion, Emacs, etc.).
  • De Kommando "-update" fz späichert elo déi aktuell Binärdatei op /usr/local/bin/fz.old ier eng nei Versioun installéiert gëtt, sou datt Dir op déi viregt Versioun zréckgoe kënnt ouni se nei z'installéieren.
  • E Bug a Projeten mat verschiddene Verzeichnisser gouf behoben, wou Dateien mat identesche Basisnimm aus verschiddenen Ënnerverzeichnisser géigesäiteg d'Objektdateien iwwerschriwwen hunn. Objetdateinimm ginn elo op Basis vum komplette relative Wee zur Quelldatei generéiert.
  • Den interaktiven Modus "fz -shell" fir d'Erstelle vun eenzelne Dateien gouf implementéiert.
  • D'Testofdeckung gouf fir d'SplitCommand-, CmdSet- a CmdBuild-Kommandoen bäigefüügt. D'Testofdeckung fir de Linker-Pak ass vun 17 % op 60 % eropgaang, an d'Ofdeckung fir all Paketen huet 40 % iwwerschratt.
  • E CheckTool-Ersatzmechanismus fir Testszenarie mat fehlenden Toolchain-Komponenten gouf bäigefüügt.

Ännerungen am Verglach zu fréiere Verëffentlechungen:

  • Versioun 1.8.0 implementéiert d'Assembléierung vu statesche Bibliothéiken (-type static / -lib), garantéiert d'Eenzegaartegkeet vun den Objetdateinimm a Multi-Director-Projeten a korrigéiert Feeler am Assembléierungs-Ënnersystem am Zesummenhang mat der Duerchféierung vum ".." Wee.
  • Versioun 1.7.0 füügt parallel Kompilatioun (-j N, 0 — automatesch Detektioun vun der Unzuel vun de Kären), Ënnerstëtzung fir Linker-Skripter (-T) an Entrée-Punkt-Adressen (-Ttext), interaktiven Modus (fz -shell), explizit Auswiel vum Ausgabeformat (elf32, elf64, bin), Kompilatioun vu C++-Dateien (.cpp, .cc, .cxx) mat de selwechte strikte Warnsignaler wéi fir C bäi.
  • Versioun 1.6.0 füügt Projetinitialiséierung (fz -init, erstellt .fz.yaml, .fzignore, README.md), Ënnerstëtzung fir de Bin-Format (-format bin) fir Bootloader a Firmware, a Konfiguratiounsfelder libs, flags.cc, flags.asm, flags.ld bäi.
  • Versioun 1.5.0 stellt verschidde Quellverzeichnisser (source_dirs), explizit Dateilëschten (source_files), Include/Exclude-Musteren, e libs-Feld fir Linkerbibliothéiken, d'.fzignore-Datei an d'Fusioun vu Konfiguratiounsdateien op verschiddene Niveauen vir.

Source: opennet.ru

Kaaft zouverlässeg Hosting fir Site mat DDoS Schutz, VPS VDS Server 🔥 Kaaft zouverléissegt Websäithosting mat DDoS-Schutz, VPS VDS Server | ProHoster