Luac

luacの疑似簡易版

  • 使い方
    • 本来のluacとオプションは同じです。
      コマンドプロンプトなどで、sample.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が作れない環境でのコンパイル

  • アプリケーションの組み込みluaなどの場合、luac.exeやlua.exeが自分では制作できないという場合があります。
    この場合であっても、ファイルをコンパイルしたい場合があります。
  • 組み込みである限り、何らかのluaが実行可能なはずなので、そのluaファイルに、以下のように記述します。
    下の例であれば、sample.lua がコンパイルされて、sample.lua.out というファイルが出来上がります。
    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()
    

コンパイルはしない方が良い!!

  • 元々、luacではほぼ実行速度は上昇しません。
  • 一方で、バイトコードになってしまうと、異なるバージョン(5.1と5.2など)や、 異なる実装(luaとluajitなど)では、まず動作しません。
  • ですので、「どうしてもテキストを見られたくない」「複数のファイルを1つにしたい」という目的でもない限り、
    デメリットの方が大きいです。
  • 以上から、特に理由がないなら、コンパイルをしない方が運用性が高くお勧めです。

参照


トップ   差分 履歴 リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-14 (日) 00:00:00