مرحبا يا هبر! أصدرنا مؤخرًا MPS 2018.3 . في هذا الإصدار ، هناك العديد من الميزات الجديدة التي سيصبح العمل بها في المشروعات أكثر فعالية. قمنا بتحسين خطط التوليد ولغة وصف المحرر ، وأضفنا إنشاءات جديدة إلى لغة التجميع والتعبئة ، وقمنا بتحديث عناصر الواجهة للتنقل المريح في التسلسل الهرمي للميراث ، وقمنا بإجراء العديد من التغييرات الأخرى من أجل العمل المنتج.

اللغة الأساسية
أيقونات للتنقل بين المفاهيم المحددة / المنفذة
ظهرت أيقونات المفاهيم التي تم إعادة تعريفها / تنفيذها في مجالات المفاهيم ومفاهيم الواجهة ، والتي تعمل على تبسيط التنقل إلى المفاهيم الفرعية.

حزم مخصصة لفئات BaseLanguage
في الإصدارات السابقة من MPS ، تم تحديد حزمة Java للفئات التي تم إنشاؤها بشكل فريد بواسطة اسم النموذج الذي توجد به عناصر المصدر. يضيف الإصدار الجديد لـ BaseLanguage Classifiers خاصية packageName ، والتي تتيح لك إعادة تعريف اسم حزمة Java النهائية. خاصية packageName منطقية فقط لمصنفات BL ذات المستوى الأعلى ، كما هو الحال مع مصنفات Java.

ميزات مولد جديدة لملحقات BaseLanguage
بالنسبة لـ BaseLanguage ، غالبًا ما يتم إنشاء الامتدادات. ومع ذلك ، بالنسبة لبعض الامتدادات ، قد يكون من الصعب كتابة مولد مناسب. لقد أضفنا عدة مفاهيم جديدة إلى BaseLanguage لتبسيط عملية كتابة المولدات للإضافات.
توليد تعبيرات Lvalue
تعبير lvalue هو متغير يمكنك من خلاله قراءة أو كتابة قيمة. في بعض الحالات ، يكون إنشاء تعبير Lvalue أمرًا صعبًا لأنه قد يعتمد على السياق الذي يتم استخدامه فيه. سوف يساعد مفهوم المساعدة الجديد ، generic lvalue-expression
على تبسيط المولد وجعله مستقلاً عن السياق.

تحويل تعبيرات Lvalue إلى روابط
تتضمن بعض التعبيرات تعبيرات Lvalue أخرى لعمليات أكثر تعقيدًا مع متغيرات (على سبيل المثال ، بالإضافة إلى تعيين أو زيادة والحصول على تعبيرات). كان من الصعب تقديم الإنشاءات بمثل هذه الدلالات لأنه لم يكن من السهل عليهم كتابة المولد المناسب.
في الإصدار الجديد ، يمكنك التفاف أي تعبير @byRef
باستخدام @byRef
. يقوم منشئ BaseLanguage بتحويل التعبير المُلف إلى تعبير من النوع Reference<T>
، والذي يوفر طرق الحصول على وضبط المتغير المُلف.

اقرأ المزيد عن المفاهيم الجديدة في هذه المقالة .
دعم الأساليب الافتراضية
في الإصدار الجديد من MPS ، يمكنك إنشاء طرق افتراضية في واجهات BaseLanguage. يتم تنفيذ الكلمة الأساسية الافتراضية بواسطة مفهوم DefaultModifier ، امتداد لمفهوم التعديل. يوجد DefaultModifier في لغة jetbrains.mps.baseLanguage.jdk8 ، وذلك لإنشاء طريقة افتراضية في الواجهة ، قم باستيراد لغة jdk8.

