マイクロソフト、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
荷待ち時間解消の鍵は「同期」にあり–パナソニック コネクトらが連携
IT関連
2024-03-12 14:13
イスラエル製スパイウエア 世界の要人が被害に
IT関連
2021-08-03 05:58
AWS、マネジメントコンソールへのrootでのサインインに多要素認証を必須に。2024年半ばから
AWS
2023-10-10 11:55
第3回:ノーススターメトリックとは–持続可能で長期的なビジネス成果を定義する先行指標
IT関連
2025-01-08 02:52
「Cinnamon」の最新版がリリース–標準のデスクトップ環境より優れている5つの理由
IT関連
2024-12-08 05:20
国内5G市場、産業分野はローカル5Gの価格低価やメタバースなどへの活用拡大–IDC Japan
IT関連
2022-05-18 00:21
富士通、HPCや量子コンピューティングなどのクラウドを展開
IT関連
2022-04-07 16:09
リコー、CX管理ツールを採用–「サイレントマジョリティー」の意見収集へ
IT関連
2023-01-31 18:21
サイバーセキュリティ技術、導入の障壁は専門知識やリソースの欠如など
IT関連
2022-04-21 08:51
ランサムウェア攻撃を受けた日本企業の厳しい状況–イルミオ調査
IT関連
2025-02-05 12:05
物理とサイバーにまたがるセキュリティの取り組み–フォトシンスの小嶋CISO
IT関連
2024-06-12 16:56
ハイブリッドワークとクラウドの普及でIT部門の責任はさらに重く
IT関連
2023-10-04 01:58
量子スタートアップのRigetti、従業員の28%を解雇へ
IT関連
2023-02-15 16:26
グーグルクラウド事業、第1四半期決算で初の黒字化
IT関連
2023-04-27 20:46