haskell / haskell-ide-engine

The engine for haskell ide-integration. Not an IDE
BSD 3-Clause "New" or "Revised" License
2.38k stars 211 forks source link

README could use some information about compilation #1637

Open flip111 opened 4 years ago

flip111 commented 4 years ago

I use visual studio code, i noticed in the debug window that a lot of stuff was being compiled by hie. The readme could mention that things needs to be compiled, that it takes some time, that it uses some disk space and where the compiled artifacts are being stored. Is this compilation sandboxed or does it interfere with regular project compilation ?

hie_compile_log.txt

There is probably some noise in that logfile from another project that was open in another window.

fendor commented 4 years ago

FYI, it uses either stack snapshots or the global cabal store, and unless there is a bug in either of them, it does not interfere with any other project.

jneira commented 4 years ago

Well, it still changes the local .stack-work or dist-newstyle and potentially could change the previous manual build config. So the builds triggered by hie are not sandboxed and could affect local build dirs like a manual build. @flip111 do you think README should be updated with that info?

flip111 commented 4 years ago

I think it should because it raises a lot of questions for me.

  1. When compilation starts? Once? Always? Only when the project was not compiled before?
  2. Which compilation flags are used?

Especially when you want to use profiling in ghc, it's already a difficult situation because stack might not always rebuild when some flags are changed (there are discussions about this in stack github).

Now it's not clear how to compilation by hie can affect normal compilation of your project. If there are no effects the description in the readme can be minimal of course.

Further question is: why is compilation necessary ?


Maybe near, or instead, of this text from the readme

HIE will attempt to automatically detect your project configuration and set up the environment for GHC.

(what does "set up the environment" mean here??)

Something like this can be written:

HIE will attempt to automatically detect your project configuration and compile your program once to get all the type information. If you want to build the project with some specific flags you must do this before hie reads your project / stack clear and rebuild with the correct flags after / pass the flags into the hie configuration. If you have not build your project before manually first time usage of hie can be slow because the entire project needs to be compiled.

All things in highlight i don't know what it should be, but can be a suggestion for how to expand a little bit on this topic.

jneira commented 4 years ago

Ok, it is clear that we should add it to README to avoid unpleasant surprises, thanks for pointing it out!