ĂshtĂ« publikuar lĂ«shimi i sistemit tĂ« ndĂ«rtimit Meson 1.3.0, i cili pĂ«rdoret pĂ«r ndĂ«rtimin e projekteve si X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dhe GTK. Kodi i Meson Ă«shtĂ« shkruar nĂ« gjuhĂ«n Python dhe ofrohet nĂ«n licencĂ«n Apache 2.0.
Qëllimi kryesor i zhvillimit të Meson është të sigurojë shpejtësi të lartë gjatë procesit të ndërtimit, duke ruajtur gjithashtu lehtësinë dhe thjeshtësinë e përdorimit. Përdorimi i mjetit Ninja për ndërtimin e përparësishëm është vendosur në vend të utilitarit make, por mund të përdoren edhe backend të tjera si xcode dhe VisualStudio. Sistemi ka një menaxher të variablave multikontinentale të ndjesive që lejon përdorimin e Meson për ndërtimin e pakove për shpërndarjet. Rregullat e ndërtimit përcaktohen në një gjuhë të thjeshtuar të orientuar nga objekti, që dallohet për lehtësinë e leximit dhe është e kuptueshme për përdorruesin (sipas mendimit të autorëve, zhvilluesi duhet të harxhojë sa më pak kohë në shkruajtjen e rregullave).
Kros-kompilimi dhe ndĂ«rtimi janĂ« tĂ« mbĂ«shtetur nĂ« Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS dhe Windows duke pĂ«rdorur GCC, Clang, Visual Studio dhe kompilatorĂ« tĂ« tjerĂ«. ĂshtĂ« e mundur ndĂ«rtimi i projekteve nĂ« gjuhĂ« tĂ« ndryshme programuese, pĂ«rfshirĂ« C, C++, Fortran, Java dhe Rust. MbĂ«shtetet njĂ« modalitet ndĂ«rtimi inkremental, ku rindĂ«rtohen vetĂ«m komponentĂ«t qĂ« janĂ« lidhur drejtpĂ«rdrejt me ndryshimet e bĂ«rĂ« qĂ« nga ndĂ«rtimi i fundit. Meson mund tĂ« pĂ«rdoret pĂ«r tĂ« formuar ndĂ«rtime tĂ« ripĂ«rsĂ«ritshme, ku ekzekutimi i ndĂ«rtimit nĂ« mjedise tĂ« ndryshme çon nĂ« gjenerimin e skedarĂ«ve ekzekutiv tĂ« plotĂ«sisht identik.
Përmirësimet kryesore në Meson 1.3:
- Në metodat e verifikimit të kompilatorit compiler.compiles(), compiler.links() dhe compiler.run() është shtuar opsioni "werror: true", i cili e trajton paralajmërimet e kompilatorit si gabime (mund të përdoret për të verifikuar nëse kodi ndërtimit pa paralajmërime).
- ĂshtĂ« shtuar metoda has_define pĂ«r verifikimin e definimit tĂ« simbolit nga preprocessori.
- Në funksionin configure_file() është shtuar parametri macro_name, i cili shton mbrojtje makro për përfshirjen e dyfishtë përmes "#include" ("include guards"), e formuar në stilin e makrove në gjuhën C (thjeshton krijimin e skedave configure me emra makro dinamikë).
- NĂ« configure_file() Ă«shtĂ« shtuar njĂ« format i ri dalĂ«s â JSON ("output_format: json").
- Në parametrat c_std dhe cpp_std është shtuar mundësia e përdorimit të listave të vlerave (për shembull, "default_options: 'c_std=gnu11,c11' ").
- Në modulat që përdorin CustomTarget për përpunimin e skedave, është shtuar mundësia për të personalizuar mesazhet që jepen nga utiliteti ninja.
- ĂshtĂ« shpallur e vjetĂ«ruar qĂ«llimi i ndĂ«rtimit (build_target) "jar", pĂ«r tĂ« cilin rekomandohet tĂ« pĂ«rdoret thirrja "jar()".
- Në metodën generator.process() është shtuar parametri 'env' për të vendosur një variabël mjedisi përmes së cilës gjeneratori do të përpunojë hidhjen.
- Kur caktohen emrat e qëllimeve të ndërtimit të lidhura me skedarët ekzekutivë, është lejuar caktimi i sufixeve, për shembull "exectuable('foo', 'main.c', name_suffix: 'bar')", për të gjeneruar skedarë ekzekutivë shtesë në të njëjtin katalog.
- Në funksionin exectuable() është shtuar parametri "vs_module_defs" për përdorimin e skedës def, e cila përcakton listën e funksioneve që kalohen në shared_module().
- Në funksionin find_program() është shtuar parametri 'default_options' për caktimin e opsioneve të parazgjedhura për projektin rezervë (fallback).
- ĂshtĂ« shtuar metoda fs.relative_to(), e cila kthen njĂ« rrugĂ« relative pĂ«r argumentin e parĂ«, nĂ« raport me tĂ« dytin, nĂ«se rruga e parĂ« ekziston. PĂ«r shembull, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
- Në funksionet install_data(), install_headers() dhe install_subdir() është shtuar parametri follow_symlinks, i cili, kur është i vendosur, siguron ndjekjen e lidhjeve simbolike.
- Në metodën int.to_string() është shtuar parametri "fill" për mbushjen e shtesë të zinxhirit me zero të parët. Për shembull, thirrja message(n.to_string(fill: 3)) për n=4 do të formojë zinxhirin "004".
- ĂshtĂ« shtuar qĂ«llimi i ri clang-tidy-fix, i cili pĂ«rkufizon ekzekutimin e utilitetit clang-tidy me flagun "-fix".
- Në komandën compile është shtuar mundësia e caktimit të sufixit (TARGET_SUFFIX) të qëllimit të ndërtimit ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]).
- ĂshtĂ« shtuar variabla e ambientit MESON_PACKAGE_CACHE_DIR pĂ«r tĂ« tejkaluar rrugĂ«n e cache-it tĂ« paketimeve (subprojects/packagecache), pĂ«r shembull, e mundĂ«son pĂ«rdorimin e njĂ« cache tĂ« pĂ«rbashkĂ«t nĂ« disa projekte.
- ĂshtĂ« shtuar komanda "meson setup âclearcache" pĂ«r tĂ« pastruar cache-in e pĂ«rhershĂ«m.
- Në të gjitha metodat e verifikimit të kompilatorit "has_*" është shtuar mbështetje për fjalinë çelës të "required", për shembull, në vend të "assert(cc.has_function('some_function'))" tani mund të thuhet "cc.has_function('some_function', required: true)".
- Në funksionet shared_library(), static_library(), library() dhe shared_module() është shtuar një fjalë të re kyçe rust_abi, e cila duhet të përdoret në vend të rust_crate_type të vjetruar.
Burimi: opennet.ru
