Luau үшін ашық бастапқы дереккөз, Луа тілінің түрін тексеру нұсқасы

Луа тілінің дамуын жалғастыратын және Lua 5.1-мен кері үйлесімді Luau бағдарламалау тілінің бірінші дербес шығарылымының ашық көзі және жариялануы туралы хабарлады. Luau негізінен сценарийлік қозғалтқыштарды қолданбаларға ендіруге арналған және жоғары өнімділікке және төмен ресурстарды тұтынуға қол жеткізуге бағытталған. Жоба коды C++ тілінде жазылған және MIT лицензиясы бойынша ашық.

Luau Lua түрін тексеру мүмкіндіктерімен және жол литералдары сияқты кейбір жаңа синтаксистік құрылымдармен кеңейтеді. Тіл Lua 5.1 және ішінара жаңа нұсқалармен кері үйлесімді. Lua Runtime API интерфейсіне қолдау көрсетіледі, ол сізге Luau қолданбасын бар кодпен және байланыстырулармен бірге пайдалануға мүмкіндік береді. Тілдің орындалу уақыты қатты қайта өңделген Lua орындау уақыты 5.1 кодына негізделген, бірақ аудармашы толығымен қайта жазылады. Әзірлеу кезінде Луамен салыстырғанда жоғары өнімділікке қол жеткізу үшін кейбір жаңа оңтайландыру әдістері қолданылды.

Жобаны Roblox әзірлеген және осы компанияның ойын платформасының кодында, ойындарында және пайдаланушы қолданбаларында, соның ішінде Roblox Studio редакторында қолданылады. Бастапқыда Луау жабық есік жағдайында әзірленді, бірақ соңында оны қоғамдастықтың қатысуымен бірлескен дамыту үшін ашық жобалар санатына ауыстыру туралы шешім қабылданды.

Негізгі ерекшеліктері:

  • Біртіндеп теру, динамикалық және статикалық теру арасындағы аралық орынды алады. Luau арнайы аннотациялар арқылы түр ақпаратын көрсету арқылы қажетінше статикалық теруді пайдалануға мүмкіндік береді. Кірістірілген «кез келген», «нөл», «логикалық», «сан», «жол» және «жіп» түрлері қарастырылған. Сонымен қатар, айнымалылар мен функциялардың түрін нақты анықтамай, динамикалық теруді пайдалану мүмкіндігі сақталады. функциясы foo(x: сан, у: жол): логикалық жергілікті k: жол = y:rep(x) қайтару k == “a” соңы
  • "\5.3x**" (он алтылық сан), "\u{**}" (Юникод таңбасы) және "\z" (жолдың соңы) сияқты жол литералдарын (Lua 0-тегідей), сондай-ақ сандарды пішімдеуді визуализациялау мүмкіндігі (1 орнына 000_000_1000000 жазуға болады), он алтылық (0x...) және екілік сандар үшін литералдар (0b......).
  • Жаңа цикл итерациясына өту үшін бар "үзіліс" кілт сөзін толықтыратын "жалғастыру" өрнегін қолдау.
  • Құрама тағайындау операторларына қолдау көрсету (+=, -=, *=, /=, %=, ^=, ..=).
  • Блокты орындау кезінде есептелген мәнді қайтаратын өрнектер түріндегі шартты «if-then-else» блоктарын қолдануды қолдау. Блоктағы elseif өрнектерінің ерікті санын көрсетуге болады. жергілікті maxValue = егер a > b, онда a else b жергілікті белгісі = егер x < 0 болса, онда -1 elseif x > 0 болса, 1 басқа 0
  • Сенімсіз кодты іске қосуға мүмкіндік беретін оқшаулау режимінің (құмсалғыш) болуы. Бұл мүмкіндікті өзіңіздің кодыңыз бен басқа әзірлеуші ​​жазған кодыңыздың, мысалы, қауіпсіздігіне кепілдік берілмейтін үшінші тарап кітапханаларының қатарында іске қосуды ұйымдастыру үшін пайдалануға болады.
  • Қауіпсіздік мәселелерін тудыруы мүмкін функциялар жойылған стандартты кітапхананың шектеуі. Мысалы, «io» (файлдарға қатынасу және процестерді іске қосу), «пакет» (файлдарға қол жеткізу және модульдерді жүктеу), «os» (файлдарға қол жеткізу және ортаның айнымалы мәндерін өзгерту функциялары), «отладтау» ( жадпен қауіпті жұмыс) кітапханалары. , «dofile» және «loadfile» (FS қатынасы).
  • Статикалық кодты талдау үшін құралдармен қамтамасыз ету, қателерді анықтау (линтер) және типтердің дұрыс пайдаланылуын тексеру.
  • Меншікті жоғары өнімді талдаушы, байт код интерпретаторы және компилятор. Luau әлі JIT компиляциясын қолдамайды, бірақ Luau аудармашы кейбір жағдайларда өнімділігі жағынан LuaJIT-пен салыстыруға болады деп айтылады.

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

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