1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
The Bobo Persistent Object System release 2
2.1
Features added
- Changed the copyright to be open source!
- Added an extra argument to
SimpleDB.MultipleRevision.transaction_info to limit info to
transactions written since a given time, which should be the
time of the last pack. Undoing a transaction that was
written before the last pack *will* cause objects to be lost
from the database.
Unfortunately, it is up to the application to keep
track of pack times.
- PickleJar now has a (crude) hook to deal with problems in
importing classes during unpickling. Simply add a method to
BoboPOS.PickleJar.PickleJar::
def Broken(self, oid, (module_name, class_name)):
... Construct a Persistent object, given
the module and class names ....
theObject._p_jar=self
theObject._p_oid=oid
return theObject
Typically, the method is added *not* by modifying
the source, but by doing surgery on the class at run time.
To support this hook, classes are now pickled a bit
differently.
- Changed file import so 'seek; is no longer used. This allows
any object with a 'read' method to be used as an import source.
- Source files used tabs and spaces for indentation.
All tabs have now been removed.
Bugs Fixed
- Changes to volatile attributes, which are attributes with
names beginning with '_v_' were causing unneeded database
updates.
- Changes made in custom __setstate__ methods caused objects
to be incorrectly registered with the transaction manager.
- PickleJar PickleCache objects lacked a __len__ method
and had an ineffective minimize method.
- Changed garbage collection phase of
SimpleDB.MultipleRevision.pack to skip over dangling object
references that are caused by undoing transactions that were
written before a pack.
- Changed added logic to check for and skip over dangling object
references that are caused by undoing transactions that were
written before a pack.
- PickleDictionary changes were not being properly registered
with the transaction manager.
- Fixed bug in importing modules using built-in
__import__.
- Added 'b' flags in various open calls to make everything
work correctly on Windows.
2.0.2
Fixed bug that caused incompatability between BoboPOS and
ExtensionClass.
2.0.1
This is a bug fix release. The module, PickleCache, failed to
import getrefcount from sys. I'm surprized this wasn'tt seen
earler.
2.0
This release has a number of important features, including:
- A more robust file format that provides direct support for
grouping database records into transactions and for storing
transaction meta-data,
- A platform independent file format, with automatic conversion
from the current platform-dependent format,
- cPickle support,
- Instances of classes that do not define '__getinitargs__' no
longer have their constructors called when they are loaded from
the database.
- When loading objects with persistent subobjects, BoboPOS no
longer has to read the subobject data records to create
ghosts. This should significantly speed loading objects with
many subobjects. (This feature doesn't take effect until
to record for the container object is rewritten.)
- The PersistentMapping class has been moved to a separate module,
- Methods to store index files that speed startup.
- and many other features that have accumulated in over a
year of usage.
Bugs fixed since the alpha release:
- Circular data structures caused infinite loops. This was
due to a bug in clearing change flags that might also have
led to spurious database growth in some cases.
- A miss-spelling of __getinitargs__ caused classes that
used getinitargs to be loaded incorrectly.
- Logic to handle non-threaded environments was flawed in a way
that caused garbage collection to fail and be skipped while
packing. With this fix, packing should be much more affective.
- A bug was fixed in handling circular data structures when
exporting objects from a database.
- A new method, objectReferencesIn, was added to
SimpleDB.MultipleRevision to find all of the (ids of) objects
referenced in a database record.
"Download The Bobo Persistent Object System release 2.1":BoboPOS-2.1.tar.gz.
|