以下斜め読んだ内容

pseudo translation of useful posts, book reviews, remarks,etc. twitter: feeddict

v8とnodeのカップリングとv8monkey/spidernode

  • 時系列で並べたメモ
  • nodeをv8以外でも走らせる可能性等々
  • node界隈の活発なやりとりは面白い

node on spidermonkeyは当初検討されてた

以降ずっとnodeプロジェクトはv8を唯一のVMとして開発

  • v8チームとnodeチームは相互に連携
  • バグ直してもらったり
  • crankshaftリリースされれば取り込んだり
  • リソース
    • 割愛。「The Node Ahead」の中にもエピソードは紹介されてる

yahoo! のyahoo! mailチームで、node on 別のVMプロジェクトが・・

  • 口述のv8monkey/spidernodeのプロジェクト始めた人のポストに言及
  • 既に死亡プロジェクトらしいが
  • リソース
    • 見つけてない

nodeがv8と一蓮托生なのってどうなの?という声出した人あり

  • 2011年2月
  • Yahoo!のエンジニアBruno Fernandez-Ruizがポスト
  • NodeJS: To V8 or not to V8
  • Yahoo!のエンジニア連中もサーバーサイドJSへの関心度高い
  • V8の今後についてGoogleがどうするつもりなのかが色々不透明
  • プロジェクトの継続やサーバーサイドでのV8利用など
  • nodeのプロジェクトが順調にいってほしいという気持ちから懸念点としてポスト

BrunoのポストへJoyentのファウンダーがリプライ

  • On Bruno’s Concern About the Current Coupling of node.js and V8 « Joyeur
  • joyentは去年からnodeプロジェクトのcopyright欄にauthorと一緒に載ってる会社
  • no.deというホスティングサービスやってたり力入れてる(この辺は「The Node Ahead」にも詳しくのってる)
  • チーフサイエンティスト兼共同ファウンダーのJason Hoffan
  • こういう疑問は尤もなことだとして、一文一文にリプライする勢いの丁寧なポスト
  • 「node on 色々なVM」はプランにはある。というかVMをどれにするかは二次的。nodeを実用に耐えるものにしてくことが大事
  • まずはnodeをgreatなものしてくことに今は注力してるので、VM=V8でやってる
  • GoogleがV8を死亡プロジェクト認定した場合?フォークすればOK。
  • 本家プロジェクトが死亡して、フォークする羽目になったことはJoyentは経験済み
  • 2005年にはSolaris11をフォークさせて開発したことあった
  • OS X同梱のrubyもフォークしてDTraceして改良してたら、Snow Leopardでマージされた経験がある
  • 他にも色々
    • 割愛

Brunoがリプライ

  • Answering Jason on V8 governance and impact to NodeJS
  • v8/nodeの関係にソフトウェア的な欠陥があれば指摘プリーズとJasonに言われた件は今特段問題に感じてるわけじゃない、と
  • nodeプロジェクトの推移に関心があって、Jasonのリプライでだいたい満足した模様

nodeハッカーのPeter GreissがBruno/Jasonのやりとりへコメントしたり

  • facebookにいるnodeハッカー
  • ライブラリnode-webworkerのクリエータ
  • Brunoのポストの中でV8のデザインについて軽く書かれてる件へのコメント出してる
  • この辺はJasonがリプライでスルーしてるところ。
  • V8はサーバーサイドで使われることを想定してデザインされてないというBrunoの発言
    • 言わんとしてることは正直わからない
    • とりあえずJVMとV8を比べてみる
    • JVMは多機能で成熟してる
    • クライアント/サーバーでGCの動作モードも変わるくらい
    • JVMと比べるとV8は機能限られてる
    • 機能比較からJVM一択という話にはならない
    • JVMjavascript以外の言語のためのものとしてスタートし、対応言語のリストは増えてるがその中でjsの優先度は不明
    • バイトコード命令に追加されたinvokedynamicの実装はうまくいくのか、とか
  • V8にはスレッドがないのでfault isolationができないというBrunoの発言
    • あくまで自分の意見だが・・・
    • リクエストごとに各スレッドが処理するモデルと、全てのリクエストを1スレッドで処理するモデル
    • 大差ない。メモリにダイレクトにアクセスできない言語(js/java/etc...)での比較になるが・・・
    • マルチスレッドモデル
      • 障害発生は該当スレッドのスタックのトップに上がってくる。他スレッドは稼働し続ける。
      • ただ障害発生したスレッドがリソース(ファイルディスクリプタ、メモリ、コネクション)を使い尽くして、別スレッドを終了させることはありうる
      • アプリケーション同期にバグがあれば別スレッドをデッドロックすることだってある
    • nodeのようにリクエストが多重化されるモデル
      • でもだいたい同じ
      • 例外発生したらイベントループのトップにバブルアップするが、他のリクエストへは影響しない
      • スレッドモデルのような同期バグでデッドロックというケースがないので、このモデルの方がより落ちにくいかも
  • v8チームのnodeへのコミットのされ具合は不透明
    • 公式なアナウンスはv8チームからはないが、間接的な証拠やエピソードからすると、v8チームのメンバーはnodeにとても関心寄せてるとおもう

