stepcut / plugins

Dynamic linking and runtime evaluation of Haskell, and C, including dependency chasing and package resolution.
GNU Lesser General Public License v2.1
52 stars 17 forks source link

Try to get this package working again. #9

Closed galenhuntington closed 5 years ago

galenhuntington commented 5 years ago

Work for #8.

I do not understand the inner workings of this package at all, but I was able to fix the problems preventing it from building. The config.h issue was pretty simple: the working directory Cabal was building from changed (we may need CPP to support older versions). A few other tweaks were needed. With these changes, it kind of works.

I also looked at some forks, and found the changes at https://github.com/abarbu/plugins/commit/5094eb02c25eda0cc228d6bacdbedbddcd116311 by @abarbu, which I tried to integrate into the current version. I do not fully understand them, but they seem to help finding modules for the "load" operation.

Current status based on my limited testing:

  1. The "eval" operation seg-faults if you run your code interpreted, or compiled with -dynamic. I tried to figure this out but got nowhere. However, if compiled (statically), it seems to work.

  2. Running load from interpreted code takes about 1-2 seconds. Running it from compiled code takes about 8-9 seconds. I have found compiling with -dynamic recovers the faster behavior. Again, I don't know how this stuff works, so have no explanation or solution.

  3. I haven't worked on any of the Stack, Travis, or deprecation issues, nor tested against versions of GHC other than 8.6.4.

So this is at least a first step. If we put our heads together, perhaps we can bring this package back from the dead.