إصدار نظام بناء ميزون 0.52

نشرت إصدار نظام البناء الجدول 0.52، والذي يُستخدم لبناء مشاريع مثل X.Org Server وMesa وLighttpd وsystemd وGStreamer وWayland وGNOME وGTK+. كود ميسون مكتوب بلغة بايثون و زودت مرخص بموجب Apache 2.0.

الهدف الرئيسي لتطوير Meson هو توفير سرعة عالية لعملية التجميع بالإضافة إلى الراحة وسهولة الاستخدام. بدلاً من أداة الإنشاء، يستخدم الإصدار الافتراضي مجموعة الأدوات النينجا، ولكن من الممكن أيضًا استخدام واجهات خلفية أخرى، مثل xcode وVisualStudio. يحتوي النظام على معالج تبعية مدمج متعدد المنصات يسمح لك باستخدام Meson لإنشاء حزم للتوزيعات. يتم تحديد قواعد التجميع بلغة مبسطة خاصة بالمجال، وهي سهلة القراءة والفهم للمستخدم (كما أراد المؤلفون، يجب على المطور قضاء الحد الأدنى من الوقت في كتابة القواعد).

بدعم من الترجمة المتداخلة والبناء على Linux وIllumos/Solaris وFreeBSD وNetBSD وDragonFly BSD وHaiku وmacOS وWindows باستخدامGC وClang وVisual Studio وغيرها من المترجمات. من الممكن بناء مشاريع بلغات برمجة مختلفة، بما في ذلك C وC++ وFortran وJava وRust. يتم دعم وضع البناء التزايدي، حيث يتم إعادة بناء المكونات المرتبطة مباشرة بالتغييرات التي تم إجراؤها منذ الإصدار الأخير فقط. يمكن استخدام Meson لإنشاء بنيات قابلة للتكرار، حيث يؤدي تشغيل البناء في بيئات مختلفة إلى إنشاء ملفات قابلة للتنفيذ متطابقة تمامًا.

رئيسي الابتكارات ميزون 0.52:

  • تمت إضافة دعم تجريبي لـ Webassembly باستخدام Emscripten كمترجم؛
  • تم تحسين دعم منصتي Illumos وSolaris بشكل كبير وجعلهما في حالة صالحة للعمل؛
  • يضمن تجاهل البرامج النصية للتدويل المستندة إلى gettext إذا لم يكن النظام مثبتًا عليه مجموعة أدوات gettext (في السابق، تم عرض خطأ عند استخدام وحدة i18n على الأنظمة التي لا تحتوي على gettext)؛
  • تحسين الدعم للمكتبات الثابتة. تم حل العديد من المشكلات عند استخدام المكتبات الثابتة التي تم إلغاء تثبيتها؛
  • تمت إضافة القدرة على استخدام القواميس لتعيين متغيرات البيئة. عند استدعاء بيئة()، يمكن الآن تحديد العنصر الأول كقاموس يتم فيه تعريف متغيرات البيئة في شكل مفتاح/قيمة. سيتم نقل هذه المتغيرات إلى Environment_object كما لو تم تعيينها بشكل فردي عبر طريقة set(). يمكن الآن أيضًا تمرير القواميس إلى وظائف مختلفة تدعم وسيطة "env"؛
  • تمت إضافة وظيفة "runtarget alias_target(target_name, dep1, ...)" التي تنشئ هدف بناء جديد من المستوى الأول يمكن استدعاؤه باستخدام الواجهة الخلفية للبناء المحدد (على سبيل المثال، "ninja target_name"). لا يقوم هدف البناء هذا بتشغيل أي أوامر، ولكنه يضمن إنشاء جميع التبعيات؛
  • تمكين الإعداد التلقائي لمتغير البيئة PKG_CONFIG_SYSROOT_DIR أثناء الترجمة المشتركة إذا كان هناك إعداد sys_root في قسم "[الخصائص]"؛
  • تمت إضافة خيار "--gdb-path" لتحديد المسار إلى مصحح أخطاء GDB عند تحديد خيار "--gdb testname" لتشغيل GDB باستخدام البرنامج النصي للاختبار المحدد؛
  • تمت إضافة الكشف التلقائي عن هدف البناء clang-tidy لتشغيل هذا linter مع جميع الملفات المصدر. يتم إنشاء الهدف إذا كان clang-tidy متاحًا في النظام ويتم تعريف الملف ".clang-tidy" (أو "_clang-tidy") في جذر المشروع؛
  • تمت إضافة التبعية ("الكتل") للاستخدام في ملحق Clang Blocks;
  • يتم فصل طرق عرض الرابط والمترجم، مما يسمح باستخدام مجموعات مختلفة من المجمعين والروابط؛
  • تمت إضافة طريقة all_dependeency() إلى كائنات SourceSet بالإضافة إلى طريقة all_sources()؛
  • في run_project_tests.py، تمت إضافة الخيار "--فقط" لتشغيل الاختبارات بشكل انتقائي (على سبيل المثال، "python run_project_tests.py —فقط fortran python3")؛
  • تتمتع وظيفة find_program() الآن بالقدرة على البحث فقط عن الإصدارات المطلوبة من البرنامج (يتم تحديد الإصدار عن طريق تشغيل البرنامج باستخدام خيار "-version")؛
  • للتحكم في تصدير الرموز، تمت إضافة خيار vs_module_defs إلى وظيفة Shared_module()، على غرار Shared_library()؛
  • تم توسيع وحدة kconfig لدعمconfig_file() لتحديد ملف الإدخال؛
  • تمت إضافة القدرة على تحديد ملفات إدخال متعددة لمعالجات "الأمر:" إلىconfig_file();
  • تم نقل الأمر "dist" لإنشاء أرشيف إلى فئة أوامر المستوى الأول (سابقًا كان الأمر مرتبطًا بالنينجا). تمت إضافة خيار "--formats" لتحديد أنواع الأرشيفات التي سيتم إنشاؤها (على سبيل المثال،
    "meson dist -formats=xztar,zip").

المصدر: opennet.ru

إضافة تعليق