node v0.3.1 から導入された VM モジュールって何さ

事の始まり

  1. あ、そういえばローカルの node が v0.3.0 だった。アップデートしようっと。
  2. 何が変わったんだろう。とりあえず Change log 読むか。
  3. VM Module? なんじゃそら。もしかして別スレッドでコード走ったりする?
  4. 実験してみよう!

というわけで実験

こんなコードを書いてみた。

var vm = require('vm');

console.log('start');
vm.runInNewContext('while(true){}');
console.log('end');

vm.runInNewContext というのは引数に渡された文字列をJavascriptとして実行するもの。evalと同じような感じ。
このコードを実行し、"start"の直後に"end"が表示されれば別スレッド、無限ループに突入したら同スレッド、ということになる。

結果

無念。"end"は表示されなかった。別スレッド、というか別プロセスでコードを走らせるためには今のところは Child Process を走らせるしかないようだ。
でも、この VM モジュールは色々と面白い使い方がありそう。動的なスクリプトの追加とか素敵じゃない?