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.)