Commit f49a9134 authored by Guido van Rossum's avatar Guido van Rossum

Mark treatment of binary operators for __rop__-before-__op__ as done.

Add more detail about the speed optimizations needed for __dynamic__.
The weak reference solution becomes more attractive...
parent da21c011
...@@ -4,13 +4,19 @@ Project: core implementation ...@@ -4,13 +4,19 @@ Project: core implementation
Still to do Still to do
----------- -----------
Treat all binary operators the same way as I just did for rich
comparison: in a <op> b, if isinstance(b, type(a)), try b.__rop__(a)
before trying a.__op__(b).
Make __dynamic__ the default (this requires more performance work -- Make __dynamic__ the default (this requires more performance work --
one particular test, test_descr.inherits(), is about 10x slower when one particular test, test_descr.inherits(), is about 10x slower when
__dynamic__ is 1. :-( __dynamic__ is 1. :-( There are two ways to go about the performance
work:
a) Add shortcuts to the slot_tp_XXX to recognize a PyWrapperDescr
with the correct wrap_tp_XXX function.
b) Add a list or dict of weak refs to derived classes to each dynamic
class, and trap setattr+delattr on the base class so that they
update the tp_XXX slot in each derived class when the base class
__XXX__ gets set or deleted. More work, but more gain (zero waste
in slot_tp_XXX when __XXX__ is not overridden).
Add __del__ handlers. Add __del__ handlers.
...@@ -33,6 +39,10 @@ implemented. ...@@ -33,6 +39,10 @@ implemented.
Done (mostly) Done (mostly)
------------- -------------
Treat all binary operators the same way as I just did for rich
comparison: in a <op> b, if type(a) is not type(b) and isinstance(b,
type(a)), try b.__rop__(a) before trying a.__op__(b). *** Done. ***
Fix comparisons. There's some nasty stuff here: when two types are Fix comparisons. There's some nasty stuff here: when two types are
not the same, and they're not instances, the fallback code doesn't not the same, and they're not instances, the fallback code doesn't
account for the possibility that they might be subtypes of a common account for the possibility that they might be subtypes of a common
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment