Interpreter
とりあえず luajit-2.1.0-beta3 推し。
+---+ +---+ +---+ +---+
|5.1| -> |5.2| -> |5.3| -> |5.4|
+---+ +---+ +---+ +---+
| | |
| | +- ravi
| |
| +- moonsharp
|
+- luajit(5.1 base)
| +- moonjit
+- luau(5.1 base)
lua-5.1 をベースに分岐したものが多い?
https://www.lua.org/versions.html
url | memo | |
---|---|---|
Lua5.1 | 2012。これより古いものを使う理由は無さそう。 | |
Lu15.2 | since Lua5.1 | 2015。finalizer. 関数の _ENV 仕様変更 |
Lua5.3 | since Lua5.2 | 2020。integers |
Lua5.4 | since Lua5.3 | 2021。const, to-be-closed |
LuaJIT | https://luajit.org/ | Lua5.1base。最終版は 2.1.0-beta3。neovimもこれ。FFI も強力。 |
Luau | https://luau-lang.org/ | Lua5.1 の superset。Roblox専用。オープンソースではない。 |
Ravi | http://ravilang.github.io/ | Lua5.3base?。limited optional static typing and MIR based JIT compiler |
変わり種
headeronly. include するだけで使える。
LUA に更に埋め込む
Translator
MoonScript
TypescriptToLua
後で出てくる、local-lua-debugger はこれで実装されているぽい。
LuneScript/
Teal
Language server
EmmyLua
Java製
EmmyLua Annotation に対応。これにより、組み込み型のインテリセンスを動作させることができて使い勝手が向上する
lua-language-server
⭐ EmmyLua Annotation に対応。これにより、組み込み型のインテリセンスを動作させることができて使い勝手が向上する
設定例
"Lua.runtime.version": "LuaJIT",
"Lua.workspace.preloadFileSize": 10000,
"Lua.runtime.path": [
"?.lua",
"?/init.lua",
"?/?.lua",
],
lua-lsp
Debug adapter
local-lua-debugger-vscode
Debugされるスクリプト側に仕込み不要
⭐ luajit 対応
__tostring でエラーが発生すると固まるので、__tostring の実装で例外が起きないように注意
起動時の引数に \\ が含まれているとエラーになる => 0.2.2 で修正
lua-debug
Debugされるスクリプト側に仕込み不要
hook が拡張してある。途中で止めたりとかできるぽい
残念ながら luajit では動作しない
Formatter
stylua
⭐ rust 製でインストールしやすい
stylua.toml
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 4
quote_style = "AutoPreferDouble"
no_call_parentheses = true