3 ms·
Investment in STM (Software Transactional Memory) through implementation of supporting data structures, could be a more effective investment for this problem sp
by waffletower 6y ago
Investment in STM (Software Transactional Memory) through implementation of supporting data structures, could be a more effective investment for this problem space.
- fiddlerwoaroof 6y agoClojure’s STM is basically unused: from what I can tell, STM turns out to be better in theory than in practice.
- lilactown 6y agoThe problem IMHO is that there aren't a lot of problems that are particularly suited to STM. I can't think of many instances where I would use STM over CAS (e.g. an atom in Clojure); and the times I have needed something akin to STM (e.g. building an incremental dataflow engine with transactions) I wanted more control over the runtime behavior than Clojure's STM provided. Plenty of business systems need transactional guarantees and either durability or distribution (or both), which makes an external store like Postgres or Redis a ton more attractive than STM within a single process.
- breatheoften 6y agoSome manner of pluggable STM protocol to define a standard programming model on top of conflict detection would be pretty nice tho imo. Features like postgres's serialized transaction isolation -- which as a non expert I think of as basically database implemented STM -- are really flexible -- but most ecosystems programming models don't really expose this capability in a full proof and natural way. You have to work to too hard to take full advantage of the capability ...
- astrange 6y agoI don't think image computing is a good idea and so I don't think complicated memory updating abstractions like this are necessary. The other problem is that Intel tried to add STM to their hardware, but it has so many bugs that it's been disabled in multiple CPU generations. I only know one program that uses it and it's a PS3 emulator, not a database.