TypeScript Weekly #6:公式がWASIP1デュアルモードバイナリとデフォルトPGOを導入、ConvexがTypeScriptのWasm AOTコンパイルを実証

TypeScript · Weekly #6

TypeScript Weekly #6:公式がWASIP1デュアルモードバイナリとデフォルトPGOを導入、ConvexがTypeScriptのWasm AOTコンパイルを実証

typescriptTypeScript週刊コンパイラWebAssembly

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

📦 リリース動向

公式安定版の現状とメインラインの進化ベースライン

現在の公式最新安定バージョンは TypeScript 7.0.2(2026年8月20日リリース、tag v7.0.2)です。Go言語による7.0のアーキテクチャ再設計の詳細については、以前の解説記事 TypeScript 7.0詳解 をご参照ください。公式チームは10月20日に TypeScript 7.1 Beta(tag v7.1-beta)を公開しました。過去7日間でメインブランチは急速に前進し、合計42件のプルリクエストがマージされました。

今週のメインブランチの進化は、WebAssemblyクロスプラットフォーム対応、静的コンパイル最適化、メモリリーク修正に集中しています:

モジュール / メカニズムマージ日メカニズム調整の核心実務への影響
WASIP1 デュアルモード対応2026-10-29PR #64174をマージ。単一の tsc.wasm 生成物を構築。WASIコマンドモードとReactorモードの双方に対応7.0のGo移植で失われたブラウザネイティブ型検査の溝を解消。VS Code Web環境からIPC経由で直接駆動可能に。
コンパイラのデフォルト PGO 構成2026-10-28PR #64986をマージ。16組のコアベンチマークシナリオから事前生成された default.pgo データを導入ユニオン型の検査時間が11.56%短縮、VS Codeコードベースの検査が4.31%高速化し、全体スループットが向上。
コンパクト順序保持シンボルテーブル2026-10-27PR #64979およびPR #64922をマージ。tsrs の設計を取り入れ、スライスとオープンアドレス法で非順序Go mapを置換宣言のエクスポートや診断出力における偶発的な順序の乱れを根絶。シングルスレッド検査のメモリ消費を8%〜13%削減。
LSP アイドルプロジェクト破棄2026-10-29PR #64603(Issue #64463の修正)をマージ。アイドルスケジュール周期でファイルを開いていない設定プロジェクトを解放マルチエージェント並行解析時のプロジェクト常駐リークを解消。単一セッションで7GBを超えていたメモリ蓄積を防止。

公式ベンチマークスイートのデータによると、メインブランチへのPGOプロファイル導入後、代表的なプロジェクトコードベースで安定した所要時間短縮が観測されました:

ベンチマークテストケースベースライン総所要時間 (s)PGO 最適化後所要時間 (s)所要時間変動幅
Compiler-Unions0.4380.387-11.56%
strada-compiler0.5620.514-8.44%
strada-build-src10.2049.459-7.30%
class-transformer0.0310.029-6.81%
webpack1.4151.327-6.27%
vscode12.73912.190-4.31%
mui-docs4.4594.298-3.61%
sentry8.1397.932-2.55%

📝 深層レポート

公式が WASIP1 サポートをマージ:ブラウザ上でのネイティブ型検査を実現

何が起きたか: 10月29日、TypeScript公式メインブランチにPR #64174がマージされ、wasip1/wasm デュアルモード成果物 tsc.wasm がビルドされるとともに、@typescript/typescript-wasip1-wasm および typescript/wasm パッケージが提供されました。このバイナリはWASIコマンドライン実行とReactor対話モードの双方をサポートし、ホスト環境のIPCインターフェースと直結します。

なぜ重要か: 7.0のアーキテクチャがGoで書き直されたことで、純粋なJSチェッカーが持っていたブラウザ直接実行能力が一時的に失われていました。今回の実装では binaryen を用いてエクスポートテーブルと軽量WASIシムを調整し、ネイティブチェッカーをWeb環境へ復活させました。VS Code Web環境(vscode.dev)も即座に対応し、サンドボックス内でワークスペースの型検査を直接完結できるようになりました。

誰に影響するか: Web IDE開発チーム、オンラインプレイグラウンドのメンテナー、ローカルNode.js環境を持たないコンテナレス環境の開発者。

