Remote GHCi

Simon Marlow marlowsd at gmail.com
Tue Nov 17 13:36:10 UTC 2015


CC Daniel Corin, maintainer of hint.

On 17/11/2015 11:49, Luite Stegeman wrote:
> I like this idea, and it overlaps very much with the work that still
> needs to be done for GHCJSi. I think that for Template Haskell, the
> restriction that everything has to be marshalled via Binary is not too
> problematic, although it'd require a bit of care if Richard's
> pre-proposal to expose more GHC types to TH ( #11081 ) is to be
> implemented. In particular, the API for querying the type environment
> would have to remain implementable via message passing, so we can't
> expose the full TcRn there.
>
> compileExpr / dynCompileExpr seem to get some use, perhaps mostly
> through the hint package:
>
> http://packdeps.haskellers.com/reverse/hint
>
> But I think the most common use case is just compiling and running
> Haskell expressions, without any specific need for interpreted code. The
> machinery behind hint could be reworked to have the GHC API produce a
> dynamic library for the compiled expression, which could then be loaded
> into the current process with the system linker. Or is there some reason
> that  this approach would be unusable?

I don't think that simplifies the problem, we would still be dynamically 
loading and running code in the current process, which is exactly what 
we do now.

The issue is with

   interpret :: (MonadInterpreter m, Typeable a) => String -> a -> m a

which would need to become

  interpret :: (MonadInterpreter m, Typeable a, Binary a) => String -> a 
-> m a

or else we have to keep the current single-process mechanism for this 
use case.

Cheers,
Simon



> luite
>
> On Tue, Nov 17, 2015 at 10:10 AM Simon Marlow <marlowsd at gmail.com
> <mailto:marlowsd at gmail.com>> wrote:
>
>     Hi folks - I've been thinking about changing the way we run interpreted
>     code so that it would be run in a separate process.  It turns out this
>     has quite a few benefits, and would let us kill some of the really
>     awkward hacks we have in GHC to work around problems that arise because
>     we're running interpreted code and the compiler on the same runtime.
>
>     I summarised the idea here:
>     https://ghc.haskell.org/trac/ghc/wiki/RemoteGHCi
>
>     I'd be interested to hear if anyone has any thoughts around this,
>     particularly if doing this would make your life difficult in some way.
>     Are people relying on dynCompileExpr for anything?
>
>     Cheers,
>     Simon
>


More information about the ghc-devs mailing list