#author("2019-04-14T00:58:09+09:00","","")
*Luac [#oa87ac44]

**luacの疑似簡易版 [#q11b1c06]
-luac.lua として保存~
#ref(http://lua.tips/download/tool/luac.lua)
#ref(http://xn--pckzexbx21r8q9b.net/lua_tips/download/tool/luac.lua)

-使い方
--本来のluacとオプションは同じです。~
コマンドプロンプトなどで、sample.luaをコンパイルしたいのだとすると…
#sh(lua){{
lua luac.lua sample.lua -o sample.out
}}

-補足
--lua言語で実装した、luacの疑似簡易版となります。~
以外と知られていないことですが、luaがあれば、VMコードは出力可能なので、~
exeが無い組み込みを含め、luaが走る環境があるのであれば、Luaバイトコードを出力することが可能です。~
--Lua VMコードを表示する ''"-l"'' オプションは機能しません。(VMに興味がある人以外、使ったことは無いと思います)
~
--単純に「1つのluaファイル」を「1つのoutファイル」へとコンパイルする目的に利用出来ます。~
本来のluacは複数のluaファイルをまとめて1つのoutファイルに出来ますが、~
この簡易版では読み込みや合成に失敗することがあります。
~

**luac.exeやlua.exeが作れない環境でのコンパイル [#h57e4a75]
-アプリケーションの組み込みluaなどの場合、luac.exeやlua.exeが自分では制作できないという場合があります。~
この場合であっても、ファイルをコンパイルしたい場合があります。~

-組み込みである限り、何らかのluaが実行可能なはずなので、そのluaファイルに、以下のように記述します。~
下の例であれば、sample.lua がコンパイルされて、sample.lua.out というファイルが出来上がります。~
#sh(lua){{
local filename = "sample.lua" -- ここにコンパイルしたいluaファイル名を記述する。

local chunk = assert(loadfile(filename))
local out = assert(io.open(targets..".out", "wb"))
out:write(string.dump(chunk))
out:close()
}}

**コンパイルはしない方が良い!! [#t0348c93]
-元々、luacではほぼ実行速度は上昇しません。~
-一方で、バイトコードになってしまうと、異なるバージョン(5.1と5.2など)や、
異なる実装(luaとluajitなど)では、まず動作しません。~
-ですので、「どうしてもテキストを見られたくない」「複数のファイルを1つにしたい」という目的でもない限り、~
デメリットの方が大きいです。~

-以上から、特に理由がないなら、コンパイルをしない方が運用性が高くお勧めです。

**参照 [#labbbc33]
-[[Lua Compiler In Lua>http://lua-users.org/wiki/LuaCompilerInLua]]

トップ   差分 履歴 リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS