Does this library already exist? template haskell + generate/compile C code + dlopen

The Nikola GPU programming system has a very neat, flexible approach to how you compile the EDSL-generated code. You can do it dynamically, calling nvcc at runtime, OR it can play a trick where it calls nvcc at compile time (via template haskell) and caches the result in a string literal within the TH-generated Haskell code. That is a pretty cool trick IMHO. Moreover, we can do that with any tool that generates C code or native code, as follows: At compile time, via Template Haskell: 1. call tool which creates C code 2. create temp files and call C compiler 3. load resulting object file as a bytestring and store it as a string constant Then at runtime: 1. put bytestring back into a file 2. call dlopen 3. call dlsym, get FunPtr, voila! Anyway, I was going to put together a simple library that encapsulates the above steps. Such a library could be used, for example, in making this stencil compiler project http://people.csail.mit.edu/yuantang/ available to Haskell users as well as C++ users. (The compiler is written in Haskell already anyway!) But first I thought I'd ask if this already exists. Also, is there a better way to do it? In particular, is there any way to get static linking to work, rather than the silliness with strings, tempfiles, and dlopen. Thanks, -Ryan
participants (1)
-
Ryan Newton