[GHC] #8400: Migrate the RTS to use libuv (or libev, or libevent)

GHC ghc-devs
Fri Oct 4 08:28:40 UTC 2013


#8400: Migrate the RTS to use libuv (or libev, or libevent)
----------------------------+----------------------------------------------
        Reporter:  schyler  |            Owner:  simonmar
            Type:  feature  |           Status:  new
  request                   |        Milestone:
        Priority:  normal   |          Version:
       Component:  Runtime  |         Keywords:
  System                    |     Architecture:  Unknown/Multiple
      Resolution:           |       Difficulty:  Project (more than a week)
Operating System:           |       Blocked By:
  Unknown/Multiple          |  Related Tickets:  635, 7353
 Type of failure:           |
  None/Unknown              |
       Test Case:           |
        Blocking:           |
----------------------------+----------------------------------------------

Comment (by simonmar):

 Agree with everything that @thoughtpolice said.  Also, I'm not generally
 swayed by arguments of the form "we should use library X because it is
 actively maintained and does job Y that we already do", because external
 dependencies have their own costs - let's not forget we've had problems
 with all of gmp, libffi and LLVM.  There are benefits to being in control
 of your own code, and when the functionality already exists and works (as
 in the case of the rts code) it's an unforced change.

 These things are never black and white, and we have to weigh up any
 benefits we might get against the costs of incurring an external
 dependency.  I just want to point out that we shouldn't add new
 dependencies without thinking very carefully.

 @tibbe: I suggest first identifying the problem that would be solved by
 moving the I/O manager into the RTS.  Identify where we have extra
 latency, and explain why it can't be solved in Haskell.  Moving the I/O
 manager wholesale into the RTS is a huge job, because you don't get to
 take advantage of nice things like atomicModifyIORef and immutable data
 structures, and the interaction with the scheduler is likely to be very
 tricky indeed.  There would need to be significant payoff.  Adding small
 hooks is a better approach, if we can find out what hooks would help -
 e.g. per-thread state is something we don't have a good way to do right
 now, and would be a generally useful thing to add.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8400#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list