إطلاق لغة البرمجة Lua 5.4

بعد خمس سنوات من التطوير متاح الإفراج عن لوا 5.4، وهي لغة برمجة نصية سريعة ومدمجة تستخدم على نطاق واسع كلغة مضمنة (على سبيل المثال، لتحديد التكوين أو كتابة الامتدادات). كود مترجم Lua مكتوب بلغة C و وزعت من خلال بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.

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

رئيسي الابتكارات:

  • تم تنفيذ طريقة جديدة لتشغيل أداة تجميع القمامة - "الأجيال"، والذي يكمل وضع جمع البيانات المهملة المتزايد المتاح مسبقًا. يتضمن الوضع الجديد تشغيل تتبع ارتباطات مختصر بشكل متكرر، بحيث يغطي الكائنات التي تم إنشاؤها مؤخرًا فقط. لا يتم تنفيذ الاجتياز الكامل لجميع الكائنات إلا إذا لم يكن من الممكن، بعد اجتياز قصير، تحقيق استهلاك الذاكرة المطلوب. يتيح لك هذا الأسلوب تحقيق أداء أعلى وتقليل استهلاك الذاكرة عند تخزين عدد كبير من الكائنات التي تعيش لفترة قصيرة.
  • تمت إضافة القدرة على تحديد المتغيرات الثابتة المحددة باستخدام السمة "const". لا يمكن تعيين مثل هذه المتغيرات إلا مرة واحدة، وبمجرد تهيئتها، لا يمكن تغييرها.
  • تمت إضافة دعم للمتغيرات "أن تكون مغلقة"، والتي يتم تعيينها باستخدام السمة "إغلاق" وتشبه المتغيرات المحلية الثابتة (مع السمة const)، وتختلف عنها في أن القيمة مغلقة (يتم استدعاء الأسلوب "__Close") عند الخروج من النطاق، على سبيل المثال، بعد الانتهاء الطبيعي للكتلة، قم بالانتقال باستخدام Break/goto/return أو الخروج عند حدوث خطأ.
  • يكتب "بيانات المستخدم"، الذي يوفر القدرة على تخزين أي بيانات C في متغيرات Lua (يمثل كتلة من البيانات في الذاكرة أو يحتوي على مؤشر C)، يمكن أن يحتوي الآن على عدة قيم (يحتوي على عدة جداول وصفية).
  • تم تقديم تطبيق جديد لوظيفة توليد أرقام عشوائية زائفة - math.random.
  • تمت إضافة نظام التحذيرات التي يتم تحديدها باستخدام التعبير حذر وعلى عكس الأخطاء، لا تؤثر على تنفيذ البرنامج.
  • تمت إضافة معلومات تصحيح الأخطاء حول وسيطات الوظائف وقيم الإرجاع.
  • تم اقتراح دلالات جديدة لتعداد الأعداد الصحيحة في الحلقات "For". يتم حساب عدد التكرارات قبل بدء الحلقة، مما يتجنب تجاوز سعة المتغير والتكرار. إذا كانت القيمة الأولية أكبر من القيمة المحددة، فسيتم عرض خطأ.
  • فى مهمة 'string.gmatchتمت إضافة وسيطة اختيارية جديدة "init"، والتي تحدد الموضع الذي سيتم بدء البحث فيه (افتراضيًا، من حرف واحد).
  • تمت إضافة ميزات جديدة 'lua_resetthread'(يعيد تعيين مؤشر الترابط، ويمسح مكدس الاستدعاءات بالكامل ويغلق جميع المتغيرات "المراد إغلاقها") و'coroutine. Close(يغلق الكوروتين وجميع المتغيرات "المراد إغلاقها" المرتبطة به).
  • تم نقل وظائف تحويل السلاسل إلى أرقام إلى مكتبة "السلاسل".
  • قد تفشل الآن استدعاءات وظيفة تخصيص الذاكرة إذا تم تقليل حجم كتلة الذاكرة.
  • فى مهمة 'string.formatتمت إضافة دعم لمحدد التنسيق الجديد '%p' (تم إرجاع المؤشر بواسطة lua_topointer).
  • توفر مكتبة utf8 الدعم رموز الأحرف بأرقام تصل إلى 2^31.

المصدر: opennet.ru

إضافة تعليق