Changes between Version 2 and Version 3 of Ticket #15461


Ignore:
Timestamp:
Jul 31, 2018 6:55:14 PM (17 months ago)
Author:
bgamari
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #15461 – Description

    v2 v3  
    33Ultimately the solution seems fairly clear:
    44
    5  1. allow GHCi to expose multiple REPL interfaces (e.g. such that a user could have multiple textual REPLs open, all served by the same GHCi session)
    6  2. add a machine-readable request protocol to GHCi, giving tooling users a way to use GHCi's functionality without parsing human-readable output
     51. allow GHCi to expose multiple REPL interfaces (e.g. such that a user could have multiple textual REPLs open, all served by the same GHCi session)
     62. add a machine-readable request protocol to GHCi, giving tooling users a way to use GHCi's functionality without parsing human-readable output
    77
    88(1) should be fairly straightforward to implement. There are a few decisions to be made, which will largely be driven by user needs:
    99
    10  * what sort of channels do we support (e.g. TCP/IP sockets, Unix domain sockets, only pipes?)
    11  * how does one open a new channel?
     10* what sort of channels do we support (e.g. TCP/IP sockets, Unix domain sockets, only pipes?)
     11* how does one open a new channel?
     12* are the `std{in,out,err}` handles redirected? For instance, if multiple channels request execution of `putStrLn "hello world"` who gets the output? There are three options,
     13    a. neither requester gets any output
     14    b. both channels get two "hello world" messages
     15    c. each channel gets precisely the output from its evaluation
     16 
     17 (c) would be quite hard to do although an approximation could potentially be accomplished by hacking `GHC.IO.Handle.FD`.
    1218
    1319(2) on the other hand requires some design work (e.g. what does the wire protocol look like?) and a fair bit of refactoring (to expose the existing commands in a machine-readable manner).
    1420
    15 Users of this might include,
     21== Possible users ==
     22Users of this facility might include,
    1623
    1724 * [[https://github.com/haskell/haskell-mode/|haskell-mode]]