Meson 1.3 montaj sisteminin buraxılışı

X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME və GTK kimi layihələrin qurulması üçün istifadə edilən Meson 1.3.0 qurma sisteminin buraxılışı nəşr olundu. Meson kodu Python-da yazılmışdır və Apache 2.0 lisenziyası altında lisenziyalıdır.

Meson-un əsas inkişaf məqsədi rahatlıq və istifadə rahatlığı ilə birlikdə yüksək sürətli montaj prosesini təmin etməkdir. Yaratmaq əvəzinə, quruluş standart olaraq Ninja alət dəstindən istifadə edir, lakin xcode və VisualStudio kimi digər arxa hissələrdən də istifadə edilə bilər. Sistem, paylamalar üçün paketlər yaratmaq üçün Meson-dan istifadə etməyə imkan verən daxili çox platformalı asılılıq işləyicisinə malikdir. Montaj qaydaları sadələşdirilmiş domenə xas dildə qurulur, onlar yaxşı oxunaqlıdır və istifadəçi üçün başa düşüləndir (müəlliflərin fikrinə görə, tərtibatçı qaydaların yazılmasına minimum vaxt sərf etməlidir).

Çarpaz tərtib və montaj dəstəklənir. Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows GCC, Clang, Visual Studio və digər kompilyatorlardan istifadə etməklə. Layihələr C, C++, Fortran, Java və Rust daxil olmaqla müxtəlif proqramlaşdırma dillərində qurula bilər. Artımlı qurma rejimi dəstəklənir ki, bu da yalnız əvvəlki qurmadan bəri edilən dəyişikliklərlə birbaşa əlaqəli komponentləri yenidən qurur. Meson təkrarlanan qurmaların yaradılması üçün istifadə edilə bilər, burada qurmanın fərqli mühitlərdə işə salınması tamamilə eyni icra edilə bilən faylların yaradılmasına səbəb olur.

Meson 1.3-ın əsas yenilikləri:

  • Compiler yoxlama üsulları compiler.compiles(), compiler.links() və compiler.run() indi "səhv: doğru" seçiminə malikdir, hansı ki, kompilyator xəbərdarlığını xəta kimi qəbul edir (bu, kodun xəbərdarlıqsız qurulduğunu yoxlamaq üçün istifadə edilə bilər).
  • Simvolun preprosessor tərəfindən müəyyən edilib-edilmədiyini yoxlamaq üçün has_define metodu əlavə edilib.
  • configure_file() funksiyası indi C makroları üslubunda formatlaşdırılmış (bu, dinamik makro adları olan konfiqurasiya fayllarının yaradılmasını asanlaşdırır) "#include" ("mühafizəçiləri daxil et") vasitəsilə ikiqat daxiletmə makro mühafizəsini əlavə edən makro_adı parametrinə malikdir.
  • configure_file(): JSON ("output_format: json") faylına yeni çıxış formatı əlavə edildi.
  • c_std və cpp_std parametrləri indi dəyərlər siyahılarının istifadəsini dəstəkləyir (məsələn, "default_options: 'c_std=gnu11,c11'").
  • Faylların işlənməsi üçün CustomTarget-dən istifadə edən modullarda ninja yardım proqramı tərəfindən mesajların çıxışını fərdiləşdirmək imkanı əlavə edilmişdir.
  • build_target "jar" "jar()" çağırışının xeyrinə köhnəlib.
  • Generatorun girişi emal edəcəyi mühit dəyişənini təyin etmək üçün generator.process() metoduna 'env' parametri əlavə edilmişdir.
  • İcra edilə bilənlərlə əlaqəli qurma hədəflərini adlandırarkən, eyni qovluqda əlavə icra olunanlar yaratmaq üçün "exectuable('foo', 'main.c', name_suffix: 'bar')" kimi şəkilçilərə icazə verilir.
  • Shared_module() funksiyasına ötürülən funksiyaların siyahısını müəyyən edən def faylından istifadə etmək üçün exectuable() funksiyasına "vs_module_defs" parametri əlavə edildi.
  • Yedek alt layihə üçün defolt seçimləri təyin etmək üçün find_program() funksiyasına 'default_options' parametri əlavə edildi.
  • Birinci arqumentin ikinciyə nisbətən nisbi yolunu qaytaran fs.relative_to() metodu əlavə edildi, əgər birinci yol varsa. Məsələn, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • follow_symlinks parametri install_data(), install_headers() və install_subdir() funksiyalarına əlavə edilib; təyin edildikdə, simvolik bağlantıların izlənilməsini təmin edir.
  • int.to_string() metodu indi sətri baş sıfırlarla doldurmaq üçün "doldurma" parametrini ehtiva edir. Məsələn, n=4 üçün message(n.to_string(fill: 3)) çağırılması "004" sətirini yaradacaq.
  • Clang-tidy yardım proqramını "-fix" bayrağı ilə işlətməyi təyin edən yeni hədəf clang-tidy-fix əlavə edildi.
  • Kompilyasiya əmri indi qurma hədəfi ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) üçün şəkilçi (TARGET_SUFFIX) təyin etməyə imkan verir.
  • Paket keş yolunu (alt layihələr/paket önbelleği) ləğv etmək üçün MESON_PACKAGE_CACHE_DIR mühit dəyişəni əlavə edildi, məsələn, bir neçə layihədə ümumi keşdən istifadə etməyə imkan verir.
  • Davamlı keşi təmizləmək üçün "meson setup --clearcache" əmri əlavə edildi.
  • Bütün "has_*" kompilyator yoxlama metodları indi "tələb olunan" açar sözünü dəstəkləyir, məsələn, "assert(cc.has_function('some_function'))" əvəzinə siz indi "cc.has_function('some_function', tələb olunur: doğru)" təyin edə bilərsiniz.
  • Rust_abi yeni açar sözü shared_library(), static_library(), library() və shared_module() əlavə edilib ki, köhnəlmiş rust_crate_type əvəzinə istifadə edilməlidir.

Mənbə: opennet.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster