LUAバイトコードのファイル拡張子

 LUAスクリプト言語で、CやJavaと異なり事前にソースコードコンパイルを行わないのが一般的なようです。
 一方で、LUAは普通のLUAもLuaJITもJavaと同様にLuaVM上でプログラムが動作することになっているようです。で、Javaバイトコードと同様に、LUAにもバイトコードが存在します。で、そのバイトコードを格納するファイルの拡張子が何なのかというお話です。
 

LUAC

 javacがソースコード(*.java)からバイトコード(*.class)を生成するのと同様に、LUAの場合はluacでソースコード(*.lua)からバイトコードを生成できます。
 LUAのバージョンによって、LUAC自体はluac5.1.exeやluac53.exeといったファイル名になっているようです。

 LUACでLUAソースのコンパイルを行うには、以下のようなコマンド*1を叩きます。

luac myprogram.lua

 上記のようにして得られるバイトコードのファイル名は、ソースファイルの名称に依らずluac.outとなっています。

 なお、-oオプションを指定することで、バイトコードのファイル名を指定することが可能です。

luac -o bytecodename myprogram.lua

 先述の通りデフォルトではバイトコードのファイル名はluac.outですが、まさか"*.out"がluaバイトコードを表す拡張子とは思えず、任意に指定する場合に付与すべき拡張子は何が標準なのか解りません。
 

LUAバイトコードのファイル拡張子

 LUA公式などを調べてみても、バイトコードのファイル拡張子については何も言及されていないようです。

 ユーザーフォーラムなどを調べると、以下の投稿がヒットします。
Re: extension for lua bytecode files
 前後の投稿も参照してみると、「標準は無いと思う」、「私はlbcを使っているけどluoも良さそうだね」、「以前はlcを使ってたけどluoの方が良さそうだね」といったやり取りが為されているようです。
 lbcならLua Byte Codeでとか、luoならLUa Object fileとかそんな感じの略称であることが推測できそうですが、いずれにせよ標準は無いようですので、好きに命名すればよいようです。

 なお、luac53で生成したバイトコードlua 5.1で実行できないなど、バイトコードには後方互換性が無い(ソースコードは互換)ようですので、バージョン識別子も拡張子に含めた方が取り扱いしやすいかも知れないと個人的には思ってみたりします。(蛇足ですが、Adobe LightroomSDKLUAですが、luac5.1でコンパイルしたバイトコードは動作しましたが、luac53でコンパイルしたバイトコードは実行できませんでした。)
 



以上。

*1:luacは適宜luac5.1.exeやluac53.exeに読み替えてください。