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.


Reply via email to