Meson membangun rilis sistem 0.52

diterbitkan rilis sistem build Meson 0.52, yang digunakan untuk membangun proyek seperti X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dan GTK+. Kode Meson ditulis dengan Python dan disediakan berlisensi di bawah Apache 2.0.

Tujuan utama pengembangan Meson adalah untuk memberikan proses perakitan berkecepatan tinggi yang dikombinasikan dengan kenyamanan dan kemudahan penggunaan. Alih-alih utilitas make, build default menggunakan toolkit Ninja, tetapi backend lain juga dapat digunakan, seperti xcode dan VisualStudio. Sistem ini memiliki pengendali ketergantungan multi-platform bawaan yang memungkinkan Anda menggunakan Meson untuk membangun paket distribusi. Aturan perakitan ditentukan dalam bahasa khusus domain yang disederhanakan, sangat mudah dibaca dan dipahami oleh pengguna (seperti yang dimaksudkan oleh penulis, pengembang harus menghabiskan waktu minimum untuk menulis aturan).

Didukung kompilasi silang dan bangun di Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS dan Windows menggunakan GCC, Clang, Visual Studio dan kompiler lainnya. Dimungkinkan untuk membangun proyek dalam berbagai bahasa pemrograman, termasuk C, C++, Fortran, Java, dan Rust. Mode build inkremental didukung, di mana hanya komponen yang terkait langsung dengan perubahan yang dibuat sejak build terakhir yang dibuat ulang. Meson dapat digunakan untuk menghasilkan build yang dapat diulang, di mana menjalankan build di lingkungan yang berbeda akan menghasilkan pembuatan file executable yang benar-benar identik.

Utama inovasi Meson 0.52:

  • Menambahkan dukungan eksperimental untuk Webassembly menggunakan Emscripten sebagai kompiler;
  • Dukungan untuk platform Illumos dan Solaris telah ditingkatkan secara signifikan dan berfungsi;
  • Memastikan skrip internasionalisasi berbasis gettext diabaikan jika sistem tidak menginstal toolkit gettext (sebelumnya, kesalahan ditampilkan saat menggunakan modul i18n pada sistem tanpa gettext);
  • Peningkatan dukungan untuk perpustakaan statis. Banyak masalah saat menggunakan perpustakaan statis yang dicopot pemasangannya telah teratasi;
  • Menambahkan kemampuan untuk menggunakan kamus untuk menetapkan variabel lingkungan. Saat memanggil environment(), elemen pertama sekarang dapat ditentukan sebagai kamus di mana variabel lingkungan didefinisikan dalam bentuk kunci/nilai. Variabel-variabel ini akan ditransfer ke environment_object seolah-olah diatur secara individual melalui metode set(). Kamus kini juga dapat diteruskan ke berbagai fungsi yang mendukung argumen "env";
  • Menambahkan fungsi "runtarget alias_target(target_name, dep1, ...)" yang membuat target build tingkat pertama baru yang dapat dipanggil dengan backend build yang dipilih (mis. "ninja target_name"). Target pembangunan ini tidak menjalankan perintah apa pun, tetapi memastikan bahwa semua dependensi dibangun;
  • Mengaktifkan pengaturan otomatis variabel lingkungan PKG_CONFIG_SYSROOT_DIR selama kompilasi silang jika ada pengaturan sys_root di bagian “[properties]”;
  • Menambahkan opsi "--gdb-path" untuk menentukan jalur ke debugger GDB saat menentukan opsi "--gdb testname" untuk menjalankan GDB dengan skrip pengujian yang ditentukan;
  • Menambahkan deteksi otomatis target build clang-tidy untuk menjalankan linter ini dengan semua file sumber. Target dibuat jika clang-tidy tersedia di sistem dan file “.clang-tidy” (atau “_clang-tidy”) ditentukan di root proyek;
  • Menambahkan ketergantungan ('blok') untuk digunakan dalam ekstensi Dentang Blok;
  • Tampilan linker dan compiler dipisahkan, sehingga memungkinkan penggunaan kombinasi compiler dan linker yang berbeda;
  • Menambahkan metode all_dependencies() ke objek SourceSet selain metode all_sources();
  • Di run_project_tests.py, opsi “--only” telah ditambahkan untuk menjalankan pengujian secara selektif (misalnya, “python run_project_tests.py —only fortran python3”);
  • Fungsi find_program() sekarang memiliki kemampuan untuk mencari hanya versi program yang diperlukan (versi ditentukan dengan menjalankan program dengan opsi “-version”);
  • Untuk mengontrol ekspor simbol, opsi vs_module_defs telah ditambahkan ke fungsi shared_module(), mirip dengan shared_library();
  • Modul kconfig telah diperluas untuk mendukung konfigurasi_file() untuk menentukan file masukan;
  • Menambahkan kemampuan untuk menentukan beberapa file masukan untuk penangan “perintah:” ke konfigurasi_file();
  • Perintah “dist” untuk membuat arsip telah dipindahkan ke kategori perintah tingkat pertama (sebelumnya perintah tersebut terikat dengan ninja). Menambahkan opsi "--formats" untuk menentukan jenis arsip yang akan dibuat (misalnya,
    "meson dist -format=xztar,zip").

Sumber: opennet.ru

Tambah komentar