Here is a general design issue about the trade off between pure object oriented semantics and performance optimizations.
Strictly speaking, it should be always the receiver of a message that decides what to do with it. Because we generate optimized bytecode for commonly used operations, this rule is broken in some cases:
(any more?) (edited)(please keep editing)
These cannot be extended by objects, which is problematic when you try to extend the language, because they are really core operations.
So the issue is: is there any middle ground between OOP and byte code optimized methods?
Here is a general design issue about the trade off between pure object oriented semantics and performance optimizations.
Strictly speaking, it should be always the receiver of a message that decides what to do with it. Because we generate optimized bytecode for commonly used operations, this rule is broken in some cases:
if(any more?) (edited)(please keep editing)
These cannot be extended by objects, which is problematic when you try to extend the language, because they are really core operations.
So the issue is: is there any middle ground between OOP and byte code optimized methods?