Use SWIG
Refusing to use malloc has disavantages : it is very difficult to make a structure of dynamic types. I should use malloc in every case. If there is a need for a custom allocator, we will be able to refactor the code to use that instead.
If we use malloc, we may be able to use swig to generate the language bindings. As I know from a previous experience, SWIG does not like arrays; maybe we should have our own managed array classes.