mozilla内でnode on spidermonkeyというプロジェクトがスタート

  • Paul O’Shannessy - blah. blah. blah. - About That Hybrid "V8Monkey" Engine
  • mozillaのエンジニアPaul O’Shannessyのポストで、プロジェクトのアナウンス
  • node/spidermonkey実装がない。ニーズはある
  • nodeのソースみた。v8/nodeは密に設計されてる
  • nodeを構築しなおさないとspidermonkeyと使えない
  • v8 apiをspiderkonkey上に実装して動かそうとするプロジェクト作った
  • 進展あり。なので報告
  • John Fordはビルドを自動化するツール作ってくれた
  • 毎回チェックイン後にテスト実行からビルドまで自動化
  • jsチームの期待。v8 apiの波及効果。影響受けてspidermonkey apiの改善されてく流れの形成
  • spidermonkey apiに変更はいった
    • 例えば、public apiのチェックが「==」から「===」に変わった
    • apiをCではなくC++ベースで提供していくことも議論されてる
  • node on spidermonkeyには先達あり
  • Yahoo!でも似たプロジェクトが短命だがあった。参考にした。v8monkeyプロジェクトへコミットしてくれた。
  • v8 apiの次のプロジェクトが、spidernode
  • nodeをフォーク。nodeのビルドシステムへのspidermonkeyの統合
  • nodeハッカーにon v8とon spidermonkeyいずれかを選べるようにしたい
  • v8すごい。でも競争の余地あり。js高速化競争はブラウザからサーバを舞台にしていきたい
  • johnがビルドシステム組み込んでくれたからv8nodeのビルドは楽々
  • wikiページ、todoリスト、irc作った
  • Rob Arnold,Shawn wilsherはspidermonekeyの開発してきたので今回も助けてくれた
  • johnはビルドツールでテスト時に助かった
  • ご存じBrendan Eichも参加してくれるといってる
  • インターンのMehdi Mulaniはパッチ送ってくれた
  • この規模でのc/c++プロジェクトは初めて
  • 大学で1/2セメスターでC書いた、C++のコードはMozillaで単発で書いた
  • 今は主にjs。前はphp/rubyとかのLL言語の経験
  • v8monkey/spidernodeプロジェクトは自分の開発経験を一変させてる
  • 教えてくれる友人いるしC++勉強しながらv8上で動くjsエンジンのコード書く経験快適
  • NodeConf 2011で会いましょう

nodeクリエータがこのプロジェクトへ反応

  • Twitter / Ryan Dahl: Amazed that Node is being ...
  • 今後に期待。spidenode動いたら、いいフィードバックをくれ。nodeのビルドシステムに
  • (補足)
    • というか疑問
    • nodeの次期安定板のv.0.6では、ビルドシステムをpythonベース(プラス拡張つき)のnode-wafを廃止して独自のビルドシステムにしていくらしい・・・
    • codeconf2011のryanのプレゼンのslideの23ページ目あたり
      • このスライドでのメインはwindows対応の話だけど、今後の計画とか載ってる