WITH-SAVEPOINT macro is modelled after WITH-TRANSACTION. I would be glad to see it in 1.05 :)
Looks good. Is it intentional that the savepoint is rolled back after its body finishes, unless the body explicitly released/committed the savepoint? Also, inheriting from transaction-handle means that abort-transaction and commit-transaction are also valid on savepoints. Does this make sense, or should we just create a whole new class for savepoints?
Cheers, Marijn