نسخة جديدة من لغة البرمجة Nim 0.20

يأخذ مكانا إصدار لغة برمجة النظام نيم 0.20.0. تستخدم اللغة الكتابة الثابتة وتم تصميمها مع وضع Pascal و C ++ و Python و Lisp في الاعتبار. يتم تجميع الكود المصدري لـ Nim في تمثيل C أو C ++ أو JavaScript. بعد ذلك ، يتم تجميع كود C / C ++ الناتج في ملف قابل للتنفيذ باستخدام أي مترجم متاح (clang ، gcc ، icc ، Visual C ++) ، مما يسمح لك بتحقيق أداء قريب من C ، إذا لم تأخذ في الاعتبار تكلفة التشغيل جامع القمامة. على غرار Python ، يستخدم Nim المسافة البادئة كفواصل للكتل. يتم دعم أدوات وإمكانيات البرمجة الوصفية لإنشاء لغات خاصة بالمجال (DSL). رمز المشروع زودت بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.

يمكن اعتبار إصدار Nim 0.20 مرشحًا لإصدار أول إصدار مستقر 1.0 ، بما في ذلك العديد من تغييرات كسر التوافق اللازمة لتشكيل أول فرع مستقر يلتزم بحالة اللغة. يوصف الإصدار 1.0 بأنه إصدار دعم مستقر وطويل الأجل يضمن الحفاظ على التوافق مع الإصدارات السابقة في الجزء المستقر من اللغة. بشكل منفصل ، سيكون الوضع التجريبي متاحًا أيضًا في المترجم ، حيث سيتم تطوير ميزات جديدة قد تكسر التوافق مع الإصدارات السابقة.

من بين التغييرات المقترحة في Nim 0.20 ، يمكننا تسليط الضوء على:

  • "ليس" دائمًا عامل تشغيل أحادي ، أي تعابير مثل "تأكيد (وليس أ)" غير صالحة الآن ولا يُسمح إلا بـ "التأكيد ليس" ؛
  • تم تمكين عمليات التحقق الصعبة لتحويل الأعداد الصحيحة والأرقام الحقيقية في وقت الترجمة ، أي سينتج عن التعبير "const b = uint16 (-1)" الآن خطأ ، حيث لا يمكن تحويل -1 إلى نوع عدد صحيح بدون إشارة ؛
  • يتم توفير تفريغ مجموعات tuple للثوابت ومتغيرات الحلقة.
    على سبيل المثال ، يمكن الآن استخدام مهام مثل 'const (d، e) = (7، "eight")' و "for (x، y) in f" ؛

  • توفير التهيئة الافتراضية للتجزئة والجداول. على سبيل المثال ، بعد التصريح عن "var s: HashSet [int]" ، يمكنك تنفيذ "s.incl (5)" على الفور ، والذي كان يؤدي إلى حدوث خطأ ؛
  • تحسين محتوى معلومات الأخطاء للمشكلات المتعلقة بمشغل "الحالة" وفهرس الصفيف خارج الحدود ؛
  • يحظر تغيير طول الجدول أثناء التكرار.

المصدر: opennet.ru

إضافة تعليق