Автор LuaJIT вСрнулся ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ выпуск LuaJIT 3.0

Майкл Полл (Mike Pall), ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ JIT-компилятора LuaJIT, ΠΎΡ‚ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΉ ΠΎΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² 2015 Π³ΠΎΠ΄Ρƒ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π²ΡˆΠΈΠΉΡΡ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Ρ€Π΅Π΄ΠΊΠΈΠΌ сопровоТдСниСм Π²Π΅Ρ‚ΠΊΠΈ 2.1, вСрнулся ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΏΠ»Π°Π½ синтаксичСских Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ LuaJIT 3.0.

Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… для LuaJIT 3.0 Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ:

  • Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Π²ΠΈΠ΄Π΅ встроСнного синтаксиса вмСсто Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Β«bit.*Β»: Β«~aΒ» (NOT), Β«a & bΒ» (AND), Β«a | bΒ» (OR), Β«a ~ bΒ» (XOR), Β«a << b`, Β«a >> bΒ» (логичСский сдвиг) ΠΈ Β«a ~>> bΒ» (арифмСтичСский сдвиг). XOR ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°ΠΊ Β«~Β», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ символ Β«^Β» Π² Lua занят Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ.
  • ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ (Β«ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅Β») ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² стилС C/JavaScript: Β«!Β» (not), Β«&&Β» (and), Β«||Β» (or) ΠΈ Β«!=Β» (~=).
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ цСлочислСнного дСлСния Β«//Β» с ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ Π² сторону минус бСсконСчности ΠΈ ΠΌΠ΅Ρ‚Π°ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Β«__idivΒ» (ΠΊΠ°ΠΊ Π² Lua 5.3+).
  • Π’Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«a ? b : cΒ» с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ сокращённого вычислСния.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ бСзопасной Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Β«?.Β» (Β«a?.fieldΒ», Β«a?.[key]Β», Β«f?.(…)Β», Β«obj?.:method(…)Β»), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Β«nilΒ», Ссли Π»Π΅Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Ρ€Π°Π²Π΅Π½ Β«nilΒ».
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ объСдинСния с nil Β«a ?? bΒ», Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Β«bΒ», Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Β«aΒ» Ρ€Π°Π²Π½ΠΎ Β«nilΒ».
  • БоставныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания: Β«+=Β», Β«-=Β», Β«*=Β», Β«/=Β», Β«//=Β», Β«%=Β», Β«&=Β», Β«|=Β», Β«~=Β», Β«<<=`, Β«>>=Β», Β«~>>=Β», Β«..=Β» ΠΈ Β«??=Β». ИндСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π»Π΅Π²ΠΎΠΉ части вычисляСтся ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«continueΒ» для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ «мягкоС» ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ).
  • ОбъявлСниС Β«constΒ» β€” блочная нСизмСняСмая привязка локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ; Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹ пСрСприсваиваниС ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ области видимости (Ρ‚Π°ΠΊΠΆΠ΅ «мягкоС» ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово).

Π’ обсуТдСнии Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Ρ‘ Π½Π΅ вошСдшиС Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠ΄Π΅ΠΈ: Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«inΒ», индСксируСмый Ρ‚ΠΈΠΏ для vararg («…vargΒ», Β«varg[i]Β»), ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ синтаксис лямбд (Β«|x| -> exprΒ»), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ выполнСния Β«deferΒ» Π² стилС Go/Zig ΠΈ присваиваниС Π² условии (Β«if local x = … thenΒ»).

ПоявлСниС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π²Ρ‹Π·Π²Π°Π»ΠΎ ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ: Ρ‡Π°ΡΡ‚ΡŒ участников ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ нововвСдСния ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ LuaJIT Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ язык, нСсовмСстимый с эталонным Lua 5.1. На это Полл ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ «этот ΠΊΠΎΡ€Π°Π±Π»ΡŒ ΡƒΠΏΠ»Ρ‹Π» ΡƒΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π²Π½ΠΎΒ».

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ языку планируСтся ΠΊΠΎΠ½ΡΠΎΠ»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ΠΎ вСрсиСй, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΎ появилось.

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

ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры πŸ”₯ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры | ProHoster