Отворени код за Луау, варијанту Луа језика за проверу типа

Најавили су отворени извор и објављивање првог самосталног издања Луау програмског језика, настављајући развој Луа језика и компатибилног са Луа 5.1. Луау језик је првенствено намењен за уграђивање скриптова у апликације и има за циљ постизање високих перформанси и ниске потрошње ресурса. Код пројекта је написан у Ц++ и отворен је под МИТ лиценцом.

Луау проширује Луа са могућностима провере типова и неким новим синтаксичким конструкцијама као што су стринг литерали. Језик је компатибилан са Луа 5.1 и делимично са новијим верзијама. Подржан је Луа Рунтиме АПИ, што вам омогућава да користите Луау са постојећим кодом и везама. Време извођења језика је засновано на увелико прерађеном Луа рунтиме 5.1 коду, али је тумач потпуно преписан. Током развоја, коришћене су неке нове технике оптимизације да би се постигле веће перформансе у поређењу са Луа-ом.

Пројекат је развио Роблок и користи се у коду платформе за игре, игрицама и корисничким апликацијама ове компаније, укључујући и Роблок Студио едитор. У почетку, Луау је развијен иза затворених врата, али је на крају одлучено да се пренесе у категорију отворених пројеката за даљи заједнички развој уз учешће заједнице.

Главне карактеристике:

  • Постепено куцање, заузима средњу позицију између динамичког и статичког куцања. Луау вам омогућава да користите статичко куцање по потреби тако што ћете специфицирати информације о типу путем посебних напомена. Обезбеђени су уграђени типови "било који", "нил", "боолеан", "број", "стринг" и "нит". Истовремено, очувана је могућност коришћења динамичког куцања без експлицитног дефинисања типа променљивих и функција. функција фоо(к: број, и: стринг): боолеан локални к: стринг = и:реп(к) ретурн к == "а" крај
  • Подршка за стринг литерале (као у Луа 5.3) као што су „\0к**“ (хексадецимални број), „\у{**}“ (Уницоде карактер) и „\з“ (крај реда), као и могућност визуализације форматирања бројева (можете написати 1_000_000 уместо 1000000), литерале за хексадецималне (0к...) и бинарне бројеве (0б......).
  • Подршка за израз "цонтинуе", који допуњује постојећу кључну реч "бреак", за прелазак на нову итерацију петље.
  • Подршка за сложене операторе доделе (+=, -=, *=, /=, %=, ^=, ..=).
  • Подршка за коришћење условних блокова „ако-онда-елсе” у облику израза који враћају вредност израчунату током извршавања блока. Можете навести произвољан број елсеиф израза у блоку. локална максимална вредност = ако је а > б онда а друго б локални знак = ако је к < 0 онда -1 иначе ако је к > 0 онда 1 друго 0
  • Присуство изолационог режима (пешчаника), који вам омогућава да покренете непоуздани код. Ова функција се може користити за организовање покретања упоредо са вашим сопственим кодом и кодом који је написао други програмер, на пример, библиотеке треће стране за чију безбедност се не може гарантовати.
  • Уклоњено је ограничење стандардне библиотеке из које су функције које би потенцијално могле створити безбедносне проблеме. На пример, библиотеке „ио“ (приступ датотекама и покретање процеса), „пакет“ (приступ датотекама и учитавање модула), „ос“ (функције за приступ датотекама и промену променљивих окружења), „дебуг“ (небезбедан рад са меморијом) , “дофиле” и “лоадфиле” (ФС приступ).
  • Обезбеђивање алата за статичку анализу кода, идентификацију грешака (линтер) и проверу исправне употребе типова.
  • Сопствени парсер високих перформанси, тумач бајткода и компајлер. Луау још увек не подржава ЈИТ компилацију, али се тврди да је Луау интерпретер прилично упоредив по перформансама са ЛуаЈИТ-ом у неким ситуацијама.

Извор: опеннет.ру

Додај коментар