Skip to content

WIP: Move I/O manager benchmarks into the GHC tree

Alina Banerjee requested to merge alinab/ghc:alinab-issue-8045 into master

[Apologies for this severe delay. In the future, I'll be mindful of assigning issues to myself if I am not able to devote the time needed.]

Input/review on the following points are needed:

  1. I have moved the benchmarks files to $TOPDIR/utils/benchmarks but if this should be renamed, I will do so.
  2. The network library has been added to base (not as a submodule, for now). I wanted to see how easy it would be to add it directly to the codebase and use it. If this is unecessary i.e it should be considered an extra package, I can change it. Otherwise, I can initiate a discussion with the core libraries committee.
  3. Relevant event library modules have been exposed
  4. I have added a .cabal file as well as updated the Makefile. Both of them assume that necessary packages are installed (network, mtl, attoparsec, bytestring-show, parsec) locally and for that, I have used plan B described at https://gitlab.haskell.org/ghc/ghc/-/wikis/debugging/installing-packages-inplace.
  5. There are two places in particular where corrections/sugesstions would be welcome:
    • In EventSocket.hs, the connect function does not check if the socket is currently unconnected or not bound as the (MkSocket _ _ _ _ socketStatus) constructor no longer exists (https://github.com/haskell/network/issues/296)
    • In Signal.hs, the handler function requires the emState record field for EventManager type to be exposed. I am not sure if the updated code for the handler function is correct.
  6. I have run hlint on everything and that the program executables run as outlined in their configuration options etc. The only pain point is having to modify and install packages locally as described in step 4.

Merge request reports