マイクロソフト、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
「低遅延」をうたうゲームキャプチャデバイス「Genki Shadowcast」でのプレイは現実的か ノートPCがコンシューマーゲーム機のディスプレイに早変わり (1/5 ページ)
くわしく
2021-03-26 02:09
弥生、新ブランド「弥生Next」を発表–サービス同士をつなげ、経営や業務を円滑化
IT関連
2023-10-14 10:18
Apple Siliconの3nmプロセス生産は2022年後半? AppleはTSMC「N3」の最初の顧客か
IT関連
2021-08-13 14:12
ペンタゴンとシリコンバレーのパートナーシップを再起動
IT関連
2022-03-19 12:41
VRヘッドセットのVIVEに「表情トラッカー」 口元など38カ所をキャプチャー
製品動向
2021-03-12 20:23
欧州のAndroidの「選択画面」はより優れた選択肢を隠し続ける
ネットサービス
2021-04-04 23:31
Hakuhodo DY ONE、「Notion」で3000人規模の情報活用と業務効率化を推進
IT関連
2024-09-21 21:08
マイクロソフト、プロセスマイニングベンダーのMinitを買収
IT関連
2022-04-02 19:13
JR東日本、時速360キロの新幹線から5Gで8K映像伝送などに成功
IT関連
2021-01-28 16:51
Box、電子署名サービス「Box Sign」をリリース
IT関連
2021-07-29 04:29
テック業界に対するリナ・カーン氏の時宜を得た懐疑論はFTCの承認公聴会を新鮮かつ友好的な方向に導くものだ
パブリック / ダイバーシティ
2021-04-29 08:05
「OAからDXへ」と転換を図るリコーに求められることは何か
IT関連
2023-12-15 13:49
ドコモの「ahamo」、有料で店頭サポートを開始 1回3300円
企業・業界動向
2021-04-23 06:31
安全な認証手段が増えてきた今でも主流は「パスワード」
IT関連
2022-11-05 13:57