筆者コメント: WASI成果物は7.0のエッジエコシステムの空白を埋めました。しかし、Goのコンパイル成果物はGCランタイムを内包するためファーストビューのバイナリサイズが依然として数メガバイトに達し、コールドスタートの性能はRust移植版の tsrs に一歩譲ります。


Convex が Static Hermes を導入:TypeScript 関数を Wasm へ AOT コンパイルしレイテンシ半減

何が起きたか: 10月26日、ConvexのアーキテクトRoman Leventov氏が convex-wasm-compiler を公表しました。本ソリューションはStatic Hermesを活用してTypeScriptのクエリおよびミューテーション関数をWasmバイトコードへ直接AOTコンパイルし、バックエンドでTokioとWasmtimeファイバーによる並行スケジューリングを実行します。

なぜ重要か: これまでプラットフォームはV8 Isolateに依存しており、コールドスタート時にロードとウォームアップで100〜150ミリ秒を要し、大量の実行コンテキストをメモリに常駐させる必要がありました。Wasm AOTへの移行により、エンドツーエンドのクエリ・ミューテーション実行時間が50%短縮され、P99テールレイテンシは従来の3分の1に短縮、常駐実行メモリは80%削減されました。

誰に影響するか: サーバーレス(Serverless)アーキテクト、エッジコンピューティング基盤メンテナー、高並行バックエンドエンジニア。

筆者コメント: この手法は開発者にRustでの書き直しを強いることなく、静的型の制約のもとでTypeScriptの構文体験を維持しつつV8のウォームアップオーバーヘッドを根絶しました。サーバーサイドにおける重量級インタープリタ回避の新たな進化の道を示しています。


コンパイラにデフォルト PGO 構成と決定論的シンボルテーブルがマージ

何が起きたか: 10月28日から30日にかけて、公式はPR #64986とPR #64979を相次いでマージしました。前者は16のシナリオから生成された事前学習プロファイル default.pgo を導入し、後者はRust移植版 tsrs の設計を取り入れ、順序保持リニアスライスとオープンアドレス法インデックスで ast.SymbolTable を再構築しました。

なぜ重要か: これまではGo mapの走査のランダム性により、型宣言の出力や --generateTrace の型識別子がビルドごとに偶発的に変動していました。順序保持の再設計によりビルド成果物の完全な決定論的再現性が保証され、シングルスレッドのピークRSSは4%〜13%削減されました。さらにPGOにより全体で2.5%〜11.5%の実行時間短縮が達成されました。

誰に影響するか: 診断ログに依存する解析ツール開発者、超大規模Monorepoのメンテナー、CI/CDパフォーマンスエンジニア。

筆者コメント: これら2つの変更は文法への影響が一切ない低レベル最適化です。公式チームがコミュニティのRust移植プロジェクトからメモリレイアウト設計を直接取り入れたことは、外部の競争がメインラインの進化に好循環をもたらしている好例です。


Nonna 1.0.0 がリリース:リフレクション損失を排除した AOT 依存性注入

何が起きたか: 10月31日、新しいTypeScript向け依存性注入(DI)フレームワークNonnaが1.0.0正式版をリリースしました。このフレームワークは従来の reflect-metadata や実行時クラスデコレータのリフレクション走査を排除し、ビルド段階でAOTコンパイラを用いて静的に依存グラフを生成します。

なぜ重要か: TypeDIやNestJSは実験的デコレータと実行時リフレクションに依存しており、コード難読化や軽量エッジランタイムにおいて型メタデータの喪失トラブルが頻発していました。Nonnaは実行時オーバーヘッドをゼロにし、コードサイズはビジネスロジックの依存グラフのみに比例するため、Node.js、Deno、Bun、エッジ環境にネイティブ対応します。

誰に影響するか: Node.js/Bunマイクロサービス開発者、エッジ関数アーキテクト、コールドスタート速度を重視するエンジニアリングチーム。

筆者コメント: この設計はフロントエンドフレームワークが静的コンパイルへ向かった歴史をなぞっています。コンパイル時に依存関係を固定化することで起動速度を高めるだけでなく、デッドコードストリッピング(Tree-shaking)によって未参照のサービスを完全に除去できます。


🔥 コミュニティの話題

12 種類のフルスタックフレームワークを対象とした AI 生成コスト検証:フロント・バックエンド構成論争

