Avi Kivity wrote:
do you plan to allow integration of the JITted code with the calling program?
The LLVM JIT compiler will resolve functions from the host program. They must be externally defined in the embedded program.
and even inline functions from the calling program (perhaps consulting an intermediate representation of the calling program on disk)?
That is certainly possible, though perhaps difficult for a Boost library to do. I believe Clang has options for embedding a program's LLVM into its executable. Perhaps the JIT compiler is smart enough to use that if it's available. Anyway, it sounds like a good feature to consider for this library.
These capabilities would allow JIT compilation of user-provided programs that run on user-provided data sets, for example in big data applications.
Yes, it is certainly possible. I have written commercial software that does this (though not with this EDSL), so I can say with confidence that it is practical. Rather than inline functions automatically from the host program, I think it would be easier to build a runtime library to link and inline with user programs. It's easy to compile C/C++ to LLVM. -Andy