To give you an idea of what changes I'd like to see, and possibly already hear some feedback, here are some notes I had (all about GHCi):
- Add a `:version` command. This would show either the same as `ghc --version`, or the (beginning of the) first output line of GHCi, which is "GHCi, version 9.11.20240322:
https://www.haskell.org/ghc/ :? for help". This seems like a very simple addition, and could help me learn to hack GHC, and would make sense for the next point.
- Have a flag to make GHCi not output the string "Loaded GHCi configuration from path/to/ghci.conf". This would let the `ghci.conf` file be in complete charge of what is displayed, instead of being necessarily followed by that string. I guess it would make sense to also hide the version string (see above).
- Make it possible to start/stop and observe running threads. So maybe a `:threads` (or `:set threads`, `:show threads` ?) command. Those could be user-defined, or provided by GHCi.
- Have GHCi watch files for changes (or be easily notified of changes) so it reloads them automatically (à la ghcid). I guess the main difference with ghcid is that after reloading the files, there is still an interactive prompt available (and running threads should be restarted (when using `:reload` too)).
- One of the running thread, instead of being user-supplied, could be a builtin feature of GHCi: the ability to listen for commands, just like the regular interactive prompt.
- Have GHCi be running as a background daemon, with no text interface beside a listening thread (or more than one). (This is related to
https://gitlab.haskell.org/ghc/ghc/-/issues/15461.)