I have just posted r41Beta10 release to the "MagmaTester" project of squeaksource. The crux of this release was to add the "commitNumber" to every object buffer, which logically associates every object in the repository to its set of commit-log records, granting the potential for associated meta-information stored in the log (such as "timestamp") for "free", and brings the potential for "long transactions" that span session disconnect / reconnects.
This release also (hopefully) finalizes Magma's buffer format for future releases. In beta9, there were just 4-bits of available space on each MaObjectBuffer. To accomodate the new commitNumber, these 4-bits were used to specify an "attribute-map" for the buffer (a number between 0 and 15). Legacy maps are map index 0. The new Magma-specific map is 1, which contains a larger header to accomodate the commitNumber as well as some additional filler for possible future fields (without having to jump another map index). A total of 12 bytes per object have been added, so repository sizes will be larger on disk.
The implementation allows old buffer formats to be read without having to convert the entire repository at once. When opening a beta9 repository with this beta10 a MagmaWarning will be signaled, indicating that the repository is version 9 and will be updated to version 10, therefore the version 10 code will need to be used going forward. The udpate is instantaneous, the old version 9 *buffers* are left as-is, but any commits will replace them with version 10 buffers.
I also fixed a problem with using #commitAndBegin: in conjunction with nested transactions.
- Chris
magma@lists.squeakfoundation.org