Hi!
I know this is more than a year in the past. But some things take their time and I'v just now resumed my work on the Xvid plugin.
When evaluating my sugested changes, Andreas made the following comment:
The main reason for concern is that this creates a dangerous precedent for plugins. Thus far, all plugins have been "safe" in such that they were used with unforgeable object references. Allowing arbitrary pointers in *plugin* interfaces means that the whole idea of "plugins are secure, FFI is not" becomes moot.
Suddenly we need to be aware which plugins abuse what pointers and I think we should really avoid this. I have not looked at the specific reason for wanting to pass a pointer instead of an object reference but the only reason I can imagine is that the pointer was originally obtained by some FFI call. In which case I'd say "stick with FFI" instead of plugins (after all it's no harder to export a C function from a plugin than to write the named primitive).
There are no good reasons that I can think of to suddenly start using C pointers in plugins (lazyness on behalf of the plugin writer does not count) and there are many good reasons against it.
Unfortunately I do not realy understand his arguments. From the code of the plugins that come with VMMaker I can see that there are plugins that use c-pointers and do pass them to smalltalk. E.g. the Mpeg3 Plugin does it and the OsProecess plugin is another example.
I would be very glad if someone could explain to me what is allowed and what is forbidden regarding this matter.
Thanks.
Martin