[Kde-bindings] Smoke-based versus Jambi-based bindings: what's the difference?

Gábor Lehel illissius at gmail.com
Tue Aug 25 00:42:56 UTC 2009


I was idly wondering the other day, about how some languages have Qt
bindings based on Smoke, whereas other languages have bindings derived
from QtJambi, and that which languages have which appears to depend
primarily on the principle of "who got there first".

As far as I know, the following languages have bindings based on
Smoke: Ruby, C#, PHP, Perl;
and the following languages have bindings derived from Jambi: Java,
QtScript, D, newly Python (previously/also SIP-based)

And now with Arno Rehn's Summer of Code project and the Bindings
Generator released as part of the PySide project, we even have
automated generators for both kinds of bindings.

So my question would be, purely out of curiosity, as someone who
hasn't delved into the implementation details of either: is there
anyone who has familiarity with both bindings systems who could
explain what the significant differences between them are, and perhaps
what advantages and disadvantages are entailed by choosing one over
the other? (Or perhaps one is inherently better suited for some
languages, while the other for other languages? Given that Java and C#
as well as Ruby and Python are both split neatly one to each, this
isn't obvious.)

(The extent of my knowledge is approximately that, as far as I know,
the Jambi variants first generate C bindings, and then bindings for
the C bindings for the target language, whereas Smoke looks things up
in a hash map or something, but that's about as far as it goes.)

(And obviously one big difference is that the Smoke-based bindings
also tend to bind KDE, whereas I haven't heard of any of the
Jambi-using ones doing so.)



More information about the Kde-bindings mailing list