The man page for BridgeSupport claims that it describes API symbols which cannot be introspected at runtime.  It also says, "Only classes where additional metadata is needed are described."

It seems the additional metadata is what kind of sentinel is used for variable-argument methods and which classes are toll-free bridged to which other types.

Also, no bridgesupport files appear for the iOS or iOS simulator platforms, though there is a tool which might generate this information based on headers.

IMHO, this does not solve the method dispatch problem, but it can add a lot of value for Mac OS X.

For my purposes - which is iOS development - I want to be able to call third-party class methods and even undocumented methods (in the simulator), so I'd like to keep the dynamic dispatch.

As an optimization on iOS, it would be cool to run some stats on the most commonly called function signatures and fast path those.

-Jason


On Thu, Feb 28, 2013 at 1:46 PM, mikel evins <mevins@me.com> wrote:

On Feb 28, 2013, at 1:36 PM, Marc Feeley <feeley@iro.umontreal.ca> wrote:

>
> On 2013-02-28, at 10:59 AM, Jason Felice <jason.m.felice@gmail.com> wrote:
>
>> I've been thinking about this thread and my project, and it has re-energized me to put some time in.  I'm hoping this evening I will have that time to put in.
>>
>> Some things which I've concluded:
>>
>> 1. The dependency on libffi is fine for all platforms I know of except for iOS on the native device.  I'll investigate using libffi for most platforms and special-case ARM support.  If feasible (I expect it will be), that should remove a boat load of code.
>> 2. I'll make it not require black hole.
>>
>
> Couldn't we use Mike Evins' idea of parsing the BridgeSupport files and generating specific FFI code which covers all the available methods?  This approach would be completely portable.
>
> To avoid code bloat, we could rely on an "import" declaration which indicates which of the methods we actually need (perhaps inferred from a static program analysis).

BridgeSupport files are XML. Parsing them is easy. Do `man BridgeSupport` to find out more.