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