Publikigo de ForgeZero 1.9.0, konstruilo por C kaj asemblero

ForgeZero 1.9.0 (fz), komandlinia konstruilo por projektoj skribitaj en C, C++, kaj asemblaj lingvoj (NASM, GAS, FASM), estis publikigita. La ilo ne postulas Makefile aŭ aliajn agordodosierojn por baza uzo. La projekta kodo estas skribita en Go kaj estas licencita sub la MIT-licenco.

ForgeZero detektas la dosiertipon kaj aŭtomate elektas la taŭgan servilon. Ĉiu koddosiero estas kompilita en objektdosieron, poste kontrolata por duoblaj tutmondaj simboloj tra ĉiuj objektoj kaj ligita en ununuran efektivigeblan dosieron. Kompilitaj dosieroj estas konservitaj en kaŝmemoro kaj rekompilitaj nur post kiam ŝanĝoj estas faritaj al la asociitaj koddosieroj. Laŭvole, spurado de ŝanĝoj en la dosiersistemo kaj rekompilo eblas post ĝisdatigoj de la koddosieroj.

La subtenataj kompililoj estas GCC, Clang, G++, kaj Clang++; asembleroj estas NASM, GAS, kaj FASM; ligiloj estas LD, GCC, kaj Clang; kaj la AR-arkivilo estas subtenata. Devigaj avertoj por C kaj C++ estas: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". La desinfektigiloj AddressSanitizer kaj UndefinedBehaviorSanitizer estas ebligitaj defaŭlte (ili povas esti malebligitaj per la flago -sanitize=false). La subtenataj platformoj estas: Linux, macOS, Windows (WSL2 kaj eksperimente denaske).

Ĉefaj ŝanĝoj en versio 1.9.0:

  • Aldonita flago "-target" , kiu ebligas kruc-kompilon por iu ajn arkitekturo per la taŭgaj prefiksaj iloj. fz aŭtomate determinas la nomojn de la kompililo, ligilo kaj arkivilo surbaze de la specifita identigilo (ekz., "arm-linux-gnueabihf-gcc"). Ĉiuj normaj GNU-celplatformoj estas subtenataj, inkluzive de arm-linux-gnueabihf, aarch64-linux-gnu kaj riscv64-linux-gnu.
  • Subteno por la Lingva Servila Protokolo (LSP) estas efektivigita. La flago "-compile-commands" generas dosieron compile_commands.json (Kompila Datumbazo) en la projekta radiko. La dosiero estas legata de la lingvo. serviloj clangd kaj ccls, provizante aŭtomatan kompletigon, kodnavigadon kaj diagnozojn en redaktiloj kiuj subtenas LSP (Neovim, VSCode, CLion, Emacs, ktp.).
  • La komando fz "-update" nun konservas la nunan duumdosieron en /usr/local/bin/fz.old antaŭ ol instali novan version, permesante al vi reveni al la antaŭa versio sen reinstali.
  • Riparis cimon en plurdosierujaj projektoj, kie dosieroj kun identaj bazaj nomoj el malsamaj subdosierujoj anstataŭigus la objektajn dosierojn de unu la alian. Objektaj dosiernomoj nun estas generitaj surbaze de la plena relativa vojo al la fontdosiero.
  • Implementis interagan reĝimon "fz -shell" por konstrui unuopajn dosierojn.
  • Testa kovro estis aldonita por la komandoj SplitCommand, CmdSet, kaj CmdBuild. Testa kovro por la ligilo-pakaĵo pliiĝis de 17% al 60%, kaj kovro por ĉiuj pakaĵoj superis 40%.
  • Aldonis anstataŭigan mekanismon de CheckTool por testi scenarojn kun mankantaj ilĉenaj komponantoj.

Ŝanĝoj kompare kun antaŭaj eldonoj:

  • Versio 1.8.0 efektivigas la kunmetadon de statikaj bibliotekoj (-tipa static / -lib), certigas la unikecon de objektaj dosiernomoj en plurdirektoraj projektoj, kaj korektas erarojn en la kunmeta subsistemo rilataj al la trairo de la ".." vojo.
  • Versio 1.7.0 aldonas paralelan kompilon (-j N, 0 — aŭtomata detekto de la nombro de kernoj), subtenon por ligilaj skriptoj (-T) kaj enirpunktaj adresoj (-Ttext), interagan reĝimon (fz -shell), eksplicitan elekton de elira formato (elf32, elf64, bin), kompilon de C++ dosieroj (.cpp, .cc, .cxx) kun la samaj striktaj avertaj flagoj kiel por C.
  • Versio 1.6.0 aldonas projektan inicialigon (fz -init, kreas .fz.yaml, .fzignore, README.md), subtenon por bin-formato (-format bin) por startigiloj kaj firmvaro, kaj agordokampojn libs, flags.cc, flags.asm, flags.ld.
  • Versio 1.5.0 enkondukas plurajn fontdosierujojn (source_dirs), eksplicitajn dosierlistojn (source_files), inkluzivi/ekskludi ŝablonojn, kampon "libs" por ligilbibliotekoj, la dosieron .fzignore, kaj plurnivelan kunfandon de agordodosieroj.

fonto: opennet.ru

Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster