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