ひとり勉強会

ひとり楽しく勉強会

おまけ:LuLu (4)

コルーチンと getfenv/setfenv 実装しました。あと、今回はインチキして loadfile 関数でホストのLuaコンパイル処理をやってもらうことにしたので、luac の出力ではなく、直接 .lua のソースも実行できるようになっています。

lua lulu.lua /usr/local/lua/test/sieve.lua

みたいな感じで、Luaについてくるテストプログラム動かせます。かっこいい!

今残っている Lua 5.1 と比べて足りてない部分、変な部分は

  • 未実装:メタテーブル
  • 未実装:debugモジュール
  • 未実装:module/require/package
  • 手抜き実装:pcall/cpcall
  • 手抜き実装:dofile/load/loadfile/loadstring/string.dump
  • 手抜き実装:string.dump
  • 手抜き実装:function と thread が table として使えちゃうバグ(内部実装が漏れ出している)。tostringしたときにもtable 扱いされる

となっています。他のライブラリ(io, string, math)は、ホストLuaのライブラリに直接投げるという手抜き処理ですが、それによって特に問題は起きないはず。pcallやdofileは、それだとあんまり上手くいかないのでどうにかしないといけません。

次回は、この辺りなんとかしたりYueliangとくっつけたりするかもしないかも。The LuaJIT Project 勉強会に移行するかもしないかも。ではまたー。