ForgeZero 1.9.0 (fz), instrumentum ad construendum per lineam mandatorum pro inceptis scriptis in lingua C, C++, et linguis assembly (NASM, GAS, FASM), iam emissum est. Instrumentum non requirit Makefile aut alia documenta configurationis ad usum fundamentalem. Codex incepti in lingua Go scriptus est et sub licentia MIT licentiatur.
ForgeZero genus fasciculi detegit et aptum backend sponte eligit. Quisque fasciculus codicis in fasciculum obiecti compilatur, deinde pro symbolis globalibus duplicatis per omnia obiecta examinatur et in unum fasciculum executabilem coniungitur. Fasciculi compilati in cella reconduntur et recompilantur tantum postquam mutationes fasciculis codicis conexis factae sunt. Optione, mutationes systematis fasciculorum indagare et recompilare licet post renovationes fasciculorum codicis.
Compilatores sustentati sunt GCC, Clang, G++, et Clang++; compilatores sunt NASM, GAS, et FASM; nexus sunt LD, GCC, et Clang; et archivator AR sustentatur. Monita necessaria pro C et C++ sunt: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Purgatores AddressSanitizer et UndefinedBehaviorSanitizer per default activantur (debilitari possunt cum vexillo -sanitize=false). Platae sustentatae sunt: Linux, macOS, Windows (WSL2 et experimentaliter nativum).
Praecipuae mutationes in versione 1.9.0:
- Vexillum "-target" additum est , quae compilationem inter se permittit pro quavis architectura cum instrumentis praefixorum congruentibus. `fz` nomina compilatoris, nexatoris, et archivatoris automatice determinat secundum identificatorem specificatum (e.g., "arm-linux-gnueabihf-gcc"). Omnia systemata programmatum GNU communia sustinentur, inter quae `arm-linux-gnueabihf`, `aarch64-linux-gnu`, et `riscv64-linux-gnu`.
- Subsidium pro Protocollo Servi Linguarum (LSP) iam implementatum est. Vexillum "-compile-commands" fasciculum compile_commands.json (Basis Datorum Compilationis) in radice propositi generat. Fasciculus a lingua legitur. servers clangd et ccls, autocompletionem, navigationem codicis, et diagnostica in editoribus qui LSP sustinent (Neovim, VSCode, CLion, Emacs, etc.) praebentes.
- Mandatum `fz` "-update" nunc binarium praesens apud `/usr/local/bin/fz.old` servat antequam novam versionem instituas, quod tibi permittit ad versionem priorem redire sine reinstallatione.
- Correctus est error in proiectis multidirectorialibus ubi fasciculi cum nominibus fundamentalibus identicis ex subdirectoriis diversis fasciculos objectorum aliorum superscribebant. Nomina fasciculorum objectorum nunc generantur secundum viam relativam plenam ad fasciculum fontem.
- Modus interactivus "fz -shell" ad singula fascicula construenda implementatus est.
- Operimentum probationum pro mandatis SplitCommand, CmdSet, et CmdBuild additum est. Operimentum probationum pro fasciculo nexoris a 17% ad 60% auctum est, et operimentum omnium fasciculorum 40% superavit.
- Mechanismus substitutionis CheckTool additus est ad probandas condiciones cum componentibus instrumentorum desentibus.
Mutationes ab editionibus prioribus:
- Versio 1.8.0 aggregationem bibliothecarum staticarum (-type static / -lib) efficit, singularitatem nominum fasciculorum obiecti in proiectis multidirectoriis curat, et errores in subsystemate aggregationis ad peragrationem viae ".." pertinentes emendat.
- Versio 1.7.0 addit compilationem parallelam (-j N, 0 — autodetectionem numeri nucleorum), auxilium pro scripturis nexuum (-T) et inscriptionibus punctorum ingressus (-Ttext), modum interactivum (fz -shell), selectionem explicitam formae exitus (elf32, elf64, bin), compilationem fasciculorum C++ (.cpp, .cc, .cxx) cum eisdem signis admonitionis strictis ac pro C.
- Versio 1.6.0 initiationem proiecti addit (fz -init, creat .fz.yaml, .fzignore, README.md), subsidium formae binae (-format bin) pro programmatibus initialibus et firmware, et campos configurationis "libs", "flags.cc", "flags.asm", et "flags.ld".
- Versio 1.5.0 plura directoria fontium (source_dirs), indices fasciculorum explicitos (source_files), exempla includendi/excludendi, campum "libs" pro bibliothecis nexuum, fasciculum .fzignore, et coniunctionem multi-livelli fasciculorum configurationis introducit.
Source: opennet.ru
