Hi

This research from VPRI may be useful: Worlds: Controlling the Scope of Side Effects and Experiments with Worlds (Alessandro Warth, Yoshiki Ohshima, Ted Kaehler, and Alan Kay)
They had a JS and Squeak version running which can be found at http://www.tinlizzie.org/~awarth/worlds/

Regards
Carlo

On 30 Jul 2018, at 15:16, Peter Uhn��k <i.uhnak@gmail.com> wrote:

Hi,

is there some library or approach how to do transactions in pharo?
And I don't mean database transactions, but directly in memory on Pharo objects... e.g.

p := Person new.

transaction do: [
    p name: 'Nobody'.
    p age: 70.
] on: Error do: [
    transaction rollback.
].

self assert: p name equals: 'Nobody'.
self assert: p age equals: 70.

transaction do: [
    p name: 'Somebody'.
    p age: 1 / 0.
] on: Error do: [
    transaction rollback.
].

self assert: p name equals: 'Nobody'.
self assert: p age equals: 70.

Any pointers appreciated.

Thanks,
Peter