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

منتشر شده انتشار سیستم ساخت مزون 0.52، که برای ساخت پروژه هایی مانند X.Org Server، Mesa، Lighttpd، systemd، GStreamer، Wayland، GNOME و GTK+ استفاده می شود. کد مزون به زبان پایتون و نوشته شده است عرضه شده دارای مجوز Apache 2.0.

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

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

اصلی نوآوری ها مزون 0.52:

  • اضافه شدن پشتیبانی آزمایشی برای Webassembly با استفاده از Emscripten به عنوان یک کامپایلر.
  • پشتیبانی از پلتفرم های Illumos و Solaris به طور قابل توجهی بهبود یافته و به شرایط کاری رسیده است.
  • اطمینان حاصل می کند که اسکریپت های بین المللی سازی مبتنی بر gettext نادیده گرفته می شوند اگر سیستم جعبه ابزار gettext را نصب نکرده باشد (قبلاً هنگام استفاده از ماژول i18n در سیستم های بدون gettext خطایی نمایش داده می شد).
  • پشتیبانی بهبود یافته از کتابخانه های استاتیک. بسیاری از مشکلات هنگام استفاده از کتابخانه های ثابت حذف شده حل شده است.
  • قابلیت استفاده از دیکشنری ها برای تخصیص متغیرهای محیطی اضافه شده است. هنگام فراخوانی محیط ()، اولین عنصر اکنون می تواند به عنوان یک فرهنگ لغت مشخص شود که در آن متغیرهای محیط به شکل کلید/مقدار تعریف می شوند. این متغیرها به محیط محیطی منتقل می‌شوند که گویی به صورت جداگانه از طریق متد set() تنظیم شده‌اند. لغت نامه ها همچنین می توانند به توابع مختلفی منتقل شوند که از آرگومان "env" پشتیبانی می کنند.
  • تابع "runtarget alias_target(target_name, dep1,...)" اضافه شد که یک هدف ساخت سطح اول جدید ایجاد می کند که می تواند با بک اند ساخت انتخاب شده فراخوانی شود (به عنوان مثال "ninja target_name"). این هدف ساخت هیچ فرمانی را اجرا نمی کند، اما اطمینان می دهد که تمام وابستگی ها ساخته شده اند.
  • در صورت وجود تنظیم sys_root در بخش "[properties]"، تنظیم خودکار متغیر محیطی PKG_CONFIG_SYSROOT_DIR در طول کامپایل متقابل فعال شد.
  • گزینه "--gdb-path" برای تعیین مسیر به دیباگر GDB هنگام تعیین گزینه "--gdb testname" برای اجرای GDB با اسکریپت تست مشخص شده اضافه شده است.
  • اضافه شدن تشخیص خودکار هدف ساخت و ساز با صدای بلند برای اجرای این لینتر با تمام فایل های منبع. هدف در صورتی ایجاد می شود که clang-tidy در سیستم موجود باشد و فایل ".clang-tidy" (یا "_clang-tidy") در ریشه پروژه تعریف شده باشد.
  • وابستگی ('blocks') برای استفاده در پسوند Clang اضافه شد بلاک ها;
  • نماهای پیوند دهنده و کامپایلر از هم جدا شده اند، که امکان استفاده از ترکیب های مختلف کامپایلر و پیوند دهنده را فراهم می کند.
  • متد all_dependencies() به اشیاء SourceSet علاوه بر متد all_sources() اضافه شد.
  • در run_project_tests.py، گزینه "--only" به تست های انتخابی اجرا شده اضافه شده است (به عنوان مثال، "python run_project_tests.py —only fortran python3").
  • تابع find_program() اکنون این قابلیت را دارد که فقط نسخه های مورد نیاز یک برنامه را جستجو کند (نسخه با اجرای برنامه با گزینه "-version" تعیین می شود).
  • برای کنترل صادرات نمادها، گزینه vs_module_defs به تابع shared_module() مشابه shared_library();
  • ماژول kconfig برای پشتیبانی از configure_file() برای تعیین یک فایل ورودی گسترش یافته است.
  • قابلیت تعیین چندین فایل ورودی برای کنترل کننده های “command:” به configure_file();
  • دستور "dist" برای ایجاد یک بایگانی به دسته دستورات سطح اول منتقل شده است (قبلا این فرمان به ninja گره خورده بود). گزینه "--formats" برای تعریف انواع آرشیوهایی که باید ایجاد شوند اضافه شد (به عنوان مثال،
    "meson dist -formats=xztar,zip").

منبع: opennet.ru

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