Meson 1.0.0 qurish tizimi chiqarildi, u X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME va GTK kabi loyihalarni yaratish uchun ishlatiladi. Meson kodi Python-da yozilgan va Apache 2.0 litsenziyasi ostida litsenziyalangan.
Mesonni ishlab chiqishning asosiy maqsadi qulaylik va foydalanish qulayligi bilan birgalikda yig'ish jarayonining yuqori tezligini ta'minlashdir. Qurilishda make yordam dasturi o'rniga Ninja asboblar to'plami sukut bo'yicha ishlatiladi, ammo xcode va VisualStudio kabi boshqa backendlardan ham foydalanish mumkin. Tizimda o'rnatilgan ko'p platformali qaramlik ishlovchisi mavjud bo'lib, u Meson-dan tarqatish uchun paketlar yaratish uchun foydalanish imkonini beradi. Yig'ish qoidalari soddalashtirilgan domenga xos tilda ko'rsatilgan, foydalanuvchi uchun juda o'qilishi mumkin va tushunarli (mualliflar nazarda tutganidek, ishlab chiquvchi qoidalarni yozish uchun minimal vaqt sarflashi kerak).
GCC, Clang, Visual Studio va boshqa kompilyatorlar yordamida Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS va Windows tizimlarida oΚ»zaro kompilyatsiya va qurishni qoΚ»llab-quvvatlaydi. C, C++, Fortran, Java va Rust kabi turli xil dasturlash tillarida loyihalar yaratish mumkin. Qo'shimcha qurish rejimi qo'llab-quvvatlanadi, unda faqat oxirgi tuzilishdan keyin kiritilgan o'zgarishlarga bevosita bog'liq bo'lgan komponentlar qayta tiklanadi. Meson takrorlanadigan tuzilmalarni yaratish uchun ishlatilishi mumkin, bunda qurilishni turli muhitlarda ishga tushirish butunlay bir xil bajariladigan fayllarni yaratishga olib keladi.
Meson 1.0 ning asosiy yangiliklari:
- ΠΠ±ΡΡΠ²Π»Π΅Π½ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. ΠΠ°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Mesa Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° Rust.
- Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ prefix, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΡΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ: cc.check_header(βGL/wglew.hβ, prefix : [β#include <windows.h>β, β#include <GL/glew.h>β])
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Β«βworkdirΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ: meson devenv -C builddir βworkdir .
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Β«inΒ» ΠΈ Β«not inΒ» Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π² ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΡΠ°Π½Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: fs = import(βfsβ) if βsomethingβ in fs.read(βsomefileβ) # True endif
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«warning-level=everythingΒ», Π²ΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (Π² clang ΠΈ MSVC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ -Weverything ΠΈ /Wall, Π° Π² GCC ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ -Weverything Π²clang).
- Π ΠΌΠ΅ΡΠΎΠ΄Π΅ rust.bindgen ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Β«dependenciesΒ» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΡΡΠ΅ΠΉ ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ.
- ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΡ java.generate_native_headers, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π° Π² java.native_headers Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΡΠΈΠ»Ρ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠΈΠ½ΡΡΠΎΠΌΡ Π² Meson.
Manba: opennet.ru