Different programming languages define different abstractions. As a consequence, it can be really hard to make them communicate smoothly with each other, especially when the used paradigms differ a lot.In my internship at the University of Kent, I focused on how to improve interoperability between Python (a managed and dynamically typed language) and C (a native language with static memory layouts). The state of the art way to call C code from Python requires a lot of manual wrapper code which can be hard to maintain and lead to bugs. But C (and more generally ELF) libraries should be seen in Python as regular modules, and objects should cross language boundaries without breaking VM abstractions.We will discuss how to achieve these goals by using liballocs: an extended C compilation toolchain & runtime that stores typing and allocation information about native code to provide introspection and memory instrumentation features.
Cornwallis South West,
University of Kent,