本文へ移動

AI Buildersのための最新のニュース、知見、事例を毎日お届け

運営会社
実行環境とインフラCloudflare

Cloudflare、TypeScriptのコンパイラをRustに移したtsrsを試験公開

CloudflareとVoidZeroは10月20日、TypeScriptのコンパイラをRustに移したtsrsを試験公開した。型検査の並列数をそろえると、TypeScript 7.0より最大8倍速く、メモリは約70%少ないという(会社の申告)。forkではなく、TypeScriptチームと協力して進める。WebAssemblyで動かし、エージェントの開発環境を隔離された場所で丸ごと回すことを狙う。

記事の内容を自社でどう進めるか、内容が固まっていない段階でも相談できます。仕事の相談

毎週 1 回、その週の記事から 5 本と実践の 1 本を選んでメールで届けます。ニュースレターを購読する(無料)

Cloudflareのブログの絵。TSのマークからtsrsの台を経てRustのカニへつながる
画像: Cloudflare

CloudflareとVoidZeroは10月20日、TypeScriptのコンパイラをRustに移したtsrsを公式ブログで試験公開した。Owner.comのMax Schwenk氏も加わり、JavaScriptのツール群Oxcの一部として育てる。TypeScriptチームと密に協力して進め、言語を枝分かれさせるforkではないと明言した。npmからすぐ試せる。

最大8倍速いとうたう

同社によると、型検査の並列数をそろえた比べ方で、tsrsはTypeScript 7.0より最大8倍速く、使うメモリは約70%少ない(会社の申告)。比べ方はTypeScriptチームと一緒に、同じ設定になるよう確かめたという。計測の手順はリポジトリのbenchのフォルダに置いてある。

同社は、ほかのTypeScriptの移植版が示す速さには、大きなマシンや既定と違う設定で測ったものが多いと書く。次の版のTypeScript 7.1 betaも、7.0より最大2.5倍速くなっており、その最適化の一部はtsrsから本家に戻したものだという。

tsrsは標準では、マシンの種類に合わせて設定を変え、メモリを多めに使う代わりにさらに速く動く。試すには、npmでtsrsを入れてnpx tsrsを動かす。今はまだ試験版で、診断の表示の順番など、本家と違う所が残る。安定版までに違いを最小にするとしている。

同社は、forkしない理由も書いている。TypeScriptチームは機能によっては何年もかけて試作を重ねてから実装を選ぶ。移植版がその決定に細かく従わなければ、いずれ互換が崩れて使えなくなる。言語の設計と方向は、TypeScriptチームだけが決めるべきだという立場だ。

AIで大きな移植は数日、と同社

なぜ今なのかについて、同社は、最先端のAIモデルが大きな移植をほぼ自力で数日でこなせるようになったと説明する(会社の申告)。これまでTypeScriptの移植で成功したのは、TypeScriptチーム自身によるGoへの移植だけだった。ただ、ブログはtsrsのどこまでをAIが書いたかは示していない。

その結果、AIで作った雑な枝分かれも、忠実な移植も、作りを根本から変えた版も出ていると同社は書く。速いTypeScriptを求める声ははっきりあり、そのうえで本家の決定に厳密に従う版を目指すという。Theo Browne氏のtsc-rsとも1つのパッケージにまとめ、LSPを含むすべての機能に対応させる計画だ。

本家に合わせる役もエージェント

本家との同期にも、エージェントを使う。同社が手掛けるNext.js互換のVinextでは、毎朝エージェントが本家の変更を読んで差分を取り、影響がありそうなものを課題にしている。毎晩、本家のテストを流して互換表を作り直す。ずれが見つかれば、エージェントが両方のコードで原因の変更を探し、再現を作り、修正案を出す。tsrsにも同じ手順を当てる。

Goへの移植で、TypeScriptはそれまでのTypeScriptで書かれた版より10倍速くなっている。それでも足りないのかという問いに、同社は速さだけの話ではないと答える。Rustを選んだ理由は、WebAssemblyで小さく動かせることだ。Goのプログラムをそのまま移すと、ガベージコレクターも一緒に入る。メモリを食わなければ、同社のWorkersの上で、エージェントと組み合わせて、開発の道具一式を隔離された環境で端から端まで回せるという。ブラウザーの中や組み込み機器でも動かせるとしている。

Oxlintへの組み込みを試す

同社はすでに、Vite、Rolldown、Oxlint、Oxfmtといった、JavaScriptの世界を支えるRust製の無料のツールを抱える。今後はtsrsを自社の道具に深く組み込む実験をし、たとえばOxlintで型の情報を使うlintのルールに使うという。Oxcのチームは、速く、メモリを減らし、保守しやすくするためのコードの整理をもう始めた。TypeScriptチームの側も、本家のtscでメモリと速さの改善を試しているという。

編集部の見方

TypeScriptで書く人にとって、型検査の待ち時間は、エージェントに直させては検査し直す繰り返しの中で効いてくる。とはいえ8倍は会社の申告で、まだ試験版だ。手元の大きめのrepoでnpx tsrsを一度回し、本家の結果と診断がずれないかを見るくらいが今はちょうどよい。むしろ目を引くのは、本家への追従をエージェントに毎日やらせる運用の方だ。移植を作るより、ずれずに保つ方が難しいからだ(編集部の読み)。

出典

に確認(日本時間)

  1. 公式ブログ(blog.cloudflare.com)
  2. benchのフォルダ(github.com)

この記事をシェア

この記事は役に立ちましたか