ΠΠ°ΠΉΠΊΠ» ΠΠΎΠ»Π» (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
