Re: Introspection API
Owen Taylor <[email protected]> Fri, 25 Feb 2005 14:06:55 -0500
| Newsgroups | gmane.comp.gnome.gtk+.devel.general,gmane.comp.gnome.language-bindings |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 2005-02-25 at 09:51 -0800, Dave Benson wrote: > On Fri, Feb 25, 2005 at 12:12:30PM -0500, John Ehresman wrote: > > Dave Benson wrote: > > >a small c program to generate GValue marshallers from the metadata > > >seems pretty straightforward. such marshallers should probably > > >be compiled at the same time as the metadata... i think. > > > > Yes, but what's the advantage of using compiled marshallers over using > > libffi? Are you concerned about portability? I wonder if mozilla uses > > libffi or if they have their own mechanism for foreign calls. Mozilla has it's own mechanism (though I think there is a version of it that uses libffi as the backend). > yeah, portability. > > it's not very encouraging that everyone seems to adopt > their own local copy of libffi. it means trying out > glib on new platforms is going to be a pain, subject to > bugs, etc. by contrast, generating marshallers is totally > portable, and we do it anyways, i believe, for signals. I'd love to get rid of marshaler generation for signals ... something we could make optional if we had a libffi dependency or equivalent. Dynamic marshaling code is available for an extremely wide range of platforms and new architectures don't pop up every day... and I think our emphasis has to be on making GTK+ work well on the architectures where people actually run it. The amount of marshalers generated for something the size of GTK+ would be non-trivial. I'd guess somewhere in the 200k-500k of object code range. And for demarshalers (calling from C into non-native code) it gets worse, since the main ways I know of doing that require multiple copies of each demarshaler. (How do you tell if widget_class->expose_event or widget_class->button_press_event was called if they are the same demarshaler?) Regards, Owen