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

از ویکی‌پدیا، دانشنامهٔ آزاد
مزون
توسعه‌دهنده(ها)Jussi Pakkanen
انتشار اولیه۲ مارس ۲۰۱۳؛ ۱۱ سال پیش (۲۰۱۳-02}})
انتشار پایدار
۰٫۶۱٫۲ / ۱۴ فوریه ۲۰۲۲؛ ۲ سال پیش (۲۰۲۲-14}})[۱]
مخزن
نوشته‌شده باپایتون
سیستم‌عاملنرم‌افزار چندسکویی
نوعابزار توسعه نرم‌افزار
مجوزمجوز آپاچی
وبگاهmesonbuild.com ویرایش این در ویکی‌داده

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

قابلیت همکاری[ویرایش]

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

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

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

زبان[ویرایش]

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

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

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

مسون CMake بسازید
انواع داده‌ها آری نه نه
لیست نوع داده آری semicolon delimited string whitespace delimited string
نوع داده دیکشنری since 0.47.0 نه نه
globbing فایل نه آری آری
قابل توسعه از طریق توابع سفارشی نه آری آری
می‌تواند خروجی دستورات دلخواه را بخواند (در زمان پیکربندی) run_command آری آری
می‌تواند دستورات دلخواه را در زمان ساخت به عنوان دستور العمل‌های اهداف سفارشی اجرا کند آری آری آری

سرعت و صحت[ویرایش]

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

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

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

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

ویژگی سرعت مسون CMake بسازید
ساخت‌های قدیمی را ممنوع می‌کند (بازسازی جزئی در برابر تغییر ورودی) آری (unless there are bugs) If not globbing source files
هدفی که آزمایش‌ها را اجرا می‌کند به آزمایش‌های در حال ساخت بستگی دارد



{{سخ}} (مثلا test all بستگی دارد)
آری Trivial to add
حافظه پنهان Automatic Trivial to add Trivial to add
Distcc Trivial to add Trivial to add Trivial to add
نماد جدول آگاه پیوند مجدد آری Do it yourself Do it yourself
هدرهای از پیش کامپایل شده اختیاری CMake ≥ 3.16[۲] Do it yourself

امکانات[ویرایش]

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

مزون CMake ابزارهای خودکار
یک اسکریپت configure نه نه فاصله انداختن
دایرکتوری نصب کتابخانه صحیح را روی x86_64 Unix تنظیم کنید Automatic Not standardized ./configure --libdir=/usr/lib64

پروژه‌های فرعی[ویرایش]

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

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

مقایسه موارد استفاده از تفکیک وابستگی در سیستم‌های ساخت مختلف
مورد استفاده مزون CMake بار
پیدا کردن وابستگی‌های نصب شده pkg-config، بسته‌های CMake ماژول CMake, pkg-config ؟
دانلود خودکار وابستگی‌ها زیر پروژه FetchContent[۵] وابستگی بار
یافتن وابستگی‌های نصب شده، با بارگیری مجدد pkg-config + subproject CMake module/pkg-config + FetchContent ؟
مولد فایل pkg-config آری نه نه
استفاده به عنوان یک وابستگی قابل دانلود خودکار را آسان کنید Can be used as a Meson subproject نه With registration to crates.io

تلفیقی متقابل[ویرایش]

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

پذیرندگان[ویرایش]

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

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

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

منابع[ویرایش]

  1. "Releases - mesonbuild/meson". Retrieved 19 February 2022 – via GitHub.
  2. ۲٫۰ ۲٫۱ "Making build systems not suck (linux.conf.au video)". خطای یادکرد: برچسب <ref> نامعتبر؛ نام «not_suck» چندین بار با محتوای متفاوت تعریف شده است. (صفحهٔ راهنما را مطالعه کنید.).
  3. "mesonbuild/meson: The Meson Build System". GitHub. Retrieved 13 April 2016.
  4. Baker, Dylan (2021-05-28), dcbaker/meson-plus-plus, retrieved 2021-05-28
  5. https://cmake.org/cmake/help/v3.15/module/FetchContent.html
  6. ۶٫۰ ۶٫۱ "GNOME Goal: Port modules to use Meson build system".
  7. "GNOME 3.26 Beta Debuts: More Meson Porting, Wayland Action".