ПослС Π΄Π²ΡƒΡ… Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, 29 июня Ρ‚ΠΈΡ…ΠΎ ΠΈ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π²Ρ‹ΡˆΠ»Π° новая вСрсия языка программирования Lua β€” 5.4.

Lua – это простой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ встраиваСтся Π² прилоТСния. Благодаря этим качСствам, Lua ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ язык Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ описания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Π² частности, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€). Распространятся Lua ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ MIT.

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ вСрсия (5.3.5) Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»Π° 10 июля 2018 Π³ΠΎΠ΄Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии

  • Π½ΠΎΠ²Ρ‹ΠΉ сборщик мусора Π½Π° основС ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ (generational). Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ collectgarbage ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ setpause ΠΈ setstepmul ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ, вмСсто Π½ΠΈΡ… рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ incremental;

  • новая функция для Π²Ρ‹Π΄Π°Ρ‡ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ warn с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΡ… отобраТСния;

  • новая рСализация math.random ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ xoshiro256** вмСсто прСдоставляСмого libc ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайным числом;

  • константы (constant variables);

  • «Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅» (to-be-closed) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ константы, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ __close ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· области видимости;

  • новая функция lua_resetthread β€” ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ стСк ΠΈ выполняСт Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ всСх Β«Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ…Β» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…;

  • новая функция coroutine.close β€” Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ сопрограмму ΠΈ всС Π΅Ρ‘ Β«Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅Β» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅;

  • ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ (userdata) ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с доступом ΠΏΠΎ индСксу. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: lua_newuserdatauv, lua_setiuservalue ΠΈ lua_getiuservalue;

  • доступна отладочная информация ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… значСниях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ;

  • Ссли Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ счётчику for ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ цСлочислСнный индСкс ΠΈ происходит ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β€” Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ;

  • Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ string.gmatch Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ смСщСниС ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° строки для поиска совпадСний;

  • Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ нСявного прСобразования строк Π² числа ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, измСнилось ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. НапримСр, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "1" + "2" Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ†Π΅Π»ΠΎΠ΅ число, Π° Π½Π΅ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ;

  • Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выдСлСния памяти допустимо Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ошибки ΠΏΡ€ΠΈ сокращСнии Π±Π»ΠΎΠΊΠ° памяти;

  • Π½ΠΎΠ²Ρ‹ΠΉ символ форматирования Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ string.format — %p (для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ);

  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° utf8 ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ΄Ρ‹ символов Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 2Β³ΒΉ (ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π°, Π±Π΅Π· Π½Π΅Π³ΠΎ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄Ρ‹ Π΄ΠΎ 0x10FFFF ΠΈ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ суррогаты);

  • цСлочислСнныС константы, выходящиС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠ΅ числа (Ρ€Π°Π½Π΅Π΅ происходило Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ отсСчСниС);

  • ΠΌΠ΅Ρ‚Π°ΠΌΠ΅Ρ‚ΠΎΠ΄ __lt большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для эмуляция ΠΌΠ΅Ρ‚Π°ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __le, ΠΏΡ€ΠΈ нСобходимости, ΠΌΠ΅Ρ‚Π°ΠΌΠ΅Ρ‚ΠΎΠ΄ __le Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ явно;

  • ΠΌΠ΅Ρ‚ΠΊΠ° для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° goto Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана, Ссли Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ области видимости ΡƒΠΆΠ΅ сущСствуСт ΠΌΠ΅Ρ‚ΠΊΠ° с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π²ΠΎ внСшнСй области);

  • ΠΌΠ΅Ρ‚Π°ΠΌΠ΅Ρ‚ΠΎΠ΄ __gc ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Если ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ удаётся, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅;

  • функция print Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ tostring для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свои Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ прСобразования;

  • функция io.lines Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ, для эмуляции старого повСдСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ² Π² скобки, Ссли подставляСтС Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru