E&S CVS Commit: pylib [Simplification-Branch] - We can rebuild it... we have the technology...

pje at eby-sarna.com pje at eby-sarna.com
Tue Jan 22 08:51:00 EST 2002


Module Name:	pylib
Committed By:	pje
Date:		Tue Jan 22 13:50:25 UTC 2002

Modified Files:
	pylib/TW [Simplification-Branch]: Strategies.py Targets.py
	pylib/TW/Database [Simplification-Branch]: DataModel.py
	pylib/TW/tests [Simplification-Branch]: Components.py

Log Message:
We can rebuild it...  we have the technology...
Better...
Stronger...
Faster...

Passes all the tests now, and is at least as fast as previous approaches.
I was hoping for a 2X speedup, but the difference is marginal.  The API is
*way* simpler, though, and there are still some optimization opportunities.
On this branch, the objects formerly known as builders only have to
implement two methods and a few metadata attributes in order to work
smashingly well.  Build order is now self-stabilizing, and it should now be
almost trivial to create AspectJ-like "advice" wrappers as build strategy
objects, that are automatically copied into subclasses and detect whether
they need to wrap a method in the build process.

Now I've got to go back and clean up the API docs and make some minor API
adjustments, because in last night's haste to make the tests work I wrote
some encapsulation-violating code.  And there's a ton of stuff to document
about this new approach.  But before all of that, I may take another whack
at making it faster by changing the way strategies are chained, and perhaps
trying to further reduce the number of objects created by the code, etc.


To view diffs of this commit, you can use the following URL(s):
http://cvs.eby-sarna.com/pylib/TW/Strategies.py.diff?r1=1.1.2.1&r2=1.1.2.2
http://cvs.eby-sarna.com/pylib/TW/Targets.py.diff?r1=1.1.2.1&r2=1.1.2.2
http://cvs.eby-sarna.com/pylib/TW/Database/DataModel.py.diff?r1=1.8.2.1&r2=1.8.2.2
http://cvs.eby-sarna.com/pylib/TW/tests/Components.py.diff?r1=1.8.2.1&r2=1.8.2.2

To generate a diff of this commit:
cvs rdiff -r1.1.2.1 -r1.1.2.2 pylib/TW/Strategies.py pylib/TW/Targets.py
cvs rdiff -r1.8.2.1 -r1.8.2.2 pylib/TW/Database/DataModel.py
cvs rdiff -r1.8.2.1 -r1.8.2.2 pylib/TW/tests/Components.py

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.





More information about the source-changes mailing list