10月28日、Nolan Lawson氏がブログ記事「The AI cost of JavaScript frameworks」を公開し、Hacker Newsで熱い議論を巻き起こしました(269 points、204 comments)。

筆者は標準的なPokémonアプリケーションの仕様を定義し、Claude Opus 5.5のエージェントに対し各フレームワークの最新バージョンを用いてサンドボックス内でプロジェクト全体を自律構築させました。測定結果には極端な開きが現れました:

フレームワークとスタック1回の生成コスト ($)生成総所要時間 (分)消費トークン数 (百万)転送 JS サイズ (KiB)ブロッキング時間 TBT (ms)
Astro2.768.24.1300
Hono + htmx2.678.64.26180
Nuxt2.829.03.858440
React Router3.8112.57.5811517
Next.js3.1410.94.9914271
Angular4.9717.29.7693103

コミュニティの議論の焦点は、アーキテクチャパラダイムと技術選定に二分されました:

  • ミニマルSSR・ネイティブHTML支持派:支持派は、開発者がこれまで複雑なSPAフルスタックフレームワークを選んできたのは自身の開発体験(DX)に動かされていた面が大きいと指摘します。AIエージェントがコードを書く時代において、フレームワークの構文の複雑さはそのままトークン費用とデバッグ時間に直結します。AstroやHono+htmxの低コストとクライアントJSほぼゼロの実績は、コンテンツ型システムにおけるサーバーサイドレンダリングの圧倒的な優位性を証明しています。
  • リッチな業務ステート・対話モデル擁護派:反対派は、このベンチマークが単方向の表示を中心としたシンプルなWebサイトしかカバーしておらず、リッチクライアントのステートマシンが直面する真の課題を反映していないと反論しています。複雑なフィールド間バリデーション、高頻度のインプレースインタラクション、オフラインデータ同期が絡む場合、htmxはサーバーサイドでの脆い文字列連結に退化してしまいます。React、Vue、Angularが提供する厳格な型システムと双方向リアクティブステートツリーこそが、エンタープライズアプリケーションを支える礎であるとの立場です。

OpenIDEA の「Rust での再設計」告知がソースコード純度の激論に発展

10月31日、プロジェクトOpenIDEAが「IntelliJ IDEAをRustでゼロから再構築」と宣言し、Hacker Newsのトレンド入りを果たしました(37 points、53 comments)。しかし開発者たちがリポジトリを検証したところ、フロントエンドにはTauriとCodeMirrorが採用され、TypeScriptのコードが全体の60%を占めており、バックエンドのRustは30%程度に過ぎないことが判明しました。

コミュニティの論点はエンジニアリングの現実性とエコシステムのポジショニングを巡って分かれました:

  • ハイブリッド構成の実利派:支持派は、現代のエディタUIのインタラクションは極めて複雑であり、成熟したTypeScriptとWebエコシステムを組み合わせることで最も効率よく柔軟なUIを構築できると主張します。重量級のファイル監視、テキストインデックス、バックグラウンド処理をRustに委託するだけで、従来のJVM特有の引っかかりを解消するには十分であり、実用的なエンジニアリングのトレードオフであると擁護しています。
  • 純粋主義・エコシステム懐疑派:反対派は、Rustの話題性をマーケティングに利用した看板倒れであると批判しています。Webviewを載せたデスクトップアプリはメモリ効率の面でネイティブアプリに及びません。さらにJVMランタイムを完全に切り離すことは、JetBrainsが20年かけて蓄積してきた高度なプラグインエコシステムを放棄することを意味し、汎用のLSPプロトコルだけではネイティブIDEが持つ深層の静的解析能力を再現することは不可能であると指摘しています。

🔭 来週の注目ポイント

  • TypeScript 7.1 RC(リリース候補)のコードフリーズ:公式チームが来週中にRelease Candidateブランチのパッケージングを開始するかどうかを追跡。非Node環境における tsc.wasm の配布仕様やVS Code Web拡張機能の正式提供スケジュールを重点確認します。
  • tsrs による公式順序保持アルゴリズムの追従進展:OxcコミュニティがメインブランチPR #64979の順序保持シンボルテーブルを取り込む動きを継続追跡し、GCなしのメモリモデル下で深くネストしたユニオン型の解決性能に与える影響を評価します。