مولد
لغة المولد (لغة تحويل النموذج)
لقد أزلنا الماكرو $ INCLUDE $ ، واستبدل استخدامه بـ $ CALL $. سيساعد الترحيل المناسب في تحديث مشاريعك. لا يدعم الماكرو $ INCLUDE $ القوالب بالوسائط ، ويؤدي وجود وحدات ماكرو وظيفية متشابهة إلى تعقيد اللغة.
ماكرو $ WEAVE $ وقواعد النسيج تعلمت الآن استدعاء الأنماط باستخدام الوسائط. بالإضافة إلى ذلك ، قمنا بإصلاح عيب غير سار ، وإن لم يكن ملحوظًا للغاية يحدث أثناء استخدام القوالب المجمعة والمترجمة. إن "مقدمة" (نسج) القالب الخارجي من الكود المفسر يؤدي دائمًا إلى التفسير ، لكن الآن سيعمل القالب المترجم (بالطبع ، شريطة أن يتم استخدام القوالب المترجمة في خصائص المولد). وبالمثل ، فإن "نسج" القالب الخارجي المفسر من القالب المترجم يعمل.
QueriesGenerated ، مجموعة من استعلامات النماذج المترجمة لنموذج مع قوالب ، تعتمد دائمًا على اصطلاح تسمية ومحرك انعكاس Java لتنفيذ التعليمات البرمجية. يمكن أن ترى ذلك في تتبعات المكدس ، عندما حدث خطأ ما في استعلام النموذج من المولد. أخيرا تخلصنا من هذه الآلية.
عناصر واجهة المستخدم / UX
دعم MacBook Touchbar
يمكن الآن لمالكي أجهزة macbooks التي تحتوي على شريط اللمس استخدامها للعمل في MPS: على سبيل المثال ، استدعاء إجراءات لبدء تطبيق وتصحيحه من شريط اللمس ، وكذلك تحديد تكوين تشغيل / تصحيح سريع أو إنشاء تكوين جديد بسرعة. يمكن تكوين عناصر التحكم في Touchbar في الإعدادات / التفضيلات | المظهر والسلوك | القوائم وأشرطة الأدوات.
وبالطبع ، يمكن توسيع قدرات شريط اللمس! فقط أضف الإجراء المطلوب إلى InterfaceGroup
المطابق.

موضوع التباين العالي
مثل منصة IntelliJ ، تتميز MPS بموضوع جديد عالي التباين. يمكن تمكينه في الإعدادات / التفضيلات -> المظهر والسلوك.

أدوات لإيجاد رمز المهملة
في الهجرة | يتم اتخاذ إجراءات كود المهم للعثور على كود مهمل والعمل مع استخداماته. البحث عن استخدامات المجموعات المهملة نتائج البحث حسب الإصدار المقصود من الحذف ، مما يساعد على تحديد مدى شدة وتحديد أي من الاستخدامات يجب إزالتها أولاً.

أيقونات للتنقل في طرق السلوك المنهكة / المنفذة
في مجالات فئات السلوك ، أضفنا أيقونات للتنقل في أساليب السلوك التي تم تجاوزها / تنفيذها. فيما يلي قائمة بأساليب getPresentation () التي تتجاوز أو تنفذ الطريقة المحددة. من القائمة ، يمكنك الانتقال بسهولة إلى أي من هذه الطرق.

تحسينات منبثقة للتنقل بين التجاوزات
النوافذ المنبثقة من المفاهيم / الفئات / الأساليب التي تم تجاوزها / تنفيذها أصبحت غير متزامنة. هذا يعني أن MPS ستضيف نتائج البحث إلى نافذة منبثقة في الخلفية. بالإضافة إلى ذلك ، يمكنك الآن تصفية نتائج البحث حسب اسم الكائن.

المكتشفون التغييرات
في هذا الإصدار ، قمنا بتحديث وتحسين الباحثين. للتنفيذ غير المتزامن لـ finder ، استخدم التعبير الخاص OnEachNodeFoundByExpression ، وهو عبارة عن استدعاء بسيط للباحث مع وظيفة رد اتصال لكل عقدة تم اكتشافها.
العثور على إعدادات استخدامات المفاهيم أيضًا. لقد أضفنا خيارات البحث Concept Ancestors and Derived Concepts ، والتي تعرض قائمة بالمفاهيم الأصل والطفل ، على التوالي. بالإضافة إلى ذلك ، تم تحسين إمكانات البحث عن أساليب السلوك باستخدام خيارات Overridden Methods و Overriding Methods.

تجاهل الأخطاء
في MPS ، يمكنك تجاهل الأخطاء على العقد. يعد هذا مناسبًا في الحالات التي يتم فيها عرض الخطأ في المحرر ، ولكن في سياق معين لا يكون له معنى (على سبيل المثال ، في قوالب المولد). سابقا ، كانت احتمالات قمع مثل هذه الأخطاء غير مرنة. إذا تم إضافة تعليق توضيحي للعقدة باستخدام السمة "SuppressErrorAnnotation" ، فسيتم استدعاء تأثير "Suppress error for node ...". أدى استخدام هذه النية إلى قمع جميع أنواع الأخطاء على هذه العقدة وجميع نسلها - وبهذه الطريقة يمكن تجاهل الأخطاء الفعلية.
من الممكن الآن تجاهل أنواع معينة فقط من الأخطاء. سيتم تجاهل الخطأ المحدد لهذه العقدة وجميع أحفادها ، ولكن سيتم عرض جميع الرسائل الأخرى. اقرأ المزيد حول ميزات إدارة الأخطاء الجديدة في الوثائق .

