Keluaran sistem binaan Meson 1.3

Keluaran sistem binaan Meson 1.3.0 telah diterbitkan, yang digunakan untuk membina projek seperti Pelayan X.Org, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dan GTK. Kod Meson ditulis dalam Python dan dilesenkan di bawah lesen Apache 2.0.

Matlamat pembangunan utama Meson adalah untuk menyediakan proses pemasangan berkelajuan tinggi yang digabungkan dengan kemudahan dan kemudahan penggunaan. Daripada membuat, binaan menggunakan kit alat Ninja secara lalai, tetapi bahagian belakang lain seperti xcode dan VisualStudio juga boleh digunakan. Sistem ini mempunyai pengendali pergantungan berbilang platform terbina dalam yang membolehkan anda menggunakan Meson untuk membina pakej untuk pengedaran. Peraturan pemasangan ditetapkan dalam bahasa khusus domain yang dipermudahkan, ia boleh dibaca dengan baik dan difahami oleh pengguna (mengikut idea pengarang, pembangun harus menghabiskan masa minimum menulis peraturan).

Penyusunan silang dan pemasangan disokong. Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows Menggunakan GCC, Clang, Visual Studio dan pengkompil lain. Projek boleh dibina dalam pelbagai bahasa pengaturcaraan, termasuk C, C++, Fortran, Java dan Rust. Mod binaan tambahan disokong, yang hanya membina semula komponen yang berkaitan secara langsung dengan perubahan yang dibuat sejak binaan sebelumnya. Meson boleh digunakan untuk mencipta binaan yang boleh diulang, yang mana menjalankan binaan dalam persekitaran yang berbeza menghasilkan penjanaan fail boleh laku yang sama sepenuhnya.

Inovasi utama Meson 1.3:

  • Kaedah semakan pengkompil compiler.compiles(), compiler.links(), dan compiler.run() kini mempunyai pilihan "kesalahan: benar", yang menganggap amaran pengkompil sebagai ralat (ini boleh digunakan untuk mengesahkan bahawa kod dibina tanpa amaran).
  • Menambah kaedah has_define untuk menyemak sama ada simbol ditakrifkan oleh prapemproses.
  • Fungsi configure_file() kini mempunyai parameter macro_name yang menambah perlindungan makro rangkuman dua melalui "#include" ("include guards"), diformatkan dalam gaya makro C (ini memudahkan penciptaan fail konfigurasi dengan nama makro dinamik).
  • Format output baharu telah ditambahkan pada configure_file(): JSON ("output_format: json").
  • Parameter c_std dan cpp_std kini menyokong penggunaan senarai nilai (cth. "default_options: 'c_std=gnu11,c11'").
  • Dalam modul yang menggunakan CustomTarget untuk pemprosesan fail, keupayaan untuk menyesuaikan output mesej oleh utiliti ninja telah ditambah.
  • build_target "jar" telah ditamatkan dan memihak kepada panggilan "jar()".
  • Parameter 'env' telah ditambahkan pada kaedah generator.process() untuk menetapkan pembolehubah persekitaran yang melaluinya penjana akan memproses input.
  • Apabila menamakan sasaran binaan yang dikaitkan dengan boleh laku, akhiran seperti "boleh laku('foo', 'main.c', akhiran_nama: 'bar')" dibenarkan untuk menjana boleh laku tambahan dalam direktori yang sama.
  • Menambahkan parameter "vs_module_defs" ke exectuable() untuk menggunakan fail def yang mentakrifkan senarai fungsi yang dihantar ke shared_module().
  • Menambahkan parameter 'default_options' pada fungsi find_program() untuk menetapkan pilihan lalai untuk subprojek sandaran.
  • Menambah kaedah fs.relative_to(), yang mengembalikan laluan relatif untuk argumen pertama berbanding dengan yang kedua, jika laluan pertama wujud. Contohnya, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Parameter follow_symlinks telah ditambahkan pada fungsi install_data(), install_headers(), dan install_subdir(); apabila ditetapkan, ia memastikan pautan simbolik diikuti.
  • Kaedah int.to_string() kini termasuk parameter "isi" untuk melapik rentetan dengan sifar pendahuluan. Sebagai contoh, memanggil message(n.to_string(fill: 3)) untuk n=4 akan menjana rentetan "004".
  • Menambahkan sasaran baru clang-tidy-fix, yang menentukan untuk menjalankan utiliti clang-tidy dengan bendera "-fix".
  • Perintah kompil kini membolehkan anda menentukan akhiran (TARGET_SUFFIX) untuk sasaran binaan ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]).
  • Menambahkan pembolehubah persekitaran MESON_PACKAGE_CACHE_DIR untuk mengatasi laluan cache pakej (subprojek/packagecache), contohnya, membenarkan untuk menggunakan cache biasa dalam beberapa projek.
  • Menambahkan arahan "meson setup --clearcache" untuk mengosongkan cache berterusan.
  • Semua kaedah semakan pengkompil "has_*" kini menyokong kata kunci "diperlukan", contohnya, bukannya "assert(cc.has_function('some_function'))" anda kini boleh menentukan "cc.has_function('some_function', required: true)".
  • Kata kunci baharu rust_abi telah ditambahkan pada shared_library(), static_library(), library(), dan shared_module(), yang sepatutnya digunakan dan bukannya rust_crate_type yang tidak digunakan lagi.

Sumber: opennet.ru

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster