سیستم ساخت مزون نسخه 1.0

انتشار سیستم ساخت Meson 1.0.0 منتشر شده است که برای ساخت پروژه هایی مانند X.Org Server، Mesa، Lighttpd، systemd، GStreamer، Wayland، GNOME و GTK استفاده می شود. کد مزون به زبان پایتون نوشته شده و تحت مجوز آپاچی 2.0 است.

هدف اصلی توسعه Meson ارائه یک فرآیند مونتاژ با سرعت بالا همراه با راحتی و سهولت استفاده است. به‌جای ساخت، این بیلد به‌طور پیش‌فرض از جعبه ابزار Ninja استفاده می‌کند، اما از دیگر بک‌اندها مانند xcode و VisualStudio نیز می‌توان استفاده کرد. این سیستم دارای یک کنترلر وابستگی چند پلتفرمی داخلی است که به شما امکان می دهد از Meson برای ساخت بسته هایی برای توزیع ها استفاده کنید. قوانین اسمبلی به زبان ساده شده مختص دامنه تنظیم شده است، آنها به خوبی خوانا و برای کاربر قابل درک هستند (طبق ایده نویسندگان، توسعه دهنده باید حداقل زمان خود را برای نوشتن قوانین صرف کند).

کامپایل متقابل و ساخت بر روی Linux، Illumos/Solaris، FreeBSD، NetBSD، DragonFly BSD، Haiku، macOS و Windows با استفاده از GCC، Clang، Visual Studio و سایر کامپایلرها پشتیبانی می شود. امکان ساخت پروژه به زبان های برنامه نویسی مختلف از جمله C، C++، Fortran، Java و Rust وجود دارد. یک حالت ساخت افزایشی پشتیبانی می‌شود، که در آن فقط اجزایی که مستقیماً با تغییرات ایجاد شده از آخرین ساخت مرتبط هستند، بازسازی می‌شوند. مزون را می توان برای تولید بیلدهای تکرارپذیر استفاده کرد، که در آن اجرای بیلد در محیط های مختلف منجر به اجرای کاملاً یکسان می شود.

نوآوری های اصلی Meson 1.0:

  • یک ماژول برای ساخت پروژه ها به زبان Rust پایدار اعلام شده است. این ماژول در پروژه Mesa برای ساخت اجزای نوشته شده با Rust استفاده می شود.
  • گزینه پیشوند، که در اکثر توابع بررسی کامپایلر پشتیبانی می‌شود، امکان مدیریت آرایه‌ها را علاوه بر رشته‌ها فراهم می‌کند. به عنوان مثال، اکنون می توانید تعیین کنید: cc.check_header('GL/wglew.h', prefix : ['#include '، '#عبارتند از '])
  • یک آرگومان جدید "--workdir" اضافه شده است تا به شما امکان می دهد دایرکتوری کاری را لغو کنید. به عنوان مثال، برای استفاده از دایرکتوری فعلی به جای دایرکتوری کاری، می توانید: meson devenv -C builddir --workdir را اجرا کنید.
  • عملگرهای جدید "in" و "not in" برای تعیین وقوع یک رشته فرعی در یک رشته پیشنهاد شده‌اند، شبیه به بررسی موجود قبلی برای وقوع یک عنصر در یک آرایه یا فرهنگ لغت. برای مثال: fs = import('fs') if 'something' در fs.read('somefile') # Endif واقعی
  • گزینه "warning-level=everything" اضافه شده است که خروجی همه اخطارهای کامپایلر موجود را روشن می کند (در clang و MSVC از -Weeverything و /Wall استفاده می کند و در GCC هشدارها به طور جداگانه گنجانده شده است، تقریباً مطابق با -Weverything حالت در صدای جرنگ).
  • متد rust.bindgen توانایی مدیریت آرگومان "وابستگی ها" را برای عبور مسیرهای وابستگی که باید توسط کامپایلر پردازش شوند را پیاده سازی می کند.
  • تابع java.generate_native_headers منسوخ شده و به java.native_headers تغییر نام داده است تا با سبک نامگذاری تابع مزون مطابقت داشته باشد.

منبع: opennet.ru

اضافه کردن نظر