لغة التجميع والتغليف
نصائح والخدع
تستخدم تطبيقات RCP (Rich Client Platform) لإضافة نصائح وحيل من MPS بشكل افتراضي. الآن يمكن إعادة تعريف النصائح والحيل لتطبيقك باستخدام تصميم النصائح والحيل الجديدة في البرنامج النصي للبناء. كما كان من قبل ، يمكنك استخدام النصائح من توزيع MPS أو تعريفها بنفسك في دليل أو وحدة حلول والاستيراد.

نصائح والخدع وصف اللغة
لاستيراد النصائح والحيل إلى نص برمجي بناء من وحدة الحلول ، قم بإنشاء حل واستيراد اللغات jetbrains.mps.build.tips و jetbrains.mps.core.xml. ثم قم بإنشاء مثيل لمفهوم MPSTipsAndTricks ووصف نصائحك فيه. كل طرف هو نص HTML ولا يمكن أن يحتوي على أكثر من صورة واحدة.

طرق التعبئة
وضعنا علامة على العبوة المخصصة في BuildMps_IdeaPlugin كما تم إهمالها. بدلاً من ذلك ، استخدم طريقة التعبئة في بنية BuildMpsLayout_Plugin.
تضع طريقة التجميع Auto Packaging كل الوحدات النمطية للغة ونوع الحل في مجلد "اللغات" في دليل جذر البرنامج المساعد ، ويسمح خيار التغليف اليدوي للمطور بضبط بنية البرنامج المساعد بشكل مستقل.

تصميم جديد للتجميع ولغة التغليف
قمنا بتوسيع قدرات تكوين الاختبار في لغة التجميع والتعبئة والتغليف. من الممكن الآن تحديد مكونات إضافية IntelliJ IDEA التي يجب تحميلها لتشغيل اختبارات MPS من Ant.
في بعض الحالات ، لتشغيل الاختبار ، يلزم وجود مكون إضافي معين ، لا تستطيع لغة التجميع حسابه بواسطة الوحدات النمطية التي تحتوي على الاختبارات. الآن يمكنك تحديد المكون الإضافي اللازم لتشغيل الاختبار في تصميم تكوين الاختبار.

المحرر
إعادة استخدام خرائط عمل الخلية
يمكن إعادة استخدام عناصر خريطة عمل الخلية من خريطة إجراء موجودة باستخدام عمليات الاستيراد.

تحسينات أخرى
أنواع البيانات المترجمة بالكامل
بالانتقال إلى اللغات المترجمة بشكل كامل ، أنشأنا أنواع بيانات تم إنشاؤها بالكامل. جميع معلومات أنواع البيانات التي تم إنشاؤها متاحة من خلال واجهة برمجة تطبيقات SModel.
حفظ بيانات الترحيل في التعليقات التوضيحية
لقد طبقنا طريقة جديدة لحفظ البيانات أثناء عمليات الترحيل ، والتي نوصي باستخدامها في المستقبل. يجب الآن إرفاق العقدة المشتقة التي تحتوي على البيانات بأي عقدة موجودة بالقرب من المكان الذي تنتمي إليه البيانات.
في برنامج الترحيل الذي ينشئ العقد مع البيانات ، تحتاج إلى إعلان مفهوم هذه العقد واستخدام بنية putData () لإدراج كل تعليق توضيحي في النموذج:

استرداد العقد التي تحتوي على البيانات هو نفسه كما كان من قبل:

التغييرات في مربع حوار حل التعارض
في السابق ، في الصراع ، يمكن تطبيق التغييرات فقط على جانب واحد. لكن من المهم في بعض الأحيان عدم فقد التغييرات الأخرى.
ينطبق هذا على التغييرات في العقد المجاورة التي لها نفس الدور التعددي. الآن ، بعد تطبيق التغييرات على جانب واحد من الصراع ، سيتم عرض التغييرات من الفرع الآخر كإضافة. لإكمال حل النزاع ، يجب تطبيق هذه الإضافة أو رفضها.
بعد تطبيق التغييرات على الجانب الأيسر من الصراع ، يمكنك تطبيق أو تجاهل الخط على الجانب الأيمن:

يمكنك تنزيل الإصدار الجديد هنا ، نأمل أن يسعدك ذلك. في أي حال ، سوف ننتظر ملاحظاتك ! تتوفر قائمة كاملة من الإصلاحات في هذه الصفحة . يرجى الإبلاغ عن أي مشاكل لنا في تعقب .
فريق JetBrains MPS الخاص بك
محرك لتطوير