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

تم نشر إصدار نظام البناء Meson 1.3.0 ، والذي يستخدم لبناء مشاريع مثل X.Org Server و Mesa و Lighttpd و systemd و GStreamer و Wayland و GNOME و GTK. تمت كتابة رمز Meson بلغة Python ومرخصًا بموجب ترخيص Apache 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.3:

  • تمت إضافة الخيار "خطأ: صحيح" إلى طرق التحقق من المترجم، compiler.compiles() وcompiler.links() وcompiler.run()، الذي يتعامل مع تحذيرات المترجم كأخطاء (يمكن استخدامه للتحقق من إنشاء التعليمات البرمجية بدون تحذيرات ).
  • تمت إضافة طريقة has_define للتحقق من تعريف الرمز بواسطة المعالج المسبق.
  • تمت إضافة معلمة اسم الماكرو إلى وظيفةconfig_file()، مما يضيف حماية الماكرو للاتصالات المزدوجة من خلال "#include" ("تضمين الحراس")، المصممة على طراز وحدات الماكرو في لغة C (تبسيط إنشاء ملفات التكوين باستخدام ديناميكية أسماء الماكرو).
  • تمت إضافة تنسيق إخراج جديد إلىconfig_file() - JSON ("output_format: json").
  • تمت إضافة القدرة على استخدام قوائم القيم لمعلمات c_std وcpp_std (على سبيل المثال، "default_options: 'c_std=gnu11,c11'').
  • في الوحدات التي تستخدم CustomTarget لمعالجة الملفات، تمت إضافة القدرة على تخصيص إخراج الرسائل بواسطة الأداة المساعدة ninja.
  • لقد تم إهمال build_target "jar" ويوصى باستدعاء "jar()" بدلاً من ذلك.
  • تمت إضافة المعلمة 'env' إلى طريقة generator.process() لتعيين متغير البيئة الذي سيقوم المولد من خلاله بمعالجة الإدخال.
  • عند تحديد أسماء أهداف البناء المرتبطة بالملفات التنفيذية، يُسمح لللاحقات مثل "executable('foo', 'main.c', name_suffix: 'bar')" بإنشاء ملفات تنفيذية إضافية في نفس الدليل.
  • تمت إضافة المعلمة "vs_module_defs" إلى الوظيفة القابلة للتنفيذ () لاستخدام ملف def الذي يحدد قائمة الوظائف التي تم تمريرها إلى Shared_module ().
  • تمت إضافة معلمة "default_options" إلى وظيفة find_program() لتعيين الخيارات الافتراضية للمشروع الفرعي الاحتياطي.
  • تمت إضافة طريقة fs.relative_to()، والتي تُرجع المسار النسبي للوسيطة الأولى، بالنسبة إلى الثانية، في حالة وجود المسار الأول. على سبيل المثال، "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • تمت إضافة المعلمة التالية_symlinks إلى وظائف install_data() و install_headers() و install_subdir()؛ عند التعيين، يتم اتباع الروابط الرمزية.
  • تمت إضافة معلمة "fill" إلى الأسلوب int.to_string() لملء السلسلة بالأصفار البادئة بشكل متزايد. على سبيل المثال، استدعاء message(n.to_string(fill: 3)) لـ n=4 سوف ينتج السلسلة "004".
  • تمت إضافة هدف جديد، clang-tidy-fix، الذي يحدد تشغيل الأداة المساعدة clang-tidy مع علامة "-fix".
  • تمت إضافة القدرة على تحديد اللاحقة (TARGET_SUFFIX) لهدف التجميع ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) إلى أمر الترجمة.
  • تمت إضافة متغير البيئة MESON_PACKAGE_CACHE_DIR لتجاوز المسار إلى ذاكرة التخزين المؤقت للحزمة (المشاريع الفرعية/packagecache)، على سبيل المثال، مما يسمح لك باستخدام ذاكرة تخزين مؤقت مشتركة في عدة مشاريع.
  • تمت إضافة أمر "meson setup --clearcache" لمسح ذاكرة التخزين المؤقت المستمرة.
  • تمت إضافة دعم الكلمة الأساسية "المطلوبة" إلى جميع طرق التحقق من برنامج التحويل البرمجي "has_*"، على سبيل المثال، بدلاً من "assert(cc.has_function('some_function'))" يمكنك الآن تحديد "cc.has_function('some_function' ، المطلوب: صحيح)”.
  • تمت إضافة كلمة أساسية جديدة،rust_abi، إلى وظائف Shared_library() وstatic_library() وlibrary() وshared_module()، والتي يجب استخدامها بدلاً من Rust_crate_type المهمل.

المصدر: opennet.ru

إضافة تعليق