マイクロソフト、TypeScriptのコンパイラなどをGo言語に移植することで10倍の処理速度に

今回は「マイクロソフト、TypeScriptのコンパイラなどをGo言語に移植することで10倍の処理速度に」についてご紹介します。

関連ワード (ネイティブ、計算集約型、開発者体験等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


マイクロソフトのテクニカルフェローで、TypeScriptのリードアーキテクトであるアンダース・ヘルスバーグ(Anders Hejlsberg)氏は、TypeScriptのコンパイラを始め各種ツール群をGo言語に移植する「Project Corsa」を実施中であり、結果として処理速度が約10倍速になることを明らかにしました。

これによりTypeScriptからJavaScriptへの変換が高速になり、コードエディタでTypeScriptを記述するときの補完や検索などのコードアシスト機能も迅速になるなど、さまざまな開発者体験が向上すると説明されています。

ヘルスバーグ氏はTurbo Pascalの作者であり、その後もDelphi、C#などの優れたプログラミング言語の開発に携わってきたことで知られています。

TypeScriptの処理速度やスケーラビリティに課題

TypeScriptは、JavaScriptに対して型システムを追加し、またJavaScriptの将来のバージョンで組み込まれるであろう機能を備えることなどにより、コードの品質や読みやすさを高める優れた開発者体験を実現することを目指したプログラミング言語です。

TypeScriptは、WebブラウザやNode.jsのようなJavaScriptランタイムを備えた環境で実行できるように、最終的にはJavaScriptにコンパイルされます。

このとき使われるTypeScriptコンパイラは、現時点ではTypeScript自身によって記述されており、通常はJavaScriptランタイムであるNode.jsのパッケージとして導入され実行されます。

ヘルスバーグ氏は今回のProject Corsaを説明する動画の中で、JavaScriptランタイムは主にWebブラウザでの利用に最適化されているため、コンパイラのような計算集約型のワークロードの処理にはそれほど向いておらず、それゆえにTypeScriptのコンパイラや関連ツール群は処理速度や、大規模プロジェクトの処理時におけるメモリ不足などのスケーラビリティに課題を抱えていたと説明しました。

fig

Project Corsaは、TypeScriptコンパイラを始めとする各種ツール群をGo言語に移植し、ネイティブバイナリ化することでこれらの課題を解決することを目指したものです。

高速化はGo言語のネイティブ化と並列処理によるもの

下記は動画の中でヘルスバーグ氏が行った、TypeScriptで書かれたVisual Studio Codeのコンパイルにかかる時間の比較です。

最初の処理は既存のTypeScriptコンパイラ(tscコマンド)によるもので、約63秒。次の処理(tsgoコマンド)が新たに開発中のGo言語によるネイティブバイナリのコンパイラによるもので約5.8秒と、10倍以上の高速化が示されました(赤線はPublickeyによる)。

fig

なぜC#やRustといった同氏が好む言語を使わないのか、という点に関して、同氏はさまざまな言語でプロトタイプを作った結果、すべてのプラットフォームで完全に最適化されたネイティブバイナリを生成できて、データレイアウトの細かな制御が可能で、ガベージコレクタによるメモリ管理が自動化され、優れた並列処理が可能などの理由によりGo言語を選択したと説明しています。

その上で、性能向上の要因の半分はネイティブコード化によるものであり、残りの半分は並行処理の利用によるものだとしました。

TypeScript 7.0でGo移植版が提供される見通し

既存のTypeScriptコンパイラやツールのTypeScrip/JavaScripttからGoへの移植はファイルや関数ごとにほぼ忠実に行われており、両者の結果は同じになるとのこと。

現時点でスキャナ、パーサ、バインダの移植はほぼ完了しており、型チェッカも80%程度完了。Language Server Protocol (LSP) を採用したランゲージサービスに取り組んでいるところだとしました。

TypeScriptは現在バージョン5.8となっており、バージョン6.xも引き続きTypeScript/JavaScriptベースで開発が進められる予定です。

Go言語を用いたネイティブバイナリのコンパイラやツール群は、既存のツール群と同様の品質や機能が揃ってきた時点でTypeScript 7.0としてリリースされる予定だとのことです。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
2023年の「SaaS」「脆弱性」に関するセキュリティ振り返り–アシュアード
IT関連
2023-12-17 06:42
インプレス創設30周年おめでとうございます。記念の30年史がわずか110円で買えるのも御社らしい素晴らしさです
業界動向
2022-04-13 22:09
AWSの主要サービスをローカルでエミュレート、「LocalStack」が1.0に到達
AWS
2022-07-25 13:27
ステルス化するサイバー攻撃、防御側で大切なことは「越境学習」と専門家
IT関連
2025-01-21 03:57
LPI、ITセキュリティの入門認定日本語試験をリリース
IT関連
2023-09-08 11:23
セールスフォースSVPに聞く–「Einstein Automate」、AIと自動化の可能性(後編)
IT関連
2021-03-15 09:14
富士フイルムBI、豪ITサービス企業を買収–オセアニアで基幹システム販売
IT関連
2023-03-02 18:03
キンドリルジャパン新社長が語った「キンドリルの魅力」とは
IT関連
2024-04-19 11:13
AWS、第3世代「AMD EPYC」搭載EC2インスタンス「C6a」–コンピュート集約型ワークロード向け
IT関連
2022-02-17 22:51
デジタル資産「NFT」を今、フォローすべき理由
ブロックチェーン
2021-03-02 19:35
「スカパー!」アクセス集中でルヴァンカップ見られず 視聴料を返金
くらテク
2021-05-09 22:47
ユーザー急増でCDNのひっ迫を改善したベネッセ
IT関連
2022-08-21 08:51
盛岡市とNEC、生成AIを活用した職員の業務効率化を実証
IT関連
2024-12-04 02:10
継続する「Log4Shell」脆弱性の被害が証明したSBOMの価値
IT関連
2022-10-12 13:55