Skip to content

Phase 9+: tsserver を段階的に Rust で置き換え(長期ロードマップ) #248

Description

@j4rviscmd

目的

tsserver(TypeScript コンパイラ)の言語機能を段階的に Rust Language Host で置き換え、最終的に tsserver を廃止する。

背景

Phase 0-5 で tree-sitter ベースの構文機能(documentSymbol/foldingRange/hover/definition/references/documentHighlights)を実装済み。ただし tree-sitter は構文解析のみで、型推論・型チェック(tsserver の中核)は未実装。

スコープ(数年規模)

Phase 9: 型注釈の活用

  • hover の型表示(変数の型_annotation から型を抽出)
  • completion の基礎(スコープ内の宣言を候補)
  • signature help

Phase 10: tsserver 置き換え(opt-in)

  • 新設定 coderm.languageHost.tsserverReplacement(default off)
  • 各 language feature を feature flag(coderm.languageHost.tsFeatures.<feature>)で段階的に Rust に切り替え
  • tsserver は未対応機能のフォールバックとして残存

Phase 11: EH kind 分割の最適化(オプション)

  • Phase 7-10 で Language Host が負荷を担うことを確認後、RPCProtocol を Coderm wire プロトコルに置き換え
  • 拡張 API を Rust で再実装する可能性も検討

技術的課題

  • TypeScript の型システム完全実装は tsserver と同等の規模(TypeScript コンパイラ全体)
  • 段階的アプローチ: tree-sitter(構文)→ 型注釈(意味の一部)→ 型推論(完全な意味解析)
  • cross-file 解析(project-aware、workspace file graph)が必要

依存

  • Phase 6, 7, 8

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions