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

Го објави отворениот код и објавувањето на првото самостојно издание на програмскиот јазик Luau, продолжувајќи го развојот на јазикот Луа и компатибилен со Луа 5.1. Luau е дизајниран првенствено за вградување на мотори за скриптирање во апликации и има за цел да постигне високи перформанси и ниска потрошувачка на ресурси. Кодот на проектот е напишан во C++ и е отворен под лиценцата MIT.

Луау ја проширува Луа со можности за проверка на типот и некои нови синтаксички конструкции како што се жичените буквали. Јазикот е компатибилен наназад со Lua 5.1 и делумно со поновите верзии. Поддржано е Lua Runtime API, што ви овозможува да користите Luau со постоечки код и врски. Јазичното траење е засновано на многу преработениот Lua runtime 5.1 код, но преведувачот е целосно препишан. За време на развојот, беа користени некои нови техники за оптимизација за да се постигнат повисоки перформанси во споредба со Луа.

Проектот е развиен од Roblox и се користи во кодот на гејмерската платформа, игрите и корисничките апликации на оваа компанија, вклучувајќи го и уредникот Roblox Studio. Првично, Luau беше развиен зад затворени врати, но на крајот беше одлучено да се пренесе во категоријата отворени проекти за понатамошен заеднички развој со учество на заедницата.

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

  • Постепено пишување, заземајќи средна позиција помеѓу динамичкото и статичкото пишување. Luau ви овозможува да користите статичко пишување по потреба со наведување информации за типот преку специјални прибелешки. Обезбедени се вградените типови „било кој“, „нула“, „бул“, „број“, „стринг“ и „нишка“. Во исто време, зачувана е можноста за користење на динамично пишување без експлицитно дефинирање на типот на променливите и функциите. функција foo(x: број, y: стринг): булова локална k: стринг = y: rep(x) врати k == „а“ крај
  • Поддршка за жици буквално (како во Lua 5.3) како што се „\0x**“ (хексадецимален број), „\u{**}“ (знак на Уникод) и „\z“ (крајот на линијата), како и способност да се визуелизира форматирање на броеви (можете да напишете 1_000_000 наместо 1000000), буквални за хексадецимални (0x...) и бинарни броеви (0b......).
  • Поддршка за изразот „продолжи“, дополнувајќи го постојниот клучен збор „прекин“, за да се префрли на нова итерација на јамка.
  • Поддршка за оператори за сложени доделувања (+=, -=, *=, /=, %=, ^=, ..=).
  • Поддршка за употреба на условни блокови „ако-тогаш-друго“ во форма на изрази кои ја враќаат вредноста пресметана за време на извршувањето на блокот. Можете да наведете произволен број на otherif изрази во блок. локална maxValue = ако a > b тогаш a other b локален знак = ако x 0 тогаш 1 друго 0
  • Присуство на режим на изолација (песок), кој ви овозможува да извршите недоверлив код. Оваа функција може да се користи за организирање на стартувањето рамо до рамо на вашиот сопствен код и код напишани од друг развивач, на пример, библиотеки од трети страни за чија безбедност не може да се гарантира.
  • Ограничување на стандардната библиотека од која се отстранети функциите што потенцијално би можеле да создадат безбедносни проблеми. На пример, библиотеките „io“ (пристап до датотеки и процеси за стартување), „пакет“ (пристап до датотеки и вчитување модули), „os“ (функции за пристап до датотеки и менување на променливите на околината), „дебаг“ (небезбедно работење со меморија) , „dofile“ и „loadfile“ (FS пристап).
  • Обезбедување алатки за статичка анализа на кодови, откривање на грешки (линтер) и проверка на правилната употреба на типовите.
  • Сопствен парсер со високи перформанси, толкувач на бајтекод и компајлер. Luau сè уште не поддржува JIT компилација, но се тврди дека толкувачот Luau е доста споредлив во перформансите со LuaJIT во некои ситуации.

Извор: opennet.ru

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