Llançament de ForgeZero 1.9.0, una eina de compilació per a C i assembler

S'ha publicat ForgeZero 1.9.0 (fz), una eina de compilació de línia d'ordres per a projectes escrits en C, C++ i llenguatges d'assemblador (NASM, GAS, FASM). L'eina no requereix un Makefile ni altres fitxers de configuració per a un ús bàsic. El codi del projecte està escrit en Go i té la llicència MIT.

ForgeZero detecta el tipus de fitxer i selecciona automàticament el backend adequat. Cada fitxer de codi es compila en un fitxer d'objecte, després es comprova si hi ha símbols globals duplicats a tots els objectes i s'enllaça en un únic fitxer executable. Els fitxers compilats s'emmagatzemen a la memòria cau i es tornen a compilar només després que es facin canvis als fitxers de codi associats. Opcionalment, és possible el seguiment dels canvis del sistema de fitxers i la recompilació després de les actualitzacions dels fitxers de codi.

Els compiladors compatibles són GCC, Clang, G++ i Clang++; els assembladors són NASM, GAS i FASM; els enllaçadors són LD, GCC i Clang; i l'arxivador AR és compatible. Els avisos obligatoris per a C i C++ són: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Els sanejadors AddressSanitizer i UndefinedBehaviorSanitizer estan habilitats per defecte (es poden desactivar amb el senyalador -sanitize=false). Les plataformes compatibles són: Linux, macOS, Windows (WSL2 i experimentalment natiu).

Principals canvis a la versió 1.9.0:

  • S'ha afegit el senyalador "-target" , que permet la compilació creuada per a qualsevol arquitectura amb les eines de prefix adequades. fz determina automàticament els noms del compilador, l'enllaçador i l'arxivador basant-se en l'identificador especificat (per exemple, "arm-linux-gnueabihf-gcc"). S'admeten totes les plataformes de destinació GNU estàndard, incloent-hi arm-linux-gnueabihf, aarch64-linux-gnu i riscv64-linux-gnu.
  • S'ha implementat la compatibilitat amb el protocol de servidor d'idiomes (LSP). El senyalador "-compile-commands" genera un fitxer compile_commands.json (base de dades de compilació) a l'arrel del projecte. El fitxer és llegit per l'idioma. servidors clangd i ccls, que proporcionen autocompleció, navegació de codi i diagnòstics en editors que admeten LSP (Neovim, VSCode, CLion, Emacs, etc.).
  • L'ordre fz "-update" ara desa el binari actual a /usr/local/bin/fz.old abans d'instal·lar una nova versió, cosa que permet tornar a la versió anterior sense haver de reinstal·lar-la.
  • S'ha corregit un error en projectes de diversos directoris on els fitxers amb noms base idèntics de diferents subdirectoris sobreescrivien els fitxers d'objecte dels altres. Els noms dels fitxers d'objecte ara es generen en funció de la ruta relativa completa al fitxer font.
  • S'ha implementat el mode interactiu "fz -shell" per a la creació de fitxers individuals.
  • S'ha afegit cobertura de prova per a les ordres SplitCommand, CmdSet i CmdBuild. La cobertura de prova per al paquet d'enllaç ha augmentat del 17% al 60% i la cobertura per a tots els paquets ha superat el 40%.
  • S'ha afegit un mecanisme de substitució de CheckTool per provar escenaris amb components de la cadena d'eines que falten.

Canvis respecte a versions anteriors:

  • La versió 1.8.0 implementa l'assemblatge de biblioteques estàtiques (-type static / -lib), garanteix la singularitat dels noms de fitxers d'objecte en projectes multidirector i corregeix errors al subsistema d'assemblatge relacionats amb el recorregut de la ruta ".."
  • La versió 1.7.0 afegeix compilació paral·lela (-j N, 0 — autodetecció del nombre de nuclis), compatibilitat amb scripts d'enllaç (-T) i adreces de punt d'entrada (-Ttext), mode interactiu (fz -shell), selecció explícita del format de sortida (elf32, elf64, bin), compilació de fitxers C++ (.cpp, .cc, .cxx) amb els mateixos indicadors d'advertència estrictes que per a C.
  • La versió 1.6.0 afegeix la inicialització de projectes (fz -init, crea .fz.yaml, .fzignore, README.md), la compatibilitat amb el format bin (-format bin) per als carregadors d'arrencada i el firmware, i els camps de configuració libs, flags.cc, flags.asm, flags.ld.
  • La versió 1.5.0 introdueix diversos directoris font (source_dirs), llistes de fitxers explícits (source_files), patrons d'inclusió/exclusió, un camp libs per a biblioteques d'enllaços, el fitxer .fzignore i la fusió multinivell de fitxers de configuració.

Font: opennet.ru

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster