On Jul 7, 2011, at 10:06 AM, <[email protected]> wrote:
This mail is a reply to mails from Charles Lepple and Petr Kubánek
dated from july 7 with the same topic.
From: Charles Lepple
"One thing with SWIG (and other binding systems) is that it is not
easy to handle errors gracefully. I can't count how many times I got
segmentation violation errors calling well-tested C code from Python
via SWIG.
I tried using ctypes, which doesn't require any recompilation of the
target library, but it has similar problems.
I am surprised. I follow wxWidgets open source project for a while,
their python wrapping is done with SWIG and they do not have so many
problems with that.
Note I have not used SWIG for python (nor python itself)
personnally, so perhaps I missed something.
The difference here is that wxWidgets is a much more complex library
than upsclient.
The big advantage to SWIG is supposed to be that you can generate
bindings to many languages once you set things up, but in reality,
each language has its nuances for passing things by
reference, and so
each set of bindings has slightly different semantics.
I never say that SWIG will generate all bindings magically without
any specific code.
The experience I had with SWIG was with Java and Lua on separated
projects. In theses cases, once some specific code was set (mostly
typemapping), adding methods and objects was not so problematic.
Granted, there will be language-specific code. What I meant by "each
set of bindings has slightly different semantics" is that the way to
call a "get variables" method in Python might look different than in
Java if Python has to return things in the return arguments, and Java
simply allows the programmer to pass a reference to a list that gets
filled in.
So in addition to differences "under the hood", you would end up with
API differences. It's not a show-stopper, but it means additional
documentation to point out how to use each language binding.
--
Charles Lepple
_______________________________________________
Nut-upsdev mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/nut-upsdev