Open marceltaeumel opened 4 years ago
Self-assigned. Caffeine currently implements my 2002 proxy design, in which instances of a class included in the special-objects array have different method dispatch behavior, via the VM. That design does not use >>doesNotUnderstand: at all; the proxy class can be anywhere in the class hierarchy, and there is no need for class ProtoObject at all (or class SystemDictionary, for that matter). It forwards absolutely all messages correctly, even those implemented with special bytecode or primitive support, without constraining the name of any class or method.
I never needed it to be configurable; I'll think about how that might be done.
There is object-as-method, where the VM calls
#run:with:in:
on an object that claims to be a method (inside a class' method dictionary). Then there is#doesNotUnderstand:
, where the VM handles missing keys in that dictionary.Would be nice to have configurable message sending (and lookup) as a tangible, wholesome concept....
Getting rid of
ProtoObject
could be a motivating factor to move forward. Simple, fast proxies, ... without the need for extra design patterns like the thing you always have to do when implementing your own#doesNotUnderstand:
...