スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Lua 5.2.0 (alpha)が出た

最近になって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関数は新たなメモリ確保を必要としない(light C function)。light userdataと同じように、ポインタ一個で表されるようになったから。

モジュールシステムにも変更があった。

  • Lua標準関数の、moduleは非推奨になった。モジュールはグローバル変数を設定するな、ということらしい。
  • C APIのluaL_registerが非推奨になり、luaL_newlibとluaL_setfuncsが取って代わった。引数からモジュール名がなくなったが、一括して上位値を指定できるようになった(上位値で環境を代用するため)。
  • luaL_requiref追加。

ビット演算が、既存のライブラリと微妙に仕様が違っていて議論になったが、work5でライブラリ名がbit32に変更された。ついでに関数名もbit32.ANDみたいなのになった。関数名については目下議論中なので変わるかもしれない。

work1からのその他の変更(気づいたもの):

  • 比較演算のメタメソッドの仕様変更。
  • 文字列のパターンマッチのパターンに\0が使用可能に。これにより%zは非推奨。
  • 空文;;;;;;
  • io.linesの仕様変更。
  • lua_tonumberx追加

英語読める人はlua-users wiki: Lua Five Twoに目を通すといいと思う。

しかしあれだな、in-do-endは廃止されるし、ipairsは仕様が変わったと思えば(__ipairsがなければ__lenを尊重)、work3で一旦非推奨になり、work4では復活しまた仕様変更(__lenは見ない)があった。何がどうなるか分からんな。

スポンサーサイト

テーマ : プログラミング | ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。