Would love to know more about your experiences with doing Racket FFI. How hard were the bugs around GC to discover and workaround? What were you building in Racket?
These bugs were found while working on Herbie <http://herbie.uwplse.org/>. We use the FFI to bind to your machine's math libraries so we can properly evaluate how accurate a floating-point expression is on your machine.
https://github.com/racket/racket/issues/2702
https://github.com/racket/racket/issues/2263
There were workarounds (in Racket you can instruct the GC not to move your FFI objects) and I believe the underlying issues have been fixed.
I must add that I got immediate and comprehensive support from the core developers, who not only fixed the bug but also suggested the workaround (so I could continue to support all our target versions of Racket).
However, Python does have CLIF[1], which is the nicest solution for calling into C++ that I'm aware of.
(In general, the Boost C++ libraries are well-renowned in the C++ world.)
Yes, bare bones COM is full of boilerplate, however there are more productive ways to use it.
Many languages have FFI. Lua, PHP, etc. https://en.wikipedia.org/wiki/Foreign_function_interface
I don't understand the choice of Python for things like gluing together C programs. Seems like a performant mistake, at the very least.
By picking the performance sensitive areas of the program to code in C one can often code the rest of the program in a slower more convenient language.