One of the problems we've had for a long time with wrapped bindings is
the mismatch of threading models. For example, a Ruby program using an
extension module written in C/C++ will hang if a call into the extension
blocks. This is because the extension uses pthreads and the host
program uses "greenthreads" (i.e. some layered threading mechanism in
the scripting language). This is also an issue for Python (and probably
every other scripting language).
The proper solution for proton/messenger (which necessarily has a few
blocking calls) is to provide (or allow the developer to provide) a
driver written in the scripting language using the same threading
library that their program uses.
The proton code structure allows for such a strategy, but the packaging
does not. I think that the proton project should make the necessary
adjustments to encourage developers to contribute "native" drivers for
Ruby, Python-eventlet, etc.
I'm interested in others' thoughts on this and what would be necessary
to make this happen.
- Using script-native drivers for Proton messenger bindings Ted Ross