Hi,
this is to let you know that I will be committing a rather large changeset to the BKNR trunk soon which will change the object creation and initialization protocol: The MAKE-OBJECT and INITIALIZE-PERSISTENT-INSTANCE functions are now gone. Instead, persistent objects are created with MAKE-INSTANCE and initialized using INITIALIZE-INSTANCE. This simplifies the API a little, and it makes it clearer what happens during instance initialization. In addition, I have added a check to disallow any initargs to be specified for transient slots. The reason here is that it would be strange to make the initialization arguments to transient slots persistent - which would have been the consequence of allowing initargs to them. initforms to transient slots work as expected, though, and further initialization of transient slots can be done in INITIALIZE-TRANSIENT-INSTANCE methods, if required.
My original motivation to work on the object system was that we have seen some problems with ID generation and the deletion of objects in anonymous transactions. In some versions of the store, it was not possible to reference objects created in anonymous transactions from within the creating transaction, which was certainly a severe bug. I am now more confident that anonymous transactions work the way that one would expect them to work, i.e. Objects can be created, deleted and set up to reference each other within one transaction.
Cheers, Hans