Microsoft Edge Japan

Microsoft Edge と Internet Explorer に関する情報をお届けします。

ChakraCore のファーストアニバーサリー

この記事はマイクロソフト米国本社の Edge 開発チームのブログ Microsoft Edge Dev blog の記事、「ChakraCore’s first anniversary」 (2017/1/13) の記事の抄訳です。 この記事についてのご質問、ご意見は元記事のほうへお願いいたします。
その他についてはこちらの記事をご参照ください。
Microsoft Edge Dev Blog の翻訳記事を Microsoft Edge Japan ブログで公開します。


今日は、MITライセンスの下でChakraCore – Microsoft Edge を支える Chakra JavaScript エンジンのコア – をオープンソース化してから1年を迎えました。

私たちはコミュニティのすべての方々の貢献、援助、そして我々との連携に感謝します!

あなたの貢献とフィードバックは、私たちがコミュニティのためのより良い製品を改善し、作成するのに役立ちます。

この期間中、我々は内部と外部の両方に 70 人を超えるコントリビューターを抱え、ダイレクトに ChakraCore コードベースと、いくつかの私たちと関係のある JavaScript コミュニティのメンバーの個々の能力と組織に対して貢献しました。
(※うまく訳せていないかもしれません。原文 : During this period, we’ve had over 70 contributors, both internal and external, directly contribute to the ChakraCore codebase and several other members of the JavaScript community engaged with us, both in individual capacity and as organizations.)

TypeScriptOpen Translators to ThingsHoloJS などの新製品とサービスは、現在 ChakraCore を使用しています。そして、コア・エンジンの外で、WebKit に ChakraCore のテストスイートが搭載されたり、ChakraShim 上に SpiderNode がビルドされたりといったように、ミュニティにとって貴重なものであると証明されるのを見るのは素晴らしいことでした。

Screen capture showing the ChakraCore repository on GitHub.

昨年は、ChakraCore に同梱されているいくつかの機能について、実際のユーザーエクスペリエンスに重点を置いた JavaScript 言語のサポートと現実界のユーザー体験におけるパフォーマンスの最適化へのフォーカスを含めてお話ししました。さらに、我々は、タイムトラベルデバッグWebAssembly などの新しい技術をエンジンへ持ってきました。今日は、ChakraCore のクロスプラットフォームの進捗についてもう少し詳しく共有したいと思います。

Linux 上の ChakraCore パリティへの道

オープンソースの ChakraCore に設定した重要な目標の1つは、Windows 以外のプラットフォームで実行できるようにするため、Linux を皮切りに、アプリケーションやサービスが実行されるプラットフォームに関係なく、開発者が各自のニーズにエンジンを使用できるようにすることでした。昨年 7 月、我々 は ChakraCore インタプリタと x64 Linux (Ubuntu 16.04 LTS and Clang 3.8+)、macOS 上のランタイムの最初の実験的実装を共有しました。この実装により忠実度の高い ChakraCore JavaScript インタープリターを Linux プラットフォーム上で実行することができました。

インタプリタはスループットのパフォーマンスに関してはよくないのですが、アプリケーションまたはサービスにサイズやメモリの制約がある場合や、エンドユーザーのフォーカスがスタートアップのパフォーマンスにある場合には、非常に便利な場合があります。これは、通常、インタプリタのフットプリントとスタートアップの待ち時間が少ないためです。それらは、JavaScript JIT コンパイラに共通する動的な最適化に基づいて作成される JIT 処理コードのコピーを保持する必要はありません。JIT された関数は、一般的なコンパクトのバイトコードと比較してサイズが大きいのです。また、インタプリタが解析された直後にコードの実行を開始することもできます。

スループットのパフォーマンスが重要なシナリオでは、昨年12月にマスターブランチに ChakraCore JIT を導入しました。しかし、あらゆるモダンな JavaScript エンジンの一部である JIT コンパイラー自体は、ガベージコレクタのパフォーマンスによってパフォーマンスがすぐにゲートされるため、スループットを向上させるのに十分ではありません

私たちは今日、ChakraCore のマスターブランチで Linux 用の、ChakraCore の同時および部分的なガベージコレクターを有効にするキーである software-write-barrier サポートを実装して共有したことを喜ばしく思っています。

ChakraCore には JIT と完全に機能するガベージコレクタが搭載されているため、Windows 上の ChakraCore の主要なアーキテクチャーは現在すべて Linux に移植されています。チームは現在、国際化サポートのような残りのいくつかの機能を追加することに焦点を当てています。バグの最後のセットを退治し、Linux 上での ChakraCore のパフォーマンス特性が Windows と同等となるように最適化します。

次は

私たちの次のステップは常に我々の roadmap で利用できます。今日、我々は意図的にロードマップを意図的にアップデートしていません。なぜならばロードマップ上の現在のアイテムは Linux 上の  ChakraCore のサポートとリリース品質にもっていくための短期的なフォーカスを示しているからです。引き続き我々は ABI のステーブルな Node API とともに盛り上がっている Node.js コミュニティに協力し、さらなる JavaScript と WebAssembly の機能、と現実界での使用パターンを向上します。

我々は今後数か月の間にクロスプラットフォーム関連部分にさらなる進歩を行います。より良い Linux のサポートとパフォーマンスと ChakraCore のリリースにご期待ください。しかし、Linux や MacOS で ChakraCore を試してみたい方、早期のご意見をベータ版でご提供したい方は、ここをクリックしてください。

もう一度、私たちはすばらしい JavaScript コミュニティに協力するチームとして謙虚になり、プロジェクトに貢献してくれた皆様に感謝の意を表します。我々はコミュニティとの更なる協力を楽しみにしており、ChakraCore でより多くの開発者がプロジェクトに貢献し、クールなものを構築することを期待しています。私たちはあなたの経験、あなたのフィードバック、あなたがなにをビルドしているのか学ぶのが大好きです。ぜひ共有してください! あなたは、常に gitter 経由で ChakraCore リポジトリ、または私たちに @ChakraCore を介してつぶやきを送って私たちに到達することができます。

Gaurav Seth, Limin Zhu, and Brian Terlson; Program Managers, Chakra

Updated January 13, 2017 10:25 am