最近になってwork5やらalphaやらalpha-rc2が… 前回Lua 5.2についての記事を書いたのはwork1の時だ。それ以来大きな変更があった。 前回書いたin-do-endは廃止されて、work3から_ENVが導入された。in-do-endだと環境テーブルを後から変更することができなかった。_ENVはただのローカル変数なので、好き勝手に変更でき、しかもテーブル以外の値を設定できる。あとこれに関連した変更: グローバル変数の参照は_ENVを介して行われる。 print(os.time()) がこんなコードに変換される↓ _ENV.print(_ENV.os.time()) チャンクの先頭では_ENVが暗黙のローカル変数として宣言されるので、_ENVが_ENV._ENVのように変換されることはない。 スレッドや関数は環境を持たない。 関数は環境を持たないので、上位値を持たないC関数