haskell / haskell-language-server

Official haskell ide support via language server (LSP). Successor of ghcide & haskell-ide-engine.
Apache License 2.0
2.72k stars 368 forks source link

Speed up session loader #4446

Open soulomoon opened 2 weeks ago

soulomoon commented 2 weeks ago

Session loader is responsible for generating ghc options to load modules. Due to the limitation of hie-bios, we are loading module one by one. The session loader is overly sequentialized.

Problems:

  1. Not loading in batch with multi homeunit support. https://github.com/haskell/haskell-language-server/issues/4381
  2. Loading of a module's options is blocked by the loading in the front of the line even if the module's options in the cache.

Solutions:

  1. Batch load. https://github.com/haskell/haskell-language-server/pull/4439
  2. Decouple the session loader into reader and writer over the cache. #4445