إصدار لغة البرمجة Crystal 1.5

تم نشر إصدار لغة البرمجة Crystal 1.5، والتي يحاول مطوروها الجمع بين سهولة التطوير في لغة Ruby وأداء التطبيقات العالي المميز للغة C. بناء جملة Crystal قريب من لغة Ruby، ولكنه غير متوافق تمامًا معها، على الرغم من أن بعض برامج Ruby تعمل بدون تعديل. كود المترجم مكتوب بلغة Crystal ويتم توزيعه بموجب ترخيص Apache 2.0.

تستخدم اللغة التحقق من النوع الثابت، ويتم تنفيذه دون الحاجة إلى تحديد أنواع المتغيرات ووسيطات الطريقة بشكل صريح في التعليمات البرمجية. يتم تجميع برامج Crystal في ملفات قابلة للتنفيذ، مع تقييم وحدات الماكرو وإنشاء التعليمات البرمجية في وقت الترجمة. في برامج Crystal، من الممكن ربط الارتباطات المكتوبة بلغة C. يتم تنفيذ موازاة تنفيذ التعليمات البرمجية باستخدام الكلمة الأساسية "spawn"، والتي تتيح لك تشغيل مهمة في الخلفية في الوضع غير المتزامن دون حظر الخيط الرئيسي، في شكل خيوط خفيفة الوزن تسمى الألياف.

توفر المكتبة القياسية مجموعة كبيرة من الوظائف الشائعة، بما في ذلك أدوات معالجة CSV وYAML وJSON ومكونات إنشاء خوادم HTTP ودعم WebSocket. أثناء عملية التطوير، من المناسب استخدام أمر "crystal play"، الذي ينشئ واجهة ويب (المضيف المحلي: 8080 افتراضيًا) للتنفيذ التفاعلي للتعليمات البرمجية بلغة Crystal.

التغييرات الرئيسية:

  • أضاف المترجم فحصًا لتوافق أسماء الوسائط في تنفيذ الطريقة المجردة وفي تعريفها. إذا كان هناك عدم تطابق في الاسم، فسيتم الآن إصدار تحذير: فئة مجردة FooAbstract Abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— تحذير: المعلمة الموضعية 'name' تتوافق مع المعلمة 'number' للطريقة التي تم تجاوزها FooAbstract#foo(number : Int32)، والتي لها اسم مختلف وقد تؤثر على تمرير الوسيطة المسماة
  • عند تعيين وسيطة لأسلوب غير مكتوب لقيمة متغير، تصبح الوسيطة الآن مقيدة بنوع ذلك المتغير. فئة Foo @x : Int64 def تهيئة (x) @x = x # سيتم كتابة المعلمة x @x end end
  • يسمح لك بإضافة التعليقات التوضيحية إلى معلمات الأساليب أو وحدات الماكرو. def foo(@[MaybeUnused] x); نهاية #موافق
  • تمت إضافة دعم لاستخدام الثوابت كمؤشرات وأسماء في صفوف. KEY = "s" foo = {s: "String"، n: 0} يضع foo[KEY].size
  • تمت إضافة طرق File#delete?‎ جديدة إلى File API لحذف الملفات والأدلة. و Dir#delete?، والتي تُرجع خطأ إذا كان الملف أو الدليل مفقودًا.
  • تم تعزيز حماية الأسلوب File.tempfile، والذي لا يسمح الآن بالأحرف الفارغة في الأسطر التي تشكل اسم الملف.
  • تمت إضافة متغير البيئة NO_COLOR، الذي يعمل على تعطيل تمييز الألوان في مخرجات المترجم والمترجم.
  • تم تحسين العمل في وضع المترجم الفوري بشكل ملحوظ.

المصدر: opennet.ru

إضافة تعليق