Pyd: Wrapping too many functions in a class gives a compilererror

Pragma ericanderton at yahoo.removeme.com
Fri Jul 13 09:00:12 PDT 2007


BCS wrote:
> Reply to Pragma,
> 
>> The problem is that the overly long template symbols are needed to
>> allow the linker to do it's job: expunge redundant symbol definitions
>> while locating the correct match for a dependency.  As the properties
>> of a template instance is defined by its arguments, you really can't
>> separate the two.  Combined, you get both run-time and link-time
>> behaviors that depend heavily on the naming spec staying right where
>> it is.  Change the spec, and you allow for false matches that can
>> really screw things up.
> 
> What is the chance of a hash coalition if all (and only) over length 
> symbols are named by a hash code that is as long as /will/ fit?
> 
> Alternately (and this will only work with single run compilation or with 
> external meta data) name everything with GUIDs.
> 
> Unless I am mistaken, really the only thing that is needed is that some 
> unique name is assigned to each instance in a way that will let other 
> stuff find the same name from the same input.
>

Yep, that's the gist of it.

The problem you run into with hash codes (and GUIDs generated from a given source) is that they're not unique, so 
collisions are possible, even if they're incredibly unlikely; linking against a library could theoretically fail 
*without any recourse* if you have such a collision.  Also, they need to be reversible, such that a given hash will 
resolve to exactly one D signature.

-- 
- EricAnderton at yahoo



More information about the Digitalmars-d mailing list