إصدار لغة البرمجة نيم 1.4.0

تم إصدار نسخة جديدة من لغة برمجة نظام Nim، والتي احتفلت في شهر سبتمبر من هذا العام بالذكرى السنوية الأولى لتأسيسها. أول نسخة مستقرة. اللغة تشبه لغة Python في بناء الجملة، وتشبه لغة C++ تقريبًا في الأداء. وفق الأسئلة الشائعة تستعير اللغة بشكل كبير من (حسب ترتيب المساهمة): Modula 3، Delphi، Ada، C++، Python، Lisp، Oberon.


يعمل في كل مكان بفضل القدرة على التجميع في C/C++/Objective-C/JS. انه يدعم وحدات الماكرو, منظمة التحرير الفلسطينية, الأدوية, استثناءات, تبادل التعليمات البرمجية الساخنة وأكثر بكثير. الترخيص: معهد ماساتشوستس للتكنولوجيا.

أهم التغييرات:

  • يوجد جامع بيانات مهملة ORC جديد يستخدم الخوارزمية من ARC، ولكنه في الوقت نفسه يتعامل مع المراجع الدائرية بطريقة خاصة. تم التمكين بواسطة خيار -gc:orc. حول اختلافات ARC/ORC هناك مقال عظيم.

  • تمت إضافة وضع لتعريفات الوظائف الصارمة، مما يتيح فحصًا إضافيًا لقابلية تغيير الكائن. يتم التنشيط عبر البراغما {.experimental: "strictFuncs".} أو عبر مفتاح --experimental:strictFuncs.

  • يمكن الآن استخدام الكلمة الأساسية from كمشغل.

  • تمت إضافة .noalias pragma. إنه يعين الكلمة الأساسية المقيدة C لزيادة الكفاءة التي يمكن أن توفرها الكلمة الأساسية.

  • يمكن الآن تحويل تحذيرات محددة إلى أخطاء عبر --warningAsError[X]:on|off.

  • أمر جديد: nim r main.nim [args...]، الذي يقوم بتجميع وتشغيل main.nim، ويتضمن --usenimcache بحيث يتم تخزين النتيجة في $nimcache/main$exeExt، باستخدام نفس المنطق مثل nim c - ص للتخلص من إعادة التجميع عندما لا تتغير المصادر. مثال:

nim r compiler/nim.nim --help # تم تجميعه لأول مرة
صدى "استيراد نظام التشغيل" ؛ صدى getCurrentCompilerExe()' | نيم ص - # هذا يعمل أيضًا
nim r compiler/nim.nim --fullhelp # بدون إعادة الترجمة
nim r —nimcache:/tmp main # تم حفظ الملف الثنائي في /tmp/main

  • تمت إضافة تلميح جديد -hint:msgOrigin، والذي سيُظهر المكان الذي أنشأ فيه المترجم رسائل الخطأ/التحذير. يساعد هذا عندما لا يكون من الواضح مصدر الرسالة.

  • تمت إضافة علامة —backend:js|c|cpp|objc (أو -b:js، وما إلى ذلك) لتغيير الواجهة الخلفية.

  • تمت إضافة علامة --usenimcache لإخراج الثنائيات إلى nimcache.

  • تمت إزالة المفاتيح: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • لا تعرض الأداة المساعدة nimsuggest الآن الإعلان المسبق فحسب، بل تعرض أيضًا موقع التنفيذ لطلب def.

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

المصدر: linux.org.ru