Comment by cmrdporcupine

3 years ago

Thanks, skimmed a bit of the first half but will get into it more after my work day.

So, going through this a bit more on lunch break; I think the root of some of the disillusionment faced here -- and probably the lack of success in STM at this level generally -- is that they tried to do too much.

I don't necessarily want the whole memory model of the runtime or VM to offer transactions necessarily. What I think is a good idea is to offer an overall framework -- within which higher level applications can be written -- that brings transactional semantics with it. Basically a set of collections and data transformation and communications and process coordination libraries that work in harmony with an underlying MVCC storage layer -- rather than baking a transactional atomic keyword down to the syntactical level of the language or the memory model of the VM/runtime.

Put another way: I wouldn't necessarily give users the STM facilities. I would use lower level STM facilities to construct a higher level toolkit, and only expose that. Basically an RDBMS in-process -- without the SQL language boundary -- to be frank.

Yes, users could escape it easily, and start doing inconsistent things. But that's on them, same as any other framework.

Provide the pattern and tools in a nice coherent box and don't try to take over the whole world.

  • > Yes, users could escape it easily, and start doing inconsistent things. But that's on them, same as any other framework.

    We're already there! You don't need an STM framework in order to leave consistency up to the user.