ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° Luau, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Π΅Π·ΠΈΠΊΠ° Lua с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚.

ОбявСно Π΅ Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° изходния ΠΊΠΎΠ΄ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ самостоятСлно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Luau, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° Lua ΠΈ Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с Lua 5.1. Π•Π·ΠΈΠΊΡŠΡ‚ Luau Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ основно Π·Π° Π²Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° скриптови ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π² прилоТСния ΠΈ Π΅ насочСн към постиганС Π½Π° висока производитСлност ΠΈ ниско ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурси. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ написан Π½Π° C++ ΠΈ Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ ΠΏΠΎΠ΄ лицСнзия MIT.

Luau Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° Lua с Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈ някои Π½ΠΎΠ²ΠΈ синтактични конструкции, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ строкови Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΈ. Π•Π·ΠΈΠΊΡŠΡ‚ Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с Lua 5.1 ΠΈ частично с ΠΏΠΎ-Π½ΠΎΠ²ΠΈ вСрсии. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС API Π½Π° Lua Runtime, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Luau с Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ ΠΊΠΎΠ΄ ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ (binding). Языковият runtime Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° силно прСработСния ΠΊΠΎΠ΄ Π½Π° Lua runtime 5.1, Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ напълно прСзаписан. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° са ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π½ΠΎΠ²ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° оптимизация, ΠΊΠΎΠΈΡ‚ΠΎ позволяват постиганСто Π½Π° ΠΏΠΎ-висока производитСлност Π² сравнСниС с Lua.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ компанията Roblox ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΈΠ³Ρ€ΠΎΠ²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΠΈΠ³Ρ€ΠΈ ΠΈ потрСбитСлски прилоТСния Π½Π° компанията, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Roblox Studio. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Luau Π΅ Π±ΠΈΠ» Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π΄ Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π²Ρ€Π°Ρ‚ΠΈ, Π½ΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π° сС ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ към ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π·Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ с участиСто Π½Π° общността.

Основни характСристики:

  • ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½Π°Ρ‚Π° систСма Ρ‚ΠΈΠΏΠΎΠ²Π΅ (Gradual typing) Π·Π°Π΅ΠΌΠ° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½Π° позиция ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π°Ρ‚Π° ΠΈ статичната типизация. Luau позволява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° статична типизация ΠΏΡ€ΠΈ нСобходимост, ΠΊΠ°Ρ‚ΠΎ информацията Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ сС ΡƒΠΊΠ°Π·Π²Π° Ρ‡Ρ€Π΅Π· спСциални Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΡ‚ сС Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ "any", "nil", "boolean", "number", "string" ΠΈ "thread". Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π·Π°ΠΏΠ°Π·Π΅Π½Π° ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π° типизация Π±Π΅Π· явното опрСдСлянС Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == "a" end
  • ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° Π·Π° строкови Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΈ (ΠΊΠ°ΠΊΡ‚ΠΎ Π² Lua 5.3), ΠΊΠ°Ρ‚ΠΎ "\0x**" (ΡˆΠ΅ΡΡ‚Π½Π°ΠΉΡΠ΅Ρ‚ΠΈΡ‡Π½ΠΎ число), "\u{**}" (Unicode символ) ΠΈ "\z" (ΠΊΡ€Π°ΠΉ Π½Π° Ρ€Π΅Π΄), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π²ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° числа (ΠΌΠΎΠΆΠ΅ Π΄Π° сС пишС 1_000_000 вмСсто 1000000), Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΈ Π·Π° ΡˆΠ΅ΡΡ‚Π½Π°ΠΉΡΠ΅Ρ‚ΠΈΡ‡Π½ΠΈ (0x…) ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½ΠΈ числа (0b…….).
  • ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° Π·Π° ΠΈΠ·Ρ€Π°Π·Π° "continue", ΠΊΠΎΠΉΡ‚ΠΎ допълва ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΎΡ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΎ слово "break", Π·Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ към Π½ΠΎΠ²Π° итСрация Π½Π° Ρ†ΠΈΠΊΡŠΠ»Π°.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° присвояванС (+=, -=, *=, /=, %=, ^=, ..=).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° условни Π±Π»ΠΎΠΊΠΎΠ²Π΅ Β«if-then-elseΒ» ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²Ρ€ΡŠΡ‰Π°Ρ‚ стойност, изчислСна ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° Π±Π»ΠΎΠΊΠ°. Допуска сС ΡƒΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±Ρ€ΠΎΠΉ ΠΈΠ·Ρ€Π°Π·ΠΈ elseif Π² Π±Π»ΠΎΠΊΠ°. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • НаличиС Π½Π° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° изолация (sandbox), ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π½Π΅Π΄ΠΎΠ²Π΅Ρ€Π΅Π½ ΠΊΠΎΠ΄. Π’Π°Π·ΠΈ функция ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ изпълнСниС Π½Π° собствСния ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄Π°, написан ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Ρ€Π΅Ρ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, чиято бСзопасност Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΎΡ‚ която са ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със сигурността. НапримСр, ΠΎΡ‚ стандартния Π½Π°Π±ΠΎΡ€ са ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Β«ioΒ» (Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ изпълнСниС Π½Π° процСси), Β«packageΒ» (Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ), Β«osΒ» (ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ са Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π·Π° промяна Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата), Β«debugΒ» (нСсигурна Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚), Β«dofileΒ» ΠΈ Β«loadfileΒ» (Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π€Π‘).
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° инструмСнти Π·Π° статичСн Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΠ΄Π°, ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ (linter) ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° корСктността Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅.
  • БобствСни високопроизводитСлни парсСр, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€. Luau Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° JIT компилация, Π½ΠΎ сС Ρ‚Π²ΡŠΡ€Π΄ΠΈ, Ρ‡Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Luau Π² някои ситуации Π΅ сравним ΠΏΠΎ производитСлност с LuaJIT.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster