>> Project Page, >> English Page
Download
これは何?
LuLu は Lua 自身で実装された Lua 5.1 の VM です。
"LuaVMソースコード勉強会" で学んだ内容の確認のために自分で実装してみました。
いまのところ、LuLu が実装しているのは、VMの命令列の解釈とコルーチンの処理部分です。 データ型(文字列やテーブル)や標準ライブラリ関数の実装は、基本的にホストのLuaに 丸投げしています。
Supported Features
- VM の全命令
- ライブラリ関数の大部分
- io.* (forwarded to the host Lua)
- file:* (forwarded to the host Lua)
- string.* (forwarded to the host Lua, except string.dump)
- math.* (forwarded to the host Lua)
- coroutine.* (pure Lua implementation)
Currently Unsupported Features
- メタテーブル
- (これもホストLuaに丸投げしてるので、__call 以外は動作はします、たぶん。)
- 以下のライブラリ関数
- dofile/load/loadfile/loadstring/string.dump
- module/require/package.*
- pcall/xpcall
- debug.*
Performance Memo
速度面は何も考えていないので、パフォーマンスは期待しないでください。(^^;
"Lua (C 実装)" vs "LuLu (Lua 実装)"
> lua test/fib.lua 24
n value time evals
plain 24 46368 0.05 150049
cached 24 46368 0 25
> lua lulu.lua test/fib.lua 24
n value time evals
plain 24 46368 6.088 150049
cached 24 46368 0 25
"LuLu" vs "LuLu上で動くLuLu"
> lua lulu.lua test/fib.lua 18
n value time evals
plain 18 2584 0.49 8361
cached 18 2584 0.01 19
> lua lulu.lua lulu.lua test/fib.lua 18
n value time evals
plain 18 2584 30.013 8361
cached 18 2584 0.181 19
hzkr <binhzkr _a_t_ gmail _d_o_t_ com>