ForgeZero 1.9.0 (fz), C, C++ eta muntaketa lengoaietan (NASM, GAS, FASM) idatzitako proiektuetarako komando-lerroko eraikuntza tresna bat, kaleratu da. Tresnak ez du Makefile edo bestelako konfigurazio fitxategirik behar oinarrizko erabilerarako. Proiektuaren kodea Go-n idatzita dago eta MIT lizentziapean dago.
ForgeZero-k fitxategi mota detektatzen du eta automatikoki hautatzen du backend egokia. Kode fitxategi bakoitza objektu fitxategi batean konpilatzen da, ondoren objektu guztietan ikur global bikoiztuak dauden egiaztatzen da eta fitxategi exekutagarri bakar batean lotzen da. Konpilatutako fitxategiak cachean gordetzen dira eta berriro konpilatzen dira lotutako kode fitxategietan aldaketak egin ondoren bakarrik. Aukeran, fitxategi sistemaren aldaketen jarraipena eta berriro konpilazioa posible dira kode fitxategiak eguneratu ondoren.
Konpiladore onartuak GCC, Clang, G++ eta Clang++ dira; muntatzaileak NASM, GAS eta FASM dira; estekatzaileak LD, GCC eta Clang dira; eta AR artxibatzailea onartua da. C eta C++-rako derrigorrezko abisuak hauek dira: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". AddressSanitizer eta UndefinedBehaviorSanitizer garbitzaileak lehenespenez gaituta daude (-sanitize=false banderarekin desgaitu daitezke). Plataforma onartuak hauek dira: Linux, macOS, Windows (WSL2 eta esperimentalki natiboa).
Aldaketa nagusiak 1.9.0 bertsioan:
- "-target" bandera gehitu da , edozein arkitekturarako gurutzaketa-konpilazioa ahalbidetzen duena aurrizki-tresna egokiekin. fz-k automatikoki zehazten ditu konpilatzailearen, estekatzailearen eta artxibatzailearen izenak zehaztutako identifikatzailearen arabera (adibidez, "arm-linux-gnueabihf-gcc"). GNU helburu-plataforma estandar guztiak onartzen dira, besteak beste, arm-linux-gnueabihf, aarch64-linux-gnu eta riscv64-linux-gnu.
- Hizkuntza Zerbitzari Protokoloaren (LSP) euskarria ezarri da. "-compile-commands" banderak compile_commands.json (Konpilazio Datu-basea) fitxategi bat sortzen du proiektuaren erroan. Fitxategia hizkuntzak irakurtzen du. zerbitzariak clangd eta ccls-ek autoosatze, kode nabigazio eta diagnostikoak eskaintzen dituzte LSP onartzen duten editoreetan (Neovim, VSCode, CLion, Emacs, etab.).
- fz "-update" komandoak uneko binarioa /usr/local/bin/fz.old fitxategian gordetzen du bertsio berri bat instalatu aurretik, aurreko bertsiora itzultzeko aukera emanez berriro instalatu gabe.
- Konpondu da direktorio anitzeko proiektuetan akats bat, non azpidirektorio desberdinetako oinarrizko izen berdinak zituzten fitxategiek elkarren objektu fitxategiak gainidazten zituzten. Objektu fitxategien izenak orain iturburu fitxategirako bide erlatibo osoaren arabera sortzen dira.
- "fz -shell" modu interaktiboa inplementatu da fitxategi bakarrak eraikitzeko.
- SplitCommand, CmdSet eta CmdBuild komandoetarako proba-estaldura gehitu da. Estekatze-paketearen proba-estaldura % 17tik % 60ra igo da, eta pakete guztien estaldura % 40tik gorakoa da.
- Tresna-katearen osagaiak falta diren eszenarioak probatzeko CheckTool ordezkapen mekanismo bat gehitu da.
Aurreko bertsioetatik aldaketak:
- 1.8.0 bertsioak liburutegi estatikoen muntaketa inplementatzen du (-motako static / -lib), objektu-fitxategien izenen bakartasuna bermatzen du zuzendari anitzeko proiektuetan, eta ".." bidearen zeharkaldiarekin lotutako muntaketa-azpisistemako akatsak konpontzen ditu.
- 1.7.0 bertsioak konpilazio paraleloa (-j N, 0 — nukleo kopuruaren autodetekzioa), estekatzaileen script-en euskarria (-T) eta sarrera puntuen helbideen (-Ttext), modu interaktiboa (fz -shell), irteera formatuaren hautaketa esplizitua (elf32, elf64, bin), C++ fitxategien konpilazioa (.cpp, .cc, .cxx) C-rako abisu bandera zorrotz berberekin gehitzen ditu.
- 1.6.0 bertsioak proiektuaren hasieraketa (fz -init, .fz.yaml, .fzignore, README.md sortzen ditu), bin formatuaren euskarria (-format bin) abioko kargatzaileentzat eta firmwarearentzat, eta libs, flags.cc, flags.asm, flags.ld konfigurazio eremuak gehitzen ditu.
- 1.5.0 bertsioak hainbat iturburu-direktorio (source_dirs), fitxategi-zerrenda esplizituak (source_files), inklusio/baztertze ereduak, estekatzaile-liburutegientzako libs eremu bat, .fzignore fitxategia eta konfigurazio-fitxategien maila anitzeko bat-egitea aurkezten ditu.
Iturria: opennet.ru
