مزون (نرم‌افزار)

مزون  یک ابزار نرم‌افزاری برای ساخت خودکار یا تدوین نرم‌افزار است. هدف کلی مزون بالا بردن سطح بهره‌وری برنامه‌نویس است. مسون نرم‌افزاری رایگان و منبع باز است که با پایتون و تحت مجوز آپاچی ۲٫۰ نوشته شده‌است.

قابلیت همکاری 
مسون که به زبان پایتون نوشته شده‌است، قالبا بر روی سیستم عامل‌های مشابه یونیکس مثل macOS، ویندوز مایکروسافت و سایر سیستم عامل‌ها قابل اجراست.

مسون از C, C ++, cuda, D, Objective - C, Fortran, جاوا، C , C , Rust و Vala پشتیبانی می‌کند و مکانیزمی برای کنترل وابستگی‌های به نام پیچشی دارد.

مسون از مجموعه Compiler گنو، Clang, مایکروسافت ویژوال ++ و دیگر compilerهای پشتیبانی می‌کند. این پروژه از نینجا به عنوان the backend اولیه استفاده می‌کند، اما همچنین می‌تواند از استودیو بصری مایکروسافت یا Xcode استفاده کند.

زبان 
دستور زبان مسون از پایتون الگو برداری شده‌است، اما پایتون نیست. به گونه ای طراحی شده‌است که می‌تواند در هر زبان دیگری دوباره پیاده‌سازی شود. برای مثال، Meson++ یک پیاده‌سازی C++ است – وابستگی به پایتون یک جزئیات پیاده‌سازی است.

زبان مسون تورینگ کامل نیست و بنابراین نمی‌تواند یک برنامه دلخواه را توصیف کند. در عوض، گام‌های ساخت دل‌خواه فراتر از پردازش زبان‌های پشتیبانی شده می‌تواند به عنوان اهداف سفارشی نمایش داده شود.

زبان مسون سخت تایپ می‌شود، به طوری که انواع داخلی مانند کتابخانه، اجرایی، رشته و لیست آن‌ها غیرقابل تعویض هستند. به‌طور خاص، برخلاف درست کردن، این نوع لیست نوار را به فاصله تقسیم نمی‌کند؛ بنابراین، فاصله و دیگر کاراکترها در نام پرونده‌ها و آرگومان‌های برنامه، به نحو احسن انجام می‌شوند.

سرعت و صحت 
همانند هر روش معمول، ایجاد الگوی افزایشی صحیح، مهم‌ترین ویژگی سرعت است (چون همه پیشرفت افزایشی در زمانی که کاربر مجبور به انجام یک ساختمان تمیز می‌شود، دور ریخته می‌شود).

بر خلاف Make, مرحله پیکربندی جداگانه تضمین می‌کند که تغییرات در آرگومان، متغیرهای محیطی و خروجی فرمان تا حدی در ساخت بعدی به کار نمی‌روند، که منجر به ساخت بی‌مزه می‌شود.

مانند Ninja, مسون از globbing فایل‌های منبع پشتیبانی نمی‌کند. با نیاز به تمام فایل‌های منبع که باید در فهرست تعاریف ساخت فهرست شوند، در صورتی که مجموعه فایل‌های منبع تغییر کرده باشد، در نتیجه مطمین شوید که فایل‌های منبع حذف می‌شوند. CMake از globbing پشتیبانی می‌کند، اما به همین دلیل مخالفت را توصیه می‌کند.

مسون در صورت نصب به‌طور خودکار از ccache استفاده می‌کند. همچنین تغییرات در جداول نشانه کتابخانه‌های اشتراکی را شناسایی می‌کند تا از برنامه‌های اجرایی relinking در برابر کتابخانه زمانی که هیچ تغییر ABI وجود ندارد، صرف‌نظر کند. headers Precompiled پشتیبانی می‌شوند، اما نیازمند پیکربندی هستند. به‌طور پیش‌فرض، اشکال‌زدایی بدون بهینه‌سازی هستند.

امکانات 
هدف بیان‌شده از meson آسان‌تر شدن فعالیت‌های توسعه‌ای جدید است. به این ترتیب، meson می‌داند چگونه می‌توان اتحاد را دوباره ساخت، پوشش آزمایش، بهینه‌سازی زمان پیوند و … را بدون اینکه برنامه‌نویس مجبور به نوشتن پشتیبانی برای این کار شود، می‌سازد.

پروژه‌های فرعی 
Meson می‌تواند به‌طور خودکار وابستگی‌های خارجی را از طریق pkg-config پیدا کرده و از آن استفاده کند، اما این فقط وابستگی‌های نصب شده را پیدا می‌کند، که Meson نمی‌تواند کاری در مورد آنها انجام دهد. به همین ترتیب، یا به عنوان یک پشتیبان، یک وابستگی می‌تواند به عنوان یک پروژه فرعی فرعی در درون یک پروژه فرعی دیگر، یا شامل یا به عنوان یک لینک دانلود، یا به عنوان یک لینک دانلود در نظر گرفته شود. این مسئله باعث می‌شود تا meson وابستگی برای راحتی کاربرانی که می‌خواهند پروژه را کامپایل کنند را حل کند، اما اگر به جای آن یک وابستگی نصب شده رایج استفاده شود، ممکن است به software کمک کند؛ بنابراین حالتی که بسته‌بندی کننده‌های لینوکس ترجیح می‌دهند بازگشتی است.

meson از meson و CMake subprojects پشتیبانی می‌کند. یک فایل ساخت meson نیز می‌تواند به سرویس WrapDB اشاره کند.

 مقایسه موارد استفاده از تفکیک وابستگی در سیستم‌های ساخت مختلف

تلفیقی متقابل 
ترجمه متقابل نیاز به پیکربندی اضافه دارد که meson به شکل یک فایل صلیب جداگانه پشتیبانی می‌کند، که می‌تواند خارج از پروژه meson باشد.

پذیرندگان 
GNOME هدف خود را انتقال پروژه‌های خود به Meson قرار داده‌است. از اواخر سال ۲۰۱۷، گنوم شل پس از کنار گذاشتن Autotools به‌طور انحصاری به Meson نیاز دارد، و اجزای مرکزی مانند GTK+، Clutter-GTK، GLib و GStreamer را می‌توان با Meson ساخت.

systemd از زمان انداختن Autotools در نسخه ۲۳۴ به meson تکیه دارد.

صفحه اصلی meson پروژه‌های بیشتری را با استفاده از meson فهرست می‌کند.

منابع 

ابزارهای مرتبط با کامپایل کردن
خودکارسازی ساخت
نرم‌افزارهای آزاد نوشته‌شده با پایتون
نرم‌افزارهایی که از پروانه آپاچی استفاده می‌کنند