Tuesday, September 2, 2008

Link Dump: Plugins and DLLs

MOSREF requires the creation of statically linked "monolithic" binaries for Drones. Wasp, prior to 0.3, supported loading plugins written in C by bundling the entire virtual machine into a shared object file. The following is a list of links I have been looking at, trying to find a way to support plugins while keeping the virtual machine itself in the executable: The criteria for a successful solution:
  • Permits a plugin subsystem to call routines in the virtual machine. (Blocks naked use of DLLs and LoadLibrary / GetProcAddress.)
  • Shares data structures in the virtual machine process with all plugins.
  • Does not bloat the virtual machine.
  • Does not require special effort by plugin authors. (Disqualifying passing a structure of API function pointers to the plugin.)
  • Does not tightly couple the plugin to the binary. (Disqualifying various --output-implib tricks.)
  • Does not excessively complicate the build process. (Disqualifying LibTool.)