Lansman ForgeZero 1.9.0, yon zouti konstriksyon pou C ak asanbleur

ForgeZero 1.9.0 (fz), yon zouti konstriksyon liy kòmand pou pwojè ki ekri nan C, C++, ak langaj asanble (NASM, GAS, FASM), te pibliye. Zouti a pa bezwen yon Makefile oswa lòt fichye konfigirasyon pou itilizasyon debaz. Kòd pwojè a ekri nan Go epi li anba lisans MIT.

ForgeZero detekte kalite fichye a epi li chwazi otomatikman backend ki apwopriye a. Chak fichye kòd konpile nan yon fichye objè, answit yo tcheke pou wè si gen senbòl global ki double atravè tout objè yo epi yo lye nan yon sèl fichye ekzekisyon. Fichye konpile yo estoke nan kach epi yo rekonpile sèlman apre yo fin fè chanjman nan fichye kòd ki asosye yo. Opsyonèlman, swiv chanjman sistèm fichye ak rekonpilasyon posib apre mizajou fichye kòd yo.

Konpilatè ki sipòte yo se GCC, Clang, G++, ak Clang++; asanblè yo se NASM, GAS, ak FASM; konektè koneksyon yo se LD, GCC, ak Clang; epi achivè AR a sipòte. Avètisman obligatwa pou C ak C++ yo se: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Dezenfektan AddressSanitizer ak UndefinedBehaviorSanitizer yo aktive pa default (yo ka enfim ak drapo -sanitize=false la). Platfòm ki sipòte yo se: Linux, macOS, Windows (WSL2 ak natif natal eksperimantal).

Chanjman prensipal yo nan vèsyon 1.9.0:

  • Te ajoute drapo "-target" la , ki pèmèt konpilasyon kwaze pou nenpòt achitekti ak zouti prefiks ki apwopriye yo. fz otomatikman detèmine non konpilatè a, lyezon an, ak achivè a ki baze sou idantifikatè espesifye a (pa egzanp, "arm-linux-gnueabihf-gcc"). Tout platfòm sib GNU estanda yo sipòte, tankou arm-linux-gnueabihf, aarch64-linux-gnu, ak riscv64-linux-gnu.
  • Yo mete sipò pou Pwotokòl Sèvè Lang (LSP) la an plas. Drapo "-compile-commands" la jenere yon fichye compile_commands.json (Baz Done Konpilasyon) nan rasin pwojè a. Lang lan li fichye a. sèvè yo clangd ak ccls, ki bay oto-konpleksyon, navigasyon kòd, ak dyagnostik nan editè ki sipòte LSP (Neovim, VSCode, CLion, Emacs, elatriye).
  • Kòmand "-update" fz la kounye a sove binè aktyèl la nan /usr/local/bin/fz.old anvan li enstale yon nouvo vèsyon, sa ki pèmèt ou retounen nan vèsyon anvan an san ou pa bezwen reenstale li.
  • Yo korije yon pwoblèm nan pwojè plizyè anyè kote fichye ki gen non debaz idantik ki soti nan diferan sou-anyè ta ranplase fichye objè youn lòt. Kounye a, non fichye objè yo pwodui dapre chemen relatif konplè ki mennen nan fichye sous la.
  • Aplike mòd entèaktif "fz -shell" pou konstwi dosye endividyèl.
  • Yo ajoute pwoteksyon tès pou kòmand SplitCommand, CmdSet, ak CmdBuild yo. Pwoteksyon tès pou pake linker la ogmante soti nan 17% pou rive nan 60%, epi pwoteksyon pou tout pake yo depase 40%.
  • Te ajoute yon mekanis ranplasman CheckTool pou teste senaryo ki gen konpozan chèn zouti ki manke.

Chanjman depi vèsyon anvan yo:

  • Vèsyon 1.8.0 la aplike asanblaj bibliyotèk estatik yo (-type static / -lib), li asire singularite non fichye objè yo nan pwojè milti-direktè yo, epi li korije erè nan sousistèm asanblaj ki gen rapò ak travèse chemen ".." la.
  • Vèsyon 1.7.0 ajoute konpilasyon paralèl (-j N, 0 — deteksyon otomatik kantite nwayo), sipò pou script linker (-T) ak adrès pwen antre (-Ttext), mòd entèaktif (fz -shell), seleksyon eksplisit fòma pwodiksyon (elf32, elf64, bin), konpilasyon fichye C++ (.cpp, .cc, .cxx) ak menm drapo avètisman strik yo tankou pou C.
  • Vèsyon 1.6.0 ajoute inisyalizasyon pwojè (fz -init, kreye .fz.yaml, .fzignore, README.md), sipò fòma bin (-format bin) pou bootloader ak firmwèr, ak chan konfigirasyon libs, flags.cc, flags.asm, flags.ld.
  • Vèsyon 1.5.0 prezante plizyè anyè sous (source_dirs), lis fichye eksplisit (source_files), modèl enklizyon/eksklizyon, yon chan lib pou bibliyotèk lyen, fichye .fzignore a, ak fizyon milti-nivo fichye konfigirasyon yo.

Sous: opennet.ru

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster