| 1 |
9/22/04: Moved code into Subversion repository. Changes now managed in SVN log. |
|---|
| 2 |
|
|---|
| 3 |
1.2.3 (9/3/04): |
|---|
| 4 |
1. Decoupled construction of stores from arena._load() into add_store(). |
|---|
| 5 |
2. Exceptions in SocketServer now get passed back to the calling app |
|---|
| 6 |
and reraised. |
|---|
| 7 |
3. Fixed nasty latent bug where engine FILTER rules weren't filtering |
|---|
| 8 |
if the set already had elements; it would just pass through every |
|---|
| 9 |
existing element without evaluating them against the filter operand. |
|---|
| 10 |
4. Wrote dejavu.analysis.py, which provides aggregation and analysis |
|---|
| 11 |
tools to dejavu applications. Moved dejavu.unit_sort to analysis.sort. |
|---|
| 12 |
5. storeado.CALL_FUNCTION failed on some logic functions. If the func |
|---|
| 13 |
object was stored in co_consts, it would error on .endswith. Now |
|---|
| 14 |
falls through, setting imperfect, so dejavu can test with the lambda. |
|---|
| 15 |
|
|---|
| 16 |
1.2.2 (8/18/04): |
|---|
| 17 |
1. Changed storage/sockets to use blocking sockets, resulting in a 40% speedup. |
|---|
| 18 |
2. Use faster CPickle if possible in sockets, storeado, engines. |
|---|
| 19 |
3. Moved on_forget calls after the unit is forgotten. All known use |
|---|
| 20 |
cases are OK with this; some needed it to update parent sums. |
|---|
| 21 |
|
|---|
| 22 |
1.2.1 (8/10/04): |
|---|
| 23 |
1. Got rid of unit.has(), which didn't fit the new unit formation process. |
|---|
| 24 |
2. Rewrote CachingProxy.sweep() to destroy temporary units (which rolls |
|---|
| 25 |
back the reserve(), in effect). |
|---|
| 26 |
3. CachingProxy.shutdown duplicated sweep_all(). |
|---|
| 27 |
4. Sandbox was setting Unit.dirty = False on recall; that should be left |
|---|
| 28 |
to SM's, since they might cache Units. |
|---|
| 29 |
5. storeado.AdapterToADOFields.coerce_datetime() didn't trap |
|---|
| 30 |
value == None (tried to add None + None). |
|---|
| 31 |
|
|---|
| 32 |
1.2.0 (8/9/04): |
|---|
| 33 |
1. Sandbox.forget had a NameError: store = self.arena.storage(cls) |
|---|
| 34 |
2. Storage.CachingProxy.sweep errored on some _recallTimes[id] |
|---|
| 35 |
3. for job, project in recall(Job, [expr, [Project, [expr]]]). |
|---|
| 36 |
Recalls associated Units in a single SM query. |
|---|
| 37 |
4. Added a special case for Expression(lambda x: x.ID == CONST), |
|---|
| 38 |
to save the database hit if it's found in the cache. |
|---|
| 39 |
5. Profiling: Changed storeado.py, storage/sockets.py to set |
|---|
| 40 |
unit._properties directly to save __set__ overhead (which isn't |
|---|
| 41 |
really needed until the unit is concrete). |
|---|
| 42 |
7. Profiling: added unit._property_types for faster lookup. |
|---|
| 43 |
8. After profiling, added _co_code_attrs to codewalk because dir() was so slow. |
|---|
| 44 |
|
|---|
| 45 |
1.2.0 RC (8/5/04): |
|---|
| 46 |
1. Did another big rework. Sandboxes now use straight dicts for caching |
|---|
| 47 |
Units, and are never shared across requests. Any sharing has been |
|---|
| 48 |
pushed into subclasses of StorageManager, for example, CachingProxy. |
|---|
| 49 |
This should also give us the framework to write multi-Unit recall. |
|---|
| 50 |
2. Given the new chainable StorageManagers, added "Load Order" and |
|---|
| 51 |
"Shutdown Order" to config options. |
|---|
| 52 |
3. Merged config "Cache" sections with "StorageManager" sections (since |
|---|
| 53 |
there are no more Cache classes). |
|---|
| 54 |
4. Changed arena.roster to be a Prism; removed RegisteredUnitClass class. |
|---|
| 55 |
|
|---|
| 56 |
1.1.3 (7/30/04): |
|---|
| 57 |
1. Dang. Forgot to have memorize() set dirty with all the refactoring. |
|---|
| 58 |
2. Times and datetimes not being saved correctly (math/parens typo). |
|---|
| 59 |
3. Times and datetimes not being retrieved correctly due to naive |
|---|
| 60 |
rounding of times, which are fractional. |
|---|
| 61 |
|
|---|
| 62 |
1.1.2 (7/29/04): |
|---|
| 63 |
1. Change storeado to drop UnitCollection tables instead of emptying them; |
|---|
| 64 |
this makes modifying the type of the ID column easier. |
|---|
| 65 |
2. engines.take_snapshot(): nontemp Engines now create temp snapshots. |
|---|
| 66 |
3. UnitEngine.on_repress removed--it isn't necessary. |
|---|
| 67 |
|
|---|
| 68 |
1.1.1 (7/28/04): |
|---|
| 69 |
1. storeado was failing on load_collection when looking up class. |
|---|
| 70 |
2. storeado wasn't retrieving currencies correctly (lost fractions). |
|---|
| 71 |
|
|---|
| 72 |
1.1.0 (7/27/04): |
|---|
| 73 |
1. storeado.load_collection had a bug setting idtype. |
|---|
| 74 |
2. Added shutdown() to Storage Managers. |
|---|
| 75 |
|
|---|
| 76 |
1.1.0 RC (7/26/04): |
|---|
| 77 |
1. distinct() functions at sandbox, cache, storage levels. |
|---|
| 78 |
2. Completely reworked caching mechanism so apps could flush caches |
|---|
| 79 |
after each request (which turns out to be most efficient for |
|---|
| 80 |
web apps, rather than having each thread serialize access to |
|---|
| 81 |
shared caches). UnitServer is gone, and Unit caches are now owned |
|---|
| 82 |
by Sandboxes, which are doled out to apps. |
|---|
| 83 |
3. Sandbox attribute of Units gets set on memorize, not init. No more |
|---|
| 84 |
Unit.memorize(); instead, it's sandbox.memorize(unit), and any |
|---|
| 85 |
custom unit code that was in overridden Unit.memorize functions |
|---|
| 86 |
now needs to be in Unit.on_memorize(). |
|---|
| 87 |
4. storeado.save_collection: Unit.ID.type was not being detected |
|---|
| 88 |
correctly; hence no save of UnitCollections. |
|---|
| 89 |
|
|---|
| 90 |
1.0.3 (7/21/04): |
|---|
| 91 |
1. Since cache wasn't being indexed anyway, went back to a plain dict. |
|---|
| 92 |
2. Added an option to storeado to create a new ADO Connection |
|---|
| 93 |
for each thread. Doesn't seem to make a difference on speed. |
|---|
| 94 |
3. Added UnitServerWeakref. |
|---|
| 95 |
4. Units were being saved on repress() even if not dirty. |
|---|
| 96 |
5. Changed default UnitServer to no cache. UnitServerCaching should |
|---|
| 97 |
be considered broken until its cache management can be made |
|---|
| 98 |
thread-safe (that is, it's far too slow because it has to |
|---|
| 99 |
synchronize every recall). |
|---|
| 100 |
6. Modified Arena to handle unit class->server mappings more |
|---|
| 101 |
statically, with a 'roster' dictionary. ALL unit classes must |
|---|
| 102 |
now be registered via arena.register() or .associate(). |
|---|
| 103 |
7. Made Unit.server an attribute, set at __init__, rather than |
|---|
| 104 |
a method. Consequently, was able to remove some of the litmus |
|---|
| 105 |
testing done in UnitServer methods--the litmus should be tested |
|---|
| 106 |
long before those calls; i.e., when arena.roster is populated. |
|---|
| 107 |
|
|---|
| 108 |
1.0.2 (7/19/04): |
|---|
| 109 |
1. Reworked recall by removing Recallers completely. Big speedup. |
|---|
| 110 |
|
|---|
| 111 |
1.0.1 (7/16/04): |
|---|
| 112 |
1. Added the COPY rule to engines.py. |
|---|
| 113 |
|
|---|
| 114 |
codewalk.py 0.3.1 (4/29/04): |
|---|
| 115 |
1. Added KeywordInspector. |
|---|
| 116 |
2. Made LambdaDecompiler use function __name__, not repr() (early |
|---|
| 117 |
binding makes e.g. datetime.date into <type datetime.date>). |
|---|
| 118 |
3. Added safe_tuple. |
|---|
| 119 |
4. Added TaintableStack.maxsize to help stack calculation. |
|---|
| 120 |
5. Forgot to call deref_cell from visit_LOAD_DEREF! D'oh! |
|---|
| 121 |
6. Put visit_ methods in alpha order. |
|---|
| 122 |
7. Added name_index to Rewriter. |
|---|
| 123 |
8. Got rid of extra args to EarlyBinder. |
|---|
| 124 |
9. Added reduction of getattr to EarlyBinder as an option. |
|---|
| 125 |
10. Combined 'ands' and 'ors' into 'targets' in LambdaDecompiler. |
|---|
| 126 |
11. Fixed parenthesis problems in LambdaDecompiler. |
|---|
| 127 |
12. Added BranchTracker class. |
|---|
| 128 |
|
|---|
| 129 |
Prior to July 2004, Dejavu was integrated with a Python application |
|---|
| 130 |
framework, which is now called "Cation". Development on the |
|---|
| 131 |
previously-integrated project began in September 2003. |
|---|