Was it regular cffi or cffi's embedding API, which is used a bit differently than regular cffi, that "seems to only solve a fraction of the problem"? Was just playing around with the embedding API and was impressed.
In Python:
@ffi.def_extern()
def uwsgi_pyexample_init():
print("init called")
return 0
In C (embedded in the same plugin):
CFFI_DLLEXPORT struct uwsgi_plugin pyexample_plugin = {
.init = uwsgi_pyexample_init
};
Seems to be happily importing and exporting APIs. Interpreter starts the first time a @ffi.def_extern() function is called.
https://github.com/unbit/uwsgi/blob/f6ad0c6dfe431d91ffe365bed3105ed052bef6e4/plugins/pyexample/pyexample_plugin.py