MicrosoftはChakraをオープンソースにしてNode.jsを実行しようとしている

EdgeのJavaScript VMを開放するという彼らの約束を現実にするため、Microsoftは、寛容なMITライセンス下でChakraのソースコードを提供した。ChakraCoreという名の下でリリースされたコードは、MicrosoftがEdgeとUniversal Windows Platform (UWP)で使っているVMと基本的に同じもので、EdgeへのバインディングとUWPといくつかのCOM診断APIが除かれている。

ChakraCoreは様々なデスクトップ、サーバー、IoTアプリケーションに組み込むことができ、Microsoftはこれが開発者の役に立つことを望んでいる。ランタイムとひとつまたは複数の実行コンテキストへのアクセスを提供するJavaScript Runtime (JSRT) APIsでラップしたエンジンである。ChakraCoreは独自のガベージコレクションと例外管理を持っている。ECMA2015言語機能言語機能がサポートされているが、PromisesはChakraEdgeで動作するEnqueueJobのキューに入れられる必要がある。

Microsoftはまた通常のV8のものに加えてChakraCoreエンジンでNode.jsを実行できるように取り組んでいる。彼らはJSRTの上にV8のシム(shim)を作ることによってそれを実現し、JavaScript VM下の知識がなくても通常通りNode.jsアプリケーションを有効にする。プロジェクトはGitHubのMicrosoft/nodeに見つけることができる。

Microsoftは、モダンな診断APIをChakraCoreに追加する予定で、デバッグ中にステップを戻ることができるようにするデバッグツール、タイムトラベルデバッガに取り組んでいる。これはコールバックが含まれているコードのデバッグの役に立つ。MicrosoftはWindows 10 IoTが使われRaspberry Pi 2上で実行される、100以上のモジュールが含まれるNode.js/ChakraCoreアプリケーション上のデバッガーをデモした。彼らは技術を成熟して、それを開示する予定だ。

近い将来MicrosoftはChakraCoreを他のプラットフォームに移植したいと考えており、Linux Ubuntu 15.10 x64から始めている。彼らはまた一部のJavaScript機能を先行して提供する予定であり、現在、試験的フラグを通じて提供されている–分割代入(Destructuring Assignment)、デフォルトパラメーター、指数演算子(Exponentiation Operator)、Async。ES2015モジュールは、試験的フラグを通じてサポートされ、asm.jsパイプラインを使用してWebAssemblyコードを実行する予定だ。

開発者はChakraCoreを採用するだろうか?Microsoftはそう信じており、パフォーマンスベンチマークの結果、EdgeはOctane 2.0とJet Streamテストにおいて最新のChromeとFirefoxの両方に勝っていることを示している。KangaxのJavaScript互換テーブルによると、ES6機能のサポートはFirefox 45の85%、Chrome 49は71%なのに対してChakraCoreは79%をサポートしている。採用されるかどうかはさておき、MicrosoftはChakraCoreを開発者向けに公開し、EdgeとUWPに結果を返すつもりだ。