TypeScript 7.0はGo言語で実装され10倍高速化される — 公式がアナウンスし大きな話題に
DRANK

3月12日、Microsoft Developer Blogsで「10倍高速なTypeScript(A 10x Faster TypeScript)」と題した記事が公開された。この記事では、ネイティブ実装に移植することによるTypeScriptの大幅なパフォーマンス向上について詳しく紹介されている。

by @tf_official
Related Topics: TypeScript Go (programming language)
4 comments
  • まさに優しい終身の独裁者だからこその決断で、その勇気が素晴らしいなと思います。移植だけする予定とのことでしたが、それもここまで広がってしまった言語を広くサポートするうえで素晴らしい決断だなと思います。
    1990年代はセルフホストが流行ってました。自分の言語で自分のコンパイラを書くという技術がよく使われてました。それはひとえにハードウェアとCPUが多種多様だったことやドッグフーディングの重要性が叫ばれていたことなどが要因です。一方今はハードウェアも多様ではなくなり、コンパイラも複雑さを増しています。別言語で実装して、パフォーマンスを出すという判断を取るのは非常に理にかなっています。一方TypeScriptに慣れ親しんだ人が貢献しようとするとGoも知らないといけないというハードルが少し上がったように思えます。開発者の貢献しやすさを取るか、パフォーマンスを取るかというバランスを常にリーダーは求められていくのでしょう。
    いずれにせよ、ここにきて Anders Hejlsberg 氏が大きな決断をしたことを尊敬します。

  • 最近Andersさんが活動しているのを見かけないので引退したのかな? と思っていたのですが、こんなプロジェクトに取り組まれていたということで驚きました。TypeScript周りのエコシステムではRustなどを用いた高速なツールチェインが進化を続けていましたが、TypeScriptの型チェックという点ではこれまで本家TypeScriptの代替が存在せず、高速な言語で書き直すという第三者の取り組みもうまくいっていませんでした。それを本家TypeScriptチームが取り組むということで、とても期待できます。
    ただ、GoはWASMにコンパイルした際のパフォーマンスが悪いことが知られています。TypeScriptをブラウザ上で実行するユースケースもあるため、それが今度どうなるのかは注視が必要です。
    この話題については誤解も見られるため注意しましょう。まず、今回は「書き直し (rewrite)」ではなく「移植 (port)」であることが強調されています。元のTypeScriptによる型チェッカーの実装をほぼ1:1でGoに翻訳するものであり、コンパイラの設計などが変わることはありません。そのやり方でないと、既存のTypeScriptの挙動を維持したまま再実装するのは難しいのでしょう。
    また、この移植による10倍高速化の恩恵を主に受けられるのは「型チェック」の時間です。あくまで、型チェッカーを含むコンパイラが10倍高速化するという話なので、我々が書いたTypeScriptコードの実行時間が10倍になるとかではありません。また、トランスパイルについても、本家TypeScript以外にも高速な実装(esbuild、SWCなど)がすでに使われていますから、それらを使っている人がさらにスピードアップの恩恵を受けることはないでしょう。