[Python-checkins] CVS: python/dist/src PLAN.txt,1.12,1.13

Guido van Rossum gvanrossum@users.sourceforge.net
Thu, 04 Oct 2001 12:46:08 -0700


Update of /cvsroot/python/python/dist/src
In directory usw-pr-cvs1:/tmp/cvs-serv13410

Modified Files:
	PLAN.txt 
Log Message:
Make new classes dynamic by default.

Index: PLAN.txt
===================================================================
RCS file: /cvsroot/python/python/dist/src/PLAN.txt,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** PLAN.txt	2001/10/03 03:00:56	1.12
--- PLAN.txt	2001/10/04 19:46:06	1.13
***************
*** 5,23 ****
  -----------
  
! Make __dynamic__ the default (this requires more performance work --
! one particular test, test_descr.inherits(), is about 10x slower when
! __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.
  
  Allow assignment to __bases__ and __dict__?
--- 5,20 ----
  -----------
  
! More performance work -- one particular test, test_descr.inherits(),
! is still about 50% slower with dynamic classes. :-(  The approach of
! choice would be:
  
!     Add a list 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).  This is currently
!     awaiting Fred turning the weak ref API into a standard object API.
  
! Add __del__ handlers?
  
  Allow assignment to __bases__ and __dict__?
***************
*** 39,42 ****
--- 36,42 ----
  Done (mostly)
  -------------
+ 
+ Make __dynamic__ the default.  *** done (but more performance work
+ needs to be done). ***
  
  Treat all binary operators the same way as I just did for rich