2008年02月19日
Monoの事

ベータグリッドの一部でMonoが使えるようになっているので試してみた。
僕の作品といえば切腹刀と16トンの分銅位で、スクリプトも小さいものなので、あまりこれといって目に見える変化はないのだけど。ともかくどちらもちゃんとMonoでリコンパイルできて動作した。あと、リコンパイルしないオリジナルもちゃんと動作した(笑)。
これは実はリンデンのアナウンスでよくわからなかったことなのだけど、Monoエンジンと今までのLSLエンジンは同時に動いているようなのだ。
スクリプトエンジンを切り替えます。今までのLSLバイトコードはMonoエンジンでは動きませんってだけだと、じゃあ今までのオブジェクトはいっせいに動かなくなるのか?って疑問が浮かんでいたのだけど、とりあえず一安心。メインでもこういう形で移行するなら、混乱はないだろう。ただし、Mono用にコンパイルしたオブジェクトはMono非対応エリアでは動作しないわけだから。全部のリージョンがMonoに対応するまではあまり一般向け商品のMono対応は進まないと思われる。Monoを導入したリージョンでは積極的に使用されるだろうけどね。
Monoってなに?という人はとりあえずこちらを参照。いままでのLSLエンジンに比べ、最大220倍高速に動作するとのこと。実際にあらゆる動作がそんだけ速くなることはないだろうけど、スクリプトの実行に食われる時間が短くなれば
SIMの動作に余裕ができ、今までより多くのスクリプトを動かし、多くの人が集合してもSIMが落ちなくなるという、大変うれしいことなのだ。ここでは触れられていないが、実はMonoというのは、Microsoft .NET互換環境である。リンデンはMonoに機能追加とかもしてるっぽいので、リンデンバージョンのMonoがまんま.NET互換かどうかわかんないけど(だからWindows版も.NETじゃないのかな?)。
興味深いのは、SL互換のサーバーをオープンソースで作っているOpenSIMというプロジェクトが一足先にMono(.NET)の導入に踏み切っていることだ。というより最初から.NETベースで構築したらしい。サーバ自体がC#で書かれているようだ(でもって結構軽快に動作するw)。OpenSIMはLSLをMonoバイトコードに変換するコンパイラがまだ未完成で、使えないLSL命令も多いのだけど、偶然どちらもMonoにたどり着いたのか、リンデンがOpenSIMをまねたのか、謎である。