TypeScript Weekly #5:7.1 Betaでモジュール型APIとContent Mappersを公開、CloudflareはRust移植版tsrsを発表

TypeScript · Weekly #5

TypeScript Weekly #5:7.1 Betaでモジュール型APIとContent Mappersを公開、CloudflareはRust移植版tsrsを発表

TypeScript週刊コンパイラWebAssembly

データソース:GitHub Releases + 官方博客 + HN

📦 リリース動向

公式安定版の状況と7.1 Betaプレビューの節目

現在、公式の最新安定版は TypeScript 7.0.2(2026年8月20日リリース、tag v7.0.2)であり、対応するVS Code拡張機能 vscode-typescript/v1.0.1 は9月30日に配信されました。7.0のネイティブアーキテクチャ刷新に関する詳細は、TypeScript 7.0 詳細解説 を参照してください。

10月20日、公式チームは重要なマイルストーンとなる TypeScript 7.1 Beta(tag v7.1-beta、npm install -D typescript@beta で試用可能)を公開しました。今バージョンはエンジニアリング向けインターフェースの開放とコンパイラ性能の極限までの追求に焦点を当てています。主な設計変更と実務への影響は以下の通りです。

改善項目メカニズム設計と変更詳細エンジニアリングへの実際の影響
モジュール型 Programmatic API単一のエクスポートを廃止し、typescript/sync、typescript/async、typescript/fs、typescript/ast などの6つのエントリーポイントに分割。言語間メモリ管理に Disposable と using 宣言を導入。スナップショットと階層型仮想ファイルシステムによる増分ステートモデルを構築。7.0でGo言語に全面刷新された後に外部ツールチェーンから型チェッカーをプログラム呼び出しできなかった問題を解決し、typescript-eslint、バンドラー、自動静的解析パイプラインにネイティブなホストAPIを提供。
単一ファイルの第一級拡張ポイント Content Mapperstsconfig.json に contentMappers 設定を追加し、--runExternalCode オプションと連携して外部プロセスを起動。非TSファイルを領域ごとに仮想ASTへマッピングし、元の位置情報を相互マッピング。従来のVolarによるモンキーパッチ手法を置き換え、.vue、.svelte、.astro、MDXファイルが公式 tsc を通じて直接フル型チェックを実行可能に。
インポート属性による型分岐とソースインポートアンビエント宣言において with 属性に応じた型解決の分岐を許可(例:declare module "*" with { type: "css" })。ECMAScriptプロポーザルの import source をサポート。--target es2026(Uint8Array Base64、Iterator.zip、Promise.allKeyed を含む)に対応。インポート属性の指定漏れによる暗黙のランタイム障害を未然に防止。WebAssemblyモジュールの事前解析向けに抽象ソース型 AbstractModuleSource を提供。
チェッカー深層のメモリ圧縮シンボルテーブルの事前確保、インラインハッシュバッファ、Typed-Arena境界クォータ管理(PR #64802)、ホット/コールドな型形状の分離配置(PR #64800)。4スレッドチェック環境において大規模コードベースのヒープメモリを15.8%〜49.6%削減し、複雑な直和型生成時における急激なメモリ割り当てを根本から解消。

公式ベンチマークによると、4スレッドチェッカーを有効にして --noEmit を指定した場合、TypeScript 7.1 Betaは7.0と比較して実行時間とメモリ消費量の双方で大幅な改善を示しています。

ベンチマーク対象TS 7.0 実行時間TS 7.1 Beta 実行時間時間短縮率TS 7.0 ヒープメモリTS 7.1 Beta ヒープメモリメモリ削減率
mui-docs22.2s11.9s46.6%8,093 MiB4,079 MiB49.6%
vscode21.6s17.7s17.7%8,387 MiB6,943 MiB17.2%
sentry19.6s15.1s22.8%6,587 MiB5,216 MiB20.8%
t3code-server26.5s19.1s28.2%6,894 MiB5,197 MiB24.6%
bluesky4.48s3.89s13.2%2,017 MiB1,698 MiB15.8%

📝 ディープダイブ

CloudflareとVoidZeroがタッグを組みTypeScriptの純Rust移植プロジェクトtsrsを始動

何が起きたか: 10月20日、CloudflareとVoidZeroは共同でTypeScriptの純Rust移植プロジェクト tsrs を推進することを発表しました。Oxc配下で育成され、tsc-rs を統合する構成です。公式ベンチマークによると、同一スレッド数において tsrs は7.0に比べて最大8倍の高速化を達成し、ヒープメモリを約70%削減します。チームはAI自動化パイプラインを活用し、マイクロソフトの最新コミットを毎日同期して公式テストスイートを走らせています。

なぜ重要か: GoからWebAssemblyへのコンパイルはGCランタイムを内包する必要があり、ブラウザのサンドボックスやエッジWorkerにおいてメモリのオーバーヘッドが課題でした。Rustはゼロコストランタイムの強みを生かし、型チェッカーをエッジノードやブラウザ環境へ軽量に組み込むことを可能にし、Oxlintの型認識Lintに向けた低メモリ基盤を提供します。

誰に影響するか: Web IDEの開発チーム、エッジコンピューティングの開発者、OxlintやBiomeによる型認識Lintを追跡しているエンジニア。

関連リンク:Cloudflare公式ブログ、GitHub tsrsリポジトリ

筆者コメント: tsrs で培われたメモリのコンパクトレイアウト設計は、すでに7.1 Betaの上流メインラインへ還元されています。現状では診断情報の出力順序が公式とわずかに異なる点があり、複数パッケージのモノレポにおけるインクリメンタルキャッシュの安定性などは今後の検証が待たれます。


TypeSQLがContent Mappersを活用し型推論を20倍高速化

何が起きたか: 10月23日、Postgres向け純粋型パーサーライブラリTypeSQLの作者がベンチマーク結果を公開しました。7.1 BetaのContent Mappersインターフェースを活用し、TypeSQLはSQL構文解析のキャッシュを .typesqlcache ファイルに書き出す仕組みを実装。500件のクエリを含むアプリケーションにおいて、型チェック時間が2.6秒から0.13秒へと95%短縮され、型のインスタンス化回数が460万回から12.3万回へと97%削減、20倍の高速化を実現しました。

なぜ重要か: 従来のコンパイラは単一のProgramインスタンスのメモリ内でのみ型をキャッシュしており、プロセスを跨ぐと無効化され、型システムをディスクに保存することもできませんでした。Content Mappersによってサードパーティ製ライブラリがコンパイルフロー内に独立したプロセスを登録し、動的に仮想型定義を注入できるようになり、型レイヤーにおける永続キャッシュの壁が打ち破られました。

誰に影響するか: テンプレートリテラル型や条件型を用いて複雑なDSLを構築する型ライブラリ作者(SQLやGraphQLパーサーなど)、および型チェックの待ち時間に悩まされているフルスタック開発チーム。

関連リンク:İsmail Karsliの技術ブログ、GitHub TypeSQLリポジトリ

筆者コメント: この手法を利用するには tsc に --runExternalCode フラグを明示的に指定する必要があります。外部マッパーによるキャッシュ生成ロジックに不備がある場合、誤った型パス結果を生むリスクがあり、セキュリティ監査の対象範囲が広がることには注意が必要です。


TypeScript 7.1が分配条件型の健全性バグを修正、厳格な部分型分離を適用

何が起きたか: TypeScript 7.1 BetaにPR #64237がマージされ、長年追跡されていた条件型の健全性(Soundness)に関する問題(Issue #63708)が修正されました。これまで分配条件型を評価する際、コンパイラは元の型引数と各分岐内で絞り込まれた具象メンバーを厳格に区別しておらず、type Issue<A extends number, B extends A> = A extends B ? never : Show<A, B> のような型にユニオン型 0 | 1 を渡した際に誤って "0 extends 1" という不正なリテラルを生成していました。7.1では分岐内における絞り込み済み引数の危険な再利用が禁止されました。

なぜ重要か: 分配メカニズムは高度な「型体操」の基盤です。以前の推論上の不備により不正な型が静かに通過し、本番コードにおいてコンパイル時の型漏れを見逃す原因となっていました。厳格化により、条件型の展開と部分型制約の整合性が論理的に保証されます。

誰に影響するか: 汎用型ライブラリ(type-fest、zod など)のコアメンテナー、および高度なジェネリックコンポーネントを設計するフロントエンドアーキテクト。

関連リンク:TypeScript PR #64237、TypeScript Issue #63708

筆者コメント: これは破壊的変更(Breaking Change)に該当します。従来の緩いルールに依存していた既存の型定義ライブラリは7.1 Betaでコンパイルエラーになる可能性があり、移行時には不要なジェネリック継承の除去や中間段階での条件抽出への変更が必要となります。


ts-polyglotが登場:Content MappersによるC/C++/Rustソースの直接インポートを実現

何が起きたか: 10月23日、オープンソースプロジェクト ts-polyglot が公開されました。TypeScript 7.1 BetaのContent Mappersを活用し、TypeScriptから .c、.cpp、.rs のソースファイルを直接 import 可能にします。バックグラウンドプロセスが関数シグネチャを自動抽出し、強力な型宣言を動的生成するため、冗長なFFIボイラープレートを手書きすることなくネイティブ関数を呼び出せます。

なぜ重要か: 従来の多言語連携ではN-APIやwasm-bindgenのグルーコードを手動管理する必要があり、メンテナンスの負荷が大きな課題でした。ts-polyglot はコンパイラネイティブの仮想ソースマッピングとバックエンドビルド連携を駆使し、エディタ上で直接C/Rust関数のホバー型定義やブレークポイントデバッグを実現しています。

誰に影響するか: C/Rustアルゴリズムを呼び出すフロントエンドチーム、オーディオ・ビデオ開発者、言語横断的なツールチェーンを模索するエンジニア。

関連リンク:ts-polyglot 公式サイト、Hacker News ディスカッション

筆者コメント: 現時点では数値や真偽値などのプリミティブ型のみが動作し、複雑なポインタや動的メモリ管理は実験段階です。しかしその構成は、7.1の拡張ポイントが多言語協調ビルドをフロントエンド標準ワークフローに統合可能であることを明確に示しています。


🔥 コミュニティの議論

CloudflareとVoidZeroのtsrs発表:Rust移植版が巻き起こすコンパイラ最終形態論争

10月20日、CloudflareとVoidZeroによる純Rust製コンパイラ tsrs の発表はHacker Newsの首位を獲得しました(432ポイント、213コメント)。

  • エッジ・Wasm優先派:主にエッジプラットフォームやモダンツールチェーンのエンジニアから成る陣営。マイクロソフトによるGo採用はローカルCLIの高速化に貢献したものの、Wasmへコンパイルすると数MBのGCランタイムが付随し、ブラウザや軽量Workerでのメモリ負荷が高いと指摘。Rustは優れたWasm親和性と確定的メモリ解放を備えており、軽量サンドボックス上で完全な型チェッカーを稼働できるため、フロントエンドのネイティブツール基盤を完成させる最後のピースだと主張します。
  • エコシステム分断への懸念派:懐疑的な企業アーキテクトは、コミュニティ内にマイクロソフト公式のGo版、Bun製チェッカー、Theo Browneの tsc-rs、Vercelの tsc-ts、そして tsrs が乱立する現状に懸念を示しています。言語仕様は公式コンパイラの実装そのものによって定義されているため、非公式移植版はコーナーケースの推論で微妙な差異を生みやすく、AIを用いて毎日上流パッチを同期するとしても、膨大なテストスイートを長期保守する人的コストは依然として重いと指摘します。

関連リンク:HN ディスカッション #50165953、Cloudflare 技術ブログ


Rune 1.3がTypeScriptを端末環境へ統合:TUIツールチェーンの境界と肥大化をめぐる議論

10月23日、多機能ターミナル環境Runeがバージョン1.3をリリースし、TypeScriptネイティブサポート、Helixエディタコア、Kittyグラフィックプロトコルを統合しました(Hacker News 63ポイント、26コメント)。

  • 統合ターミナル擁護派:支持者は、開発者がリモートSSH環境、クラウド開発環境、GUIのないコンテナで作業する頻度が増えている点を強調。Rune 1.3はコード編集、ターミナルエミュレーション、グラフィックプロトコル、ネイティブ型チェックを単一のコンパクトなTUIバイナリに統合しており、複雑な環境構築なしで即座に使えるリモートワークフローを提供すると評価します。
  • Unix哲学・ミニマリズム派:反対派は、単一のツールは単一の目的に集中すべきというUnix哲学からの逸脱を指摘。ターミナルエミュレータは軽量かつ超低遅延であるべきであり、重量級の言語サーバーやエディタコアを無理に詰め込むことはバイナリの肥大化やメモリリークを招き、エラー診断の体験も成熟した独立LSPツールには及ばないと批判しています。

関連リンク:HN ディスカッション #50214325、Rune 1.3 リリース発表


🔭 来週の注目ポイント

  • TypeScript 7.1 RC リリース候補版の進展:Beta版へのフィードバックを受け、Content Mappersの --runExternalCode 権限管理メカニズムやVS Code設定 js/ts.contentMappers.enabled の分離ポリシーの洗練、主要フレームワークによる対応パッケージの動向。
  • tsrsとtsc-rsの統合および7.1 API互換性:OxcチームとTheo BrowneによるRustコンパイラコアの統合進捗を追跡。GCのないアーキテクチャにおいてTypeScript 7.1の階層スナップショットおよびASTアクセサインターフェースへの適合状況を注視。