Hi @all,

[ shortened: ]

 Recommendation: Deprecate property support in PMCs. 

 Allison:  Would it help if we call them "static attributes" and "dynamic
           attributes"?

No. Attributes and properties are almost orthogonal concepts. 

Properties are per PMC (or object, as that's a PMC too) add-on Hash PMCs that 
store some kind of information for that very PMC. Typically a total overkill, 
as in all usage I saw, just one item of information in the hash was stored. 
E.g. the id in ealier TGEs.

Properties are never inherited, they belong to just that one PMC. Therefore a 
much more efficient implementation of current properties is to use one 
AddrRegistry hash (which is keyed by the PMCs address) and store this 
information there. 

E.g. 10000 PMCs with props:
10000 additional Hash PMCs with one item
with AddrRegistry:
1 Hash with 10000 items

The other nasty "feature" of properties is: as they *might sometimes* be used 
at runtime with any PMC, we still have to provide some storage place for the 
property for *all* the innocent other PMCs, which don't never ever use 
properties. This is a serious drawback for a good PMC and interpreter design.

Attributes are different.

A runtime attribute would still be inherited by a subclass, if the subclass is 
created thereafter, but that might depend on the object model. If some object 
model, like Perl6' needs it, it can easily reserve an extra attribute slot 
for gathering runtime attributes in an addon hash. This is according to 
audreyt at the last hackathon at my place re object model. 

Perl 6 'properties' are anon subclasses and have nothing in common with 
current parrot properties.

Or IOW (best summarized by chromatic) "I don't remember what problem these try 
to solve."

Thanks,
leo

Reply via email to