8 以前のバージョンとの非互換性

Lua 5.3 のプログラムを Lua 5.4 に移植する際に遭遇する可能性のある非互換性をここに示します。

一部の非互換性は適切なオプションを使って Lua をコンパイルすることで回避できます (luaconf.h を参照してください)。ただし、そういった互換性のためのオプションは将来削除されます。互換性オプションが削除されたときに互換性の問題が発生するということも少なくないので、機会を見計らって互換性オプションを全て無効にしたバージョンの Lua でコードをテストしておくべきです。そうしておけば新しいバージョンの Lua への移行がスムーズになります。

Lua はバージョン更新において C API を変更できます。これは定数が意味する数値やマクロとして実装される関数の内容など、ユーザープログラムのソースコードの変更が必要でない変更も含みます。そのため異なるバージョンの Lua で作ったバイナリに互換性があると考えては絶対にいけません。必ず新しいバージョンを使って Lua API のクライアントを再コンパイルしてください。

同様に Lua はバージョン更新においてコンパイル済みチャンクの内部表現を変更できます。そのためコンパイル済みチャンクは異なるバージョン間で互換性を持ちません。

公式ディストリビューションにおける標準パスはバージョン間で変わる可能性があります。

8.1 言語の非互換性

8.2 ライブラリの非互換性

8.3 API の非互換性