لقد تم إصدار Dart 2.12، مع إمكانية التشغيل البيني وقابلية التشغيل البيني لـ C

أصدرت Google Dart 2.12، وهو إصدار جديد من اللغة المستخدمة لإنشاء التطبيقات في Flutter. يأتي الإصدار جنبًا إلى جنب مع Flutter 2.0.

مع ال الافراج عن الرفرفة 2.0، تعمل Google أيضًا على جلب Dart 2.12 إلى الإصدار الثابت. في حال كنت لا تعرف، فإن Dart هي اللغة التي يستخدمها Flutter. إنها لغة تعتمد على TypeScript ولكنها تأتي مع بعض إضافات ميزات اللغة، بما في ذلك تلك التي سأقوم بمراجعتها.

سلامة فارغة

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

في Dart 2.12، يوجد الآن دعم كامل للسلامة الخالية، مع بناء جملة مشابه لـ Swift وKotlin. حتى أن هناك عملية صب ذكية، حيث إذا علم Dart على وجه اليقين أن المتغير الذي يكون خاليًا في العادة لا يمكن أن يكون خاليًا، فسوف يحوله ضمنيًا إلى نموذج غير فارغ.

نظرًا لأن السلامة الخالية هي تغيير جذري (جدًا)، فإن هذه الميزة قابلة للاشتراك. إذا قمت بالتحديث إلى Dart 2.12، فلن يتعطل تجميعك، ولن تضطر إلى قضاء ساعات في إضافة تلميحات إلى قابلية البطلان لكل شيء. يمكنك أيضًا استخدام التبعيات الآمنة الخالية إذا لم يكن مشروعك آمنًا بعد.

بمجرد أن تقرر الترحيل، يمكنك استخدام أداة الترحيل المضمنة (هجرة السهام) و/أو دليل الهجرة لإعداد كل شيء.

أيضًا، على الرغم من تضمين null-safety في Dart 2.12، إذا قمت بإنشاء مشروع Flutter جديد، فلن يتم تمكين null-safety خارج الصندوق. ستحتاج إلى تمكينه يدويًا. سيتم تمكين الأمان الفارغ في مشاريع Dart الجديدة.

واجهة الوظائف الأجنبية

على الرغم من أن تركيز Dart (وFlutter) ينصب على التوافق الكامل عبر الأنظمة الأساسية، إلا أنه لا تزال هناك بعض الأشياء التي يجب القيام بها محليًا. لتسهيل العمليات المحلية، تحتوي Dart على واجهة وظيفة أجنبية، أو FFI. يتيح لك FFI التفاعل مع كود C من Dart دون الحاجة إلى اللجوء إلى استدعاءات واجهة برمجة التطبيقات (API) الغريبة المستندة إلى السلسلة أو طرق التشغيل التفاعلي الأخرى غير التقليدية.

ومع Dart 2.12، أصبح FFI الآن مستقرًا، مما يعني أنه جاهز للاستخدام في مشاريع الإنتاج ومكتمل الميزات في الغالب.

مع أخذ ذلك في الاعتبار، هناك بعض التغييرات في FFI، بما في ذلك بعض التغييرات العاجلة.

كان معظم التركيز في هذا الإصدار على كيفية استخدام البنيات مع Dart وC. أولاً، يمكنك الآن تمرير بنيات في كود C الخاص بك حسب المرجع والقيمة، حيث كانت المراجع فقط مدعومة سابقًا. ميزة أخرى مهمة هي دعم البنيات المتداخلة، والتي لم تكن موجودة قبل هذا الإصدار.

الآن للتغييرات العاجلة. إذا كنت تستخدم FFI، فقد تحتاج إلى تحديث التعليمات البرمجية الخاصة بك للعمل مع الإصدار 2.12. مع هذا الإصدار من FFI، لم يعد بإمكانك إنشاء بنيات فارغة. إذا كنت بحاجة إلى واحد لسبب ما، فيمكنك استخدام النوع "غير الشفاف" الجديد. هناك أيضًا بعض التغييرات على كيفية عمل بعض وظائف FFI المضمنة، والتي يمكنك القيام بها قرأت عن هنا.

أخيرًا، هناك حزمة جديدة لـ FFI تتيح لك إنشاء أغلفة FFI من ملفات رأس C الموجودة، والتي تسمى ffigen. إذا كان لديك الكثير من أكواد C التي تحتاج إلى استخدامها، مع الكثير من طرق واجهة برمجة التطبيقات (API)، فسيكون ذلك مفيدًا جدًا. حتى لو كان مقدار كود C لديك صغيرًا، فهذه ميزة رائعة ومريحة.


وهذا إلى حد كبير بالنسبة لـ Dart 2.12. مع إضافة الأمان الفارغ ومكتبة التشغيل البيني المستقرة للغة C، تتحول Dart إلى لغة غنية جدًا بالميزات. أخبرنا برأيك في Dart 2.12 في التعليقات!