لوا 5.4

بعد عامين من التطوير، في 29 يونيو، تم إصدار نسخة جديدة من لغة البرمجة Lua، 5.4، بهدوء وهدوء.

Lua هي لغة برمجة بسيطة ومفسرة ويمكن دمجها بسهولة في التطبيقات. نظرًا لهذه الصفات، تُستخدم Lua على نطاق واسع كلغة لتوسيع أو وصف تكوين البرامج (على وجه الخصوص، ألعاب الكمبيوتر). يتم توزيع Lua بموجب ترخيص MIT.

تم إصدار الإصدار السابق (5.3.5) في 10 يوليو 2018.

التغييرات الرئيسية في الإصدار الجديد

  • جامع القمامة الجيل الجديد. في الدالة Collectgarbage، تم إهمال معلمات setpause وsetstepmul ويوصى باستخدام المعلمات الإضافية بدلاً من ذلك؛

  • وظيفة جديدة لإصدار التحذيرات التحذيرية مع إمكانية تعطيل عرضها؛

  • يستخدم التطبيق الجديد لـ math.random خوارزمية xoshiro256** بدلاً من libc المتوفرة ويقوم بتهيئة المولد برقم عشوائي؛

  • المتغيرات الثابتة

  • المتغيرات "المراد إغلاقها" هي ثوابت محلية يتم من خلالها تنفيذ الطريقة __Close عند مغادرة النطاق؛

  • وظيفة جديدة lua_resetthread - مسح المكدس وإغلاق كافة المتغيرات "المغلقة"؛

  • وظيفة جديدة coroutine.Close - تغلق coroutine المحدد وجميع متغيراته "المغلقة"؛

  • يمكن أن تحتوي بيانات المستخدم على مجموعة من القيم التي يتم الوصول إليها عن طريق الفهرس. تم تقديم وظائف جديدة للعمل معهم: lua_newuserdatauv وlua_setiuservalue وlua_getiuservalue؛

  • تتوفر معلومات تصحيح الأخطاء حول المعلمات وقيم الإرجاع للوظائف؛

  • إذا تم استخدام فهرس عدد صحيح في حلقة for وحدث تجاوز، تنتهي الحلقة؛

  • تمت إضافة وسيطة اختيارية إلى وظيفة string.gmatch، مع تحديد الإزاحة من بداية السلسلة للبحث عن التطابقات؛

  • تم نقل وظائف تحويل السلاسل ضمنيًا إلى أرقام إلى مكتبة السلاسل، وتغير سلوكها. على سبيل المثال، أصبحت نتيجة العملية "1" + "2" الآن عددًا صحيحًا وليس رقم الفاصلة العائمة؛

  • في وظيفة تخصيص الذاكرة، قد يحدث خطأ عند تقليل كتلة الذاكرة؛

  • حرف تنسيق جديد في الدالة string.format - %p (للمؤشرات)؛

  • تقبل مكتبة utf8 رموز الأحرف التي تصل إلى 2³¹ (إذا تم تحديد علامة خاصة، فبدونها يُسمح فقط بالرموز التي تصل إلى 0x10FFFF ولا يُسمح بالبدائل)؛

  • يتم تحويل الثوابت الصحيحة خارج نطاق القيم إلى أرقام عائمة (حدث قص البتات مسبقًا)؛

  • لم يعد يستخدم __lt metamethod لمحاكاة __le metamethod، إذا لزم الأمر، يجب تحديد __le metamethod بشكل صريح؛

  • لا يمكن إنشاء تسمية لعبارة goto إذا كانت التسمية التي تحمل نفس الاسم موجودة بالفعل في النطاق الحالي (حتى لو تم تعريفها في النطاق الخارجي)؛

  • يمكن أن تكون الطريقة metamethod __gc أكثر من مجرد دالة. إذا فشلت محاولة استدعاء أسلوب، فسيتم طباعة تحذير؛

  • لا تستدعي وظيفة الطباعة سلسلة لكل وسيطة، ولكنها تستخدم التحويلات الداخلية الخاصة بها؛

  • ترجع الدالة io.lines مجموعة من أربع قيم بدلاً من واحدة، لمحاكاة السلوك القديم، ضع الاستدعاء بين قوسين إذا كنت تقوم بتمريره كمعلمة إلى استدعاء دالة أخرى.

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

إضافة تعليق