Lua 5.4 бағдарламалау тілінің шығарылымы

Бес жылдық дамудан кейін қол жетімді босату Lua 5.4, ендірілген тіл ретінде кеңінен қолданылатын жылдам және ықшам сценарийлік бағдарламалау тілі (мысалы, конфигурацияны анықтау немесе кеңейтімдерді жазу үшін). Lua интерпретатор коды C және тілінде жазылған таралады MIT лицензиясы бойынша.

Lua қарапайым процедуралық синтаксисті ассоциативті массивтер мен тілдің кеңейтілген семантикасын пайдалану арқылы қуатты деректерді сипаттау мүмкіндіктерімен біріктіреді. Lua динамикалық теруді пайдаланады, тіл конструкцияларын автоматты қоқыс жинауы бар регистр негізіндегі виртуалды машинаның үстінде жұмыс істейтін байт кодқа түрлендіреді. Аудармашының өзі C және C++ тілдеріндегі жобаларға оңай біріктірілетін кітапхана ретінде жасалған.

басты инновациялар:

  • Қоқыс жинағыштың жұмысының жаңа режимі енгізілді - «ұрпақты«, ол бұрын қол жетімді қосымша қоқыс жинау режимін толықтырды. Жаңа режим тек жақында жасалған нысандарды қамтитын қысқартылған тексеріп шығуды жиі орындауды қамтиды. Барлық нысандарды толық айналып өту, егер қысқа өтуден кейін қажетті жадты тұтынуға қол жеткізу мүмкін болмаса ғана орындалады. Бұл тәсіл қысқа уақыт ішінде өмір сүретін көптеген объектілерді сақтау кезінде жоғары өнімділікке қол жеткізуге және жадты тұтынуды азайтуға мүмкіндік береді.
  • «const» атрибутымен анықталған тұрақты айнымалыларды анықтау мүмкіндігі қосылды. Мұндай айнымалылар тек бір рет тағайындалуы мүмкін және инициализацияланғаннан кейін өзгерту мүмкін емес.
  • Айнымалыларға қолдау қосылды »жабылатын", олар "жабық" атрибутының көмегімен тағайындалады және тұрақты жергілікті айнымалыларға ұқсайды (const төлсипаты бар), олардан айырмашылығы ол ауқымнан шыққан сайын мәннің жабылуымен ("__close" әдісі шақырылады), мысалы, блоктың қалыпты аяқталғаннан кейін үзіліс/өту/қайтару арқылы өту немесе қате орын алған кезде шығу.
  • терупайдаланушы деректері«, ол Lua айнымалыларында кез келген C деректерін сақтау мүмкіндігін береді (жадтағы деректер блогын білдіреді немесе C көрсеткішін қамтиды) енді бірнеше мәндерді қамтуы мүмкін (бірнеше метакестелер бар).
  • Жалған кездейсоқ сандарды генерациялау функциясының жаңа іске асырылуы ұсынылған - math.random.
  • Өрнек арқылы анықталатын ескертулер жүйесі қосылды ескерту және қателерден айырмашылығы, бағдарламаның одан әрі орындалуына әсер етпейді.
  • Функция аргументтері және қайтарылатын мәндер туралы отладтау ақпараты қосылды.
  • Циклдердегі бүтін сандарды санау үшін жаңа семантика ұсынылды »үшін«. Итерациялар саны цикл басталғанға дейін есептеледі, бұл айнымалылардың толып кетуін және айналуын болдырмайды. Егер бастапқы мән шекті мәннен үлкен болса, қате көрсетіледі.
  • Функцияда 'string.gmatch' іздеуді қай позициядан бастау керектігін анықтайтын жаңа қосымша "init" аргументін қосты (әдепкі бойынша, 1 таңбадан).
  • Жаңа мүмкіндіктер қосылды 'lua_resetthread' (ағынды қалпына келтіреді, бүкіл қоңыраулар сағын тазартады және барлық «жабылатын» айнымалы мәндерді жабады) және 'coroutine.close' (корутинді және барлық байланысты «жабылатын» айнымалыларды жабады).
  • Жолдарды сандарға түрлендіру функциялары «жол» кітапханасына көшірілді.
  • Жад блогының өлшемі азайса, жадты бөлу функциясына қоңыраулар енді сәтсіз болуы мүмкін.
  • Функцияда 'string.format' '%p' жаңа пішім спецификаторына қолдау қосылды (lua_topointer арқылы қайтарылған көрсеткіш).
  • utf8 кітапханасы қолдау көрсетеді таңба кодтары 2^31 дейінгі сандармен.

Ақпарат көзі: opennet.ru

пікір қалдыру