Lua 5.4

Ikki yillik rivojlanishdan so'ng, 29-iyun kuni Lua dasturlash tilining yangi versiyasi 5.4 jim va jimgina chiqdi.

Lua oddiy, talqin qilinadigan dasturlash tili bo'lib, uni ilovalarga osongina integratsiyalash mumkin. Ushbu fazilatlar tufayli Lua dasturlarning (xususan, kompyuter o'yinlari) konfiguratsiyasini kengaytirish yoki tavsiflash uchun til sifatida keng qo'llaniladi. Lua MIT litsenziyasi ostida tarqatiladi.

Oldingi versiya (5.3.5) 10-yil 2018-iyulda chiqarilgan.

Yangi versiyadagi asosiy o'zgarishlar

  • yangi avlod axlat yig'uvchi. Collectgarbage funksiyasida setpause va setstepmul parametrlari eskirgan va o‘rniga qo‘shimcha parametr tavsiya etiladi;

  • displeyni o'chirib qo'yish qobiliyatiga ega bo'lgan ogohlantirish ogohlantirishlarini berishning yangi funksiyasi;

  • math.random ning yangi ilovasi taqdim etilgan libc o'rniga xoshiro256** algoritmidan foydalanadi va generatorni tasodifiy son bilan ishga tushiradi;

  • doimiy o'zgaruvchilar;

  • “yopilishi kerak bo‘lgan” o‘zgaruvchilar mahalliy konstantalar bo‘lib, ular uchun __close usuli amaldan chiqishda bajariladi;

  • lua_resetthread yangi funksiyasi - stekni tozalaydi va barcha "yopiq" o'zgaruvchilarni yopadi;

  • yangi funktsiya coroutine.close - belgilangan koroutinni va uning barcha "yopiq" o'zgaruvchilarini yopadi;

  • foydalanuvchi ma'lumotlari indeks bo'yicha kiradigan qiymatlar to'plamini o'z ichiga olishi mumkin. Ular bilan ishlash uchun yangi funksiyalar joriy etildi: lua_newuserdatauv, lua_setiuservalue va lua_getiuservalue;

  • Funktsiyalarning parametrlari va qaytish qiymatlari haqida disk raskadrovka ma'lumotlari mavjud;

  • agar for tsiklida butun son indeks ishlatilsa va toshib ketish sodir bo'lsa, tsikl tugaydi;

  • string.gmatch funksiyasiga ixtiyoriy argument qo'shildi, u mos keladiganlarni qidirish uchun satr boshidan ofsetni belgilaydi;

  • satrlarni raqamlarga bilvosita aylantirish funktsiyalari string kutubxonasiga ko'chirildi va ularning xatti-harakati o'zgardi. Masalan, "1" + "2" operatsiyasining natijasi endi suzuvchi nuqtali raqam emas, balki butun son;

  • xotirani ajratish funksiyasida xotira blokini kamaytirishda xatolik yuz berishi mumkin;

  • string.format funksiyasida yangi formatlash belgisi - %p (ko'rsatkichlar uchun);

  • utf8 kutubxonasi 2³¹ gacha bo'lgan belgilar kodlarini qabul qiladi (agar maxsus bayroq ko'rsatilgan bo'lsa, u holda faqat 0x10FFFFgacha bo'lgan kodlarga ruxsat beriladi va surrogatlarga ruxsat berilmaydi);

  • qiymatlar oralig'idan tashqaridagi butun son konstantalari suzuvchi raqamlarga aylantiriladi (ilgari bit kesish sodir bo'lgan);

  • __lt metametodi endi __le metametodiga taqlid qilish uchun ishlatilmaydi, agar kerak bo'lsa, __le metametod aniq ko'rsatilishi kerak;

  • Agar xuddi shu nomdagi yorliq joriy miqyosda allaqachon mavjud bo'lsa (hatto u tashqi doirada aniqlangan bo'lsa ham) goto bayonoti uchun yorliq yaratib bo'lmaydi;

  • __gc metametodi shunchaki funktsiyadan ko'proq bo'lishi mumkin. Agar usulni chaqirishga urinish muvaffaqiyatsiz tugasa, ogohlantirish chop etiladi;

  • chop etish funksiyasi har bir argument uchun tostringni chaqirmaydi, lekin o'zining ichki konversiyalaridan foydalanadi;

  • io.lines funktsiyasi bitta emas, balki to'rtta qiymat to'plamini qaytaradi; eski xatti-harakatlarga taqlid qilish uchun, agar siz uni boshqa funktsiya chaqiruviga parametr sifatida o'tkazayotgan bo'lsangiz, uni qavs ichiga qo'ying.

Manba: linux.org.ru

a Izoh qo'shish