... | ... | @@ -9,10 +9,28 @@ simpler and more efficient. |
|
|
|
|
|
# Current Situation
|
|
|
|
|
|
Lot's of arbitrary restrictions within GHC:
|
|
|
- One GHC "session" per process
|
|
|
- Global linker state with GHCi/TH
|
|
|
- One package being built per "session"
|
|
|
|
|
|
# Desired API
|
|
|
|
|
|
No arbitrary restrictions:
|
|
|
- Multiple sessions per process
|
|
|
- Multiple packages per session
|
|
|
- No global linker state
|
|
|
|
|
|
# Work to do
|
|
|
|
|
|
- GSOC proposal proposed focusing on multiple sessions per process
|
|
|
- Remove singleton state where appropriate
|
|
|
- Cross fingers on linker MR (!388) but use `-fexternal-interpreter` as a workaround (per-process linker state cordoned off in iserv processes).
|
|
|
- !935 modifies `HscEnv` to solve the packages per session
|
|
|
- Better UX when developing multiple *related* packages, and changes in dependencies should be propagated downstream
|
|
|
- Also needed for multi-package code execution (vs meerly using GHCi for fast type checking)
|
|
|
- !388 solves the linker problem, or at least the haskell (vs C) part of it?
|
|
|
|
|
|
# Related MRs
|
|
|
|
|
|
* https://gitlab.haskell.org/ghc/ghc/merge_requests/388 (Allow multiple linker instances)
|
... | ... | |