تتوفر لغة Dart 2.14 وإطار Flutter 2.5

نشرت Google إصدارًا من لغة برمجة Dart 2.14 ، والتي تستمر في تطوير فرع Dart 2 المعاد تصميمه جذريًا ، والذي يختلف عن الإصدار الأصلي للغة Dart باستخدام كتابة ثابتة قوية (يمكن استنتاج الأنواع تلقائيًا ، لذا فإن تحديد الأنواع هو غير مطلوب ، ولكن الكتابة الديناميكية لم تعد مستخدمة وتم احتساب النوع في البداية إلى المتغير ثم تم تطبيق فحص صارم على النوع).

ميزات لغة Dart:

  • بناء جملة مألوف وسهل التعلم وهو أمر طبيعي لمبرمجي JavaScript و C و Java.
  • توفير بدء تشغيل سريع وأداء عالي لجميع متصفحات الويب الحديثة وأنواع البيئات المختلفة ، من الأجهزة المحمولة إلى الخوادم القوية.
  • القدرة على تحديد الفئات والواجهات لتمكين التغليف وإعادة استخدام الأساليب والبيانات الموجودة.
  • يؤدي تحديد الأنواع إلى تسهيل تصحيح الأخطاء واكتشافها ، ويجعل الكود أكثر وضوحًا وقابلية للقراءة ، ويسهل على مطوري الطرف الثالث تنقيحها وتحليلها.
  • من بين الأنواع المدعومة: أنواع مختلفة من التجزئة ، والمصفوفات والقوائم ، وقوائم الانتظار ، وأنواع الأرقام والسلسلة ، وأنواع التاريخ والوقت ، والتعبيرات العادية (RegExp). من الممكن إنشاء الأنواع الخاصة بك.
  • لتنظيم التنفيذ المتوازي ، يُقترح استخدام الفئات ذات السمة المعزولة ، والتي يتم تنفيذ كودها بالكامل في مساحة معزولة في منطقة ذاكرة منفصلة ، والتفاعل مع العملية الرئيسية عن طريق إرسال الرسائل.
  • دعم استخدام المكتبات التي تبسط دعم وتصحيح مشاريع الويب الكبيرة. يمكن تضمين تطبيقات الطرف الثالث للوظائف كمكتبات مشتركة. يمكن تقسيم التطبيقات إلى أجزاء ويمكن تخصيص تطوير كل جزء لفريق منفصل من المبرمجين.
  • مجموعة من الأدوات الجاهزة لدعم التطوير بلغة Dart ، بما في ذلك تنفيذ أدوات التطوير الديناميكي وتصحيح الأخطاء باستخدام تصحيح التعليمات البرمجية أثناء التنقل ("التحرير والمتابعة").
  • يتم توفير SDK ، ومدير حزمة الحانة ، ومحلل شفرة dart_analyzer الثابت ، ومجموعة من المكتبات ، و DartPad IDE ، والمكونات الإضافية التي تدعم Dart لـ IntelliJ IDEA ، و WebStorm ، و Emacs ، و Sublime Text 2 ، و Vim لتبسيط تطوير Dart.
  • يتم توزيع حزم إضافية مع مكتبات وأدوات مساعدة من خلال مستودع النشر ، الذي يحتوي على أكثر من 20 حزمة.

