AutomaticComponentToolkit icon indicating copy to clipboard operation
AutomaticComponentToolkit copied to clipboard

Clarify the meaning of "dynamic" for bindings

Open robinchrist opened this issue 1 year ago • 1 comments

Just my experiences as a first time user of this library while I'm digging through the library itself, the tutorial, etc:

Currently, it is not obvious what the difference between C++ and C++ Dynamic bindings is (Same for C and C dynamic). My first idea was that it could be related to the internal usage of dynamic_cast or something like that, but it seems like this is not the case.

Am I correct assuming that dynamic refers to the way the library is loaded (dynamically or statically linked)? The C++ dynamic bindings will have all the dlsym bits in it, whereas the normal C++ binding assumes static linking?

If that is correct, I propose the following changes:

  • Add a new Linking type column in the Feature Matrix: Bindings table that (either dynamic or static)
  • Clarify that most of the bindings are implicitly dynamic - I think it's a bit confusing that C and C++ have variants without the suffix (static linking) and with the dynamic suffix (dynamic linking), whereas the other language like Python or Pascal are just implicitly dynamic without the suffix.

If you're not using the library for the first time this may seem obvious, however to me as a first time library user it was not.

robinchrist avatar Dec 05 '24 18:12 robinchrist

Hi @robinchrist, Yes, you are correct.

"Dynamic" refers to libraries that are loaded at runtime (dlopen/dlsym). On the other hand, those without the Dynamic suffix are dynamically linked at load time.

The C/C++ Bindings with Dynamic suffix represent run-time dynamic loading whereas the one without Dynamic suffix represents load-time dynamic loading. Other Bindings are dynamically loaded at runtime.

Adding a new column with load-time dynamic linking and run-time dynamic linking is not preferred.

gangatp avatar Feb 13 '25 09:02 gangatp