Lëshimi i sistemit të ndërtimit të Meson 1.3

Është publikuar lëshimi i sistemit të ndërtimit Meson 1.3.0, i cili përdoret për të ndërtuar projekte si X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dhe GTK. Kodi Meson është shkruar në Python dhe është i licencuar nën licencën Apache 2.0.

Qëllimi kryesor i zhvillimit të Meson është të sigurojë një proces montimi me shpejtësi të lartë të kombinuar me komoditetin dhe lehtësinë e përdorimit. Në vend të markës, ndërtimi përdor si parazgjedhje paketën e veglave Ninja, por mund të përdoren gjithashtu mbështetës të tjerë si xcode dhe VisualStudio. Sistemi ka një mbajtës të varësisë me shumë platforma të integruar që ju lejon të përdorni Meson për të ndërtuar paketa për shpërndarje. Rregullat e asamblesë vendosen në një gjuhë të thjeshtuar specifike për domenin, ato janë mirë të lexueshme dhe të kuptueshme për përdoruesin (sipas idesë së autorëve, zhvilluesi duhet të kalojë një minimum kohe për të shkruar rregullat).

Mbështet ndër-kompilimin dhe ndërtimin në Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS dhe Windows duke përdorur GCC, Clang, Visual Studio dhe përpilues të tjerë. Është e mundur të ndërtohen projekte në gjuhë të ndryshme programimi, duke përfshirë C, C++, Fortran, Java dhe Rust. Mbështetet një modalitet ndërtimi në rritje, në të cilin rindërtohen vetëm komponentët që lidhen drejtpërdrejt me ndryshimet e bëra që nga ndërtimi i fundit. Meson mund të përdoret për të gjeneruar ndërtime të përsëritshme, ku ekzekutimi i ndërtimit në mjedise të ndryshme rezulton në gjenerimin e ekzekutuesve plotësisht identikë.

Risitë kryesore të Meson 1.3:

  • U shtua opsioni "gabim: i vërtetë" në metodat e kontrollit të përpiluesit compiler.compiles(), compiler.links() dhe compiler.run(), i cili i trajton paralajmërimet e përpiluesit si gabime (mund të përdoret për të kontrolluar nëse kodi është ndërtuar pa paralajmërime ).
  • U shtua metoda has_define për të kontrolluar përkufizimin e simbolit nga paraprocesori.
  • Parametri macro_name është shtuar në funksionin configure_file(), duke shtuar mbrojtjen makro për lidhje të dyfishta përmes "#include" ("include guards"), i projektuar në stilin e makrove në gjuhën C (duke thjeshtuar krijimin e skedarëve të konfigurimit me dinamikë emrat makro).
  • Një format i ri i daljes është shtuar në configure_file() - JSON ("output_format: json").
  • U shtua aftësia për të përdorur listat e vlerave në parametrat c_std dhe cpp_std (për shembull, "opsionet_default: 'c_std=gnu11,c11′').
  • Në modulet që përdorin CustomTarget për të përpunuar skedarët, është shtuar aftësia për të personalizuar mesazhet që dalin nga programi ninja.
  • Build_target "jar" është zhvlerësuar dhe thirrja "jar()" rekomandohet në vend të saj.
  • Parametri 'env' është shtuar në metodën generator.process() për të vendosur variablin e mjedisit përmes së cilës gjeneratori do të përpunojë hyrjen.
  • Kur specifikoni emrat e synimeve të ndërtimit të lidhur me ekzekutuesit, prapashtesa të tilla si "ekzekutueshme('foo', 'main.c', prapashtesa_name: 'bar')" lejohen të gjenerojnë ekzekutues shtesë në të njëjtën direktori.
  • U shtua parametri “vs_module_defs” në funksionin exectuable() për të përdorur një skedar def që përcakton listën e funksioneve të kaluara në shared_module().
  • U shtua parametri 'default_options' në funksionin find_program() për të vendosur opsionet e paracaktuara për nënprojektin e rikthimit.
  • U shtua metoda fs.relative_to(), e cila kthen shtegun relative për argumentin e parë, në lidhje me të dytin, nëse shtegu i parë ekziston. Për shembull, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Parametri follow_symlinks është shtuar në funksionet install_data(), install_headers() dhe install_subdir(); kur vendoset, ndiqen lidhjet simbolike.
  • Një parametër "fill" është shtuar në metodën int.to_string() për të mbushur në mënyrë graduale vargun me zerat kryesore. Për shembull, thirrja e mesazhit(n.to_string(fill: 3)) për n=4 do të prodhojë vargun "004".
  • U shtua një objektiv i ri, clang-tidy-fix, që specifikon ekzekutimin e programit clang-tidy me flamurin "-fix".
  • Aftësia për të specifikuar prapashtesën (TARGET_SUFFIX) të objektivit të montimit ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) është shtuar në komandën e përpilimit.
  • U shtua ndryshorja e mjedisit MESON_PACKAGE_CACHE_DIR për të anashkaluar shtegun për në cache të paketave (nënprojektet/cache e paketës), për shembull, duke ju lejuar të përdorni një memorie të përbashkët në disa projekte.
  • U shtua komanda "meson setup --clearcache" për të pastruar cache-in e vazhdueshëm.
  • Mbështetja për fjalën kyçe "të nevojshme" është shtuar në të gjitha metodat e kontrollit të përpiluesit "has_*", për shembull, në vend të "assert(cc.has_function('some_function'))" tani mund të specifikoni "cc.has_function('some_function' , kërkohet: e vërtetë)”.
  • Një fjalë kyçe e re, rust_abi, është shtuar në funksionet shared_library(), static_library(), library() dhe shared_module(), e cila duhet të përdoret në vend të rust_crate_type të vjetëruar.

Burimi: opennet.ru

Shto një koment