目的
Phase 0-5 の Language Host(renderer → Rust プロセス)を isolated EH(Phase 6)に移動し、Rust↔EH wire に FlatBuffers を導入する。
前提作業(Phase 6 #245 から引き継ぎ): リソース分離 + アクティベート検証
Phase 6 で判明: isolated EH のプロセス起動・myExtensions・handshake は成功するが、拡張のアクティベートが silent に失敗する。原因は EH プロセス間のリソース分離(logsLocation / workspaceStorage)未対応で、workspaceStorage lock 競合が疑われる(exthost.log に3 EH が同じ lock を "Skipping acquiring lock" するログ)。
本 Phase の本来作業に先立ち、以下を完了すること(これができないと Language Host 移動もアクティベートしない):
- isolated EH の
logsLocation を LocalProcess から分離(extHostLogsPath の kind 別生成)
- isolated EH の
workspaceStorage を分離(lock 競合の解消)
- 検証基準:
vscode.typescript-language-features を coderm.languageHost.isolatedExtensions に指定し、.ts ファイルで定義ジャンプ / hover が isolated EH で動くこと(Phase 6 の未達受入基準の回収)
スコープ
- Language Host の MessagePort を renderer から isolated EH に転送
- FlatBuffers を Rust↔EH wire に導入(JSON を置き換え、フレームヘッダー [reqId(4)][len(4)] は維持)
- 新規
extHostLanguageHostService.ts(EH 側 port owner + request multiplexer)
languageFeatures.ts を renderer と EH で共有可能な位置へ移動
languageHostConfiguration.ts を renderer 侧 provider 登録から「isolated EH 有効化」に変更
前提: Phase 6.5 スパイク
Electron utilityProcess.postMessage で MessagePortMain を utilityProcess に転送できるか検証(VS Code 1.122 の Electron バージョン)。これが Phase 7 のトポロジーの前提。もし動かない場合、fallback は EH が acquirePort(responseChannel, nonce) パターンで Rust host の port を取得。
FlatBuffers スキーマ(案)
- rust/schemas/message.fbs に型付きスキーマ(DocumentOpen, HoverRequest, DefinitionResult 等)
- rust/crates/language-host-protocol/ に生成コード
- renderer/EH 側に TS 生成コード
依存
目的
Phase 0-5 の Language Host(renderer → Rust プロセス)を isolated EH(Phase 6)に移動し、Rust↔EH wire に FlatBuffers を導入する。
前提作業(Phase 6 #245 から引き継ぎ): リソース分離 + アクティベート検証
Phase 6 で判明: isolated EH のプロセス起動・myExtensions・handshake は成功するが、拡張のアクティベートが silent に失敗する。原因は EH プロセス間のリソース分離(
logsLocation/workspaceStorage)未対応で、workspaceStorage lock 競合が疑われる(exthost.log に3 EH が同じ lock を "Skipping acquiring lock" するログ)。本 Phase の本来作業に先立ち、以下を完了すること(これができないと Language Host 移動もアクティベートしない):
logsLocationを LocalProcess から分離(extHostLogsPathの kind 別生成)workspaceStorageを分離(lock 競合の解消)vscode.typescript-language-featuresをcoderm.languageHost.isolatedExtensionsに指定し、.tsファイルで定義ジャンプ / hover が isolated EH で動くこと(Phase 6 の未達受入基準の回収)スコープ
extHostLanguageHostService.ts(EH 側 port owner + request multiplexer)languageFeatures.tsを renderer と EH で共有可能な位置へ移動languageHostConfiguration.tsを renderer 侧 provider 登録から「isolated EH 有効化」に変更前提: Phase 6.5 スパイク
Electron
utilityProcess.postMessageで MessagePortMain を utilityProcess に転送できるか検証(VS Code 1.122 の Electron バージョン)。これが Phase 7 のトポロジーの前提。もし動かない場合、fallback は EH が acquirePort(responseChannel, nonce) パターンで Rust host の port を取得。FlatBuffers スキーマ(案)
依存