التغييرات الرئيسية في إصدار Dart 2.14:

  • تمت إضافة عامل إزاحة ثلاثي جديد (>>>) ، والذي ، على عكس عامل التشغيل ">>" ، لا يؤدي عملية حسابية ، بل تحول منطقي لا يأخذ في الاعتبار بت الإشارة (يتم إجراء التحول دون التقسيم إلى الأرقام الموجبة والسالبة).
  • تمت إزالة القيود المفروضة على وسيطات النوع التي تمنع استخدام أنواع الوظائف العامة كوسيطة نوع. على سبيل المثال ، يمكنك الآن تحديد: القائمة المتأخرة (T)> وظائف id ؛ رد الاتصال var = [ (قيمة T) => قيمة] ؛ وظيفة S المتأخرة (T)> (S) f ؛
  • يُسمح بتحديد الوسائط بأنواع في التعليقات التوضيحية مثلDeprecated. على سبيل المثال ، يمكنك الآن تحديد:TypeHelper (42 ، "المعنى")
  • تمت إضافة الأساليب الثابتة hash و hashAll و hashAllUnordered إلى المكتبة القياسية (الأساسية) في فئة الكائن. معالجة محسّنة للتوقيت المحلي في فئة DateTime عند تحويل الساعات بين التوقيت الصيفي والشتاء التي لا تزيد عن ساعة واحدة (على سبيل المثال ، في أستراليا ، يتم استخدام إزاحة قدرها 30 دقيقة). أضافت حزمة ffi دعمًا لآلية تخصيص ذاكرة الساحة ، والتي تقوم تلقائيًا بإصدار الموارد. تمت إضافة القدرة على إنشاء أشكال Dart من C إلى حزمة ffigen.
  • تم نقل 250 حزمة الأكثر شيوعًا من مستودع pub.dev و 94٪ من أفضل 1000 حزمة لاستخدام وضع الأمان Null ، والذي سيتجنب الأعطال التي تسببها محاولات استخدام المتغيرات التي لم يتم تحديد قيمتها وضبطها على Null ". يشير الوضع إلى أنه لا يمكن أن تحتوي المتغيرات على قيم غير محددة ما لم يتم تعيينها بشكل صريح على قيمة خالية. يأخذ الوضع في الاعتبار بدقة أنواع المتغيرات ، مما يسمح للمترجم بتطبيق تحسينات إضافية. يتم التحقق من مطابقة النوع في وقت الترجمة ، على سبيل المثال ، إذا حاولت تعيين القيمة "Null" إلى متغير من نوع لا يشير إلى حالة غير محددة ، مثل "int" ، فسيتم عرض خطأ.
  • تم اقتراح مجموعات موحدة من القواعد لمحلل الكود (linter) ، والتي توفر دعمًا متزامنًا للتحقق من الامتثال لإرشادات نمط التعليمات البرمجية لـ Dart وإطار عمل Flutter. لأسباب تاريخية ، اختلفت قواعد الترميز الخاصة بـ Flutter و Dart ، بالإضافة إلى ذلك ، بالنسبة لـ Dart ، كانت هناك مجموعتان من القواعد في الحياة اليومية - المتحذلق من Google والقواعد من مجتمع مطوري Dart. يقدم Dart 2.14 مجموعة قواعد عامة جديدة لـ linter ، وهو الإعداد الافتراضي لمشاريع Dart الجديدة و Flutter SDK. تتضمن المجموعة القواعد الأساسية (حزمة lints / core.yaml) ، والقواعد الإضافية الموصى بها (lints / recommended.yaml) ، والتوصيات الخاصة بـ Flutter (flutter_lints / flutter.yaml). يتم تشجيع مستخدمي القواعد المتحذلقين على التبديل إلى استخدام أسلوب الترميز الجديد بناءً على التوصيات الواردة في وثائق Dart.
  • في التنسيق ، تم إجراء تحسينات على تنسيق كتل التعليمات البرمجية المتتالية ، والتي يمكن أن تحسن أداء التنسيق بشكل كبير وتجنب التفسير الغامض لملكية عناصر التعبير. على سبيل المثال ، استدعاء "..doIt" في التعبير "var نتيجة = errorState؟ foo: bad..doIt () "لا يشير إلى الجزء الشرطي من الكتلة" bad "، ولكنه يشير إلى التعبير بأكمله ، لذلك يتم فصله الآن عند التنسيق: var result = errorState؟ foo: bad ..doIt () ؛
  • تمت إضافة دعم معالجات Apple M1 (Silicon) إلى SDK ، مما يعني القدرة على تشغيل Dart VM والمرافق ومكونات SDK على الأنظمة باستخدام معالج Apple Silicon ، بالإضافة إلى دعم تجميع الملفات القابلة للتنفيذ لهذه الرقائق.
  • تمت إضافة دعم ملف الخدمة الجديد ".pubignore" إلى الأمر "dart pub" ، والذي يسمح لك بتحديد قائمة بالملفات التي سيتم تخطيها عند نشر حزمة إلى مستودع pub.dev. لا تتداخل هذه الإعدادات مع قائمة التجاهل ".gitignore" (في بعض الحالات ، يحتاج pub.dev إلى عدم تثبيت الملفات التي يحتاجها Git ، مثل البرامج النصية للتطوير الداخلي).
  • تم العمل على تحسين أداء أمر "dart test" ، والذي لا يتطلب الآن إعادة ترجمة الاختبارات بعد تغيير pubspec ، إذا لم يتغير رقم الإصدار.
  • توقف دعم التجميع في وضع التوافق ECMAScript 5 (سيؤدي التغيير إلى فقدان التوافق مع IE11).
  • تم إهمال الأدوات المساعدة الخاصة بـ stagehand و dartfmt و dart2native واستبدالها بأوامر مدمجة يتم استدعاؤها من خلال الأداة المساعدة dart.
  • تم إهمال آلية VM Native Extensions. للاتصال بالرمز الأصلي من كود Dart ، يوصى باستخدام Dart FFI الجديد (واجهة الوظائف الخارجية).

في الوقت نفسه ، يتم تقديم إصدار هام من إطار عمل واجهة مستخدم Flutter 2.5 ، والذي يعتبر بديلاً لـ React Native ويسمح لك بإصدار تطبيقات لأنظمة iOS و Android و Windows و macOS و Linux استنادًا إلى قاعدة بيانات واحدة ، وكذلك إنشاء تطبيقات للتشغيل في المتصفحات. على أساس Flutter ، تم بناء غلاف المستخدم لنظام التشغيل Fuchsia microkernel الذي طورته Google.

يتم تنفيذ الجزء الأكبر من كود Flutter في Dart ، ويتم كتابة محرك وقت التشغيل لتشغيل التطبيقات بلغة C ++. عند تطوير التطبيقات ، بالإضافة إلى لغة Dart الأصلية لـ Flutter ، يمكنك استخدام واجهة Dart Foreign Function لاستدعاء كود C / C ++. يتم تحقيق أداء وقت تشغيل عالي من خلال تجميع التطبيقات إلى التعليمات البرمجية الأصلية للأنظمة الأساسية المستهدفة. في الوقت نفسه ، لا يحتاج البرنامج إلى إعادة التحويل البرمجي بعد كل تغيير - يوفر Dart وضع إعادة التحميل السريع الذي يسمح لك بإجراء تغييرات على تطبيق قيد التشغيل وتقييم النتيجة على الفور.

التغييرات الرئيسية في Flutter 2.5:

  • تم إجراء تحسينات كبيرة في الأداء. تم تنفيذ تجميع Shader المسبق لواجهة برمجة تطبيقات الرسوميات المعدنية على منصات iOS و macOS. تحسين كفاءة معالجة الأحداث غير المتزامنة. تم إصلاح مشكلة التأخير عند قيام أداة تجميع البيانات المهملة بتحرير الذاكرة من الصور غير المستخدمة (على سبيل المثال ، أثناء تشغيل صورة GIF متحركة مدتها 20 ثانية ، تم تقليل عدد عمليات جمع البيانات المهملة من 400 إلى 4. زمن الانتقال عند تمرير الرسائل بين Dart و تم تخفيض Objective-C / Swift بنسبة تصل إلى 50٪ (iOS) أو Java / Kotlin (Android) تمت إضافة دعم البناء الأصلي للأنظمة القائمة على شريحة Apple Silicon.
    تتوفر لغة Dart 2.14 وإطار Flutter 2.5
  • بالنسبة لمنصة Android ، تم إنشاء دعم لتشغيل التطبيقات في وضع ملء الشاشة. استمر تنفيذ مفهوم التصميم "Material You" ، المقدم كمتغير للجيل القادم من تصميم المواد. تمت إضافة حالة جديدة MaterialState.scrolledUnder ، يتم عرض أشرطة التمرير ديناميكيًا عند تغيير حجمها ، وتم اقتراح واجهة جديدة لعرض لافتات الإشعارات.
  • تم توسيع المكون الإضافي للكاميرا بشكل كبير باستخدام عناصر تحكم للتركيز التلقائي والتعرض والفلاش والتكبير وتقليل الضوضاء والدقة.
  • تم تحسين أدوات المطور (DevTools) من خلال وضع فحص عنصر واجهة المستخدم المحدث ، بالإضافة إلى أدوات للكشف عن تأخيرات العرض وتتبع تجميع shader.
    تتوفر لغة Dart 2.14 وإطار Flutter 2.5
  • ملحقات محسنة لبرنامج Visual Studio Code و IntelliJ / Android Studio.

المصدر: opennet.ru

إضافة تعليق