4 ms·
did the situation change since 2008?
by systems 9y ago
did the situation change since 2008?
- mac01021 9y agoAll the stuff discussed in this talk is still basically the same. A few years ago they added the "core.async" package that provides something like the channel-based, CSP concurrency model that you find in the Go programming language. For many problems, this model is a better fit, but all the original concurrency stuff is there too.
- fulafel 9y agoSTM is not sold as a headline concurrency feature anymore, apparently people prefer more traditional ways.
- Zak 9y agoI think the main thing is that the use case of modifying multiple references at the same time where it is critical that all changes take place at once is less common in idiomatic Clojure than people might have expected.
- brandonbloom 9y agoYeah, this is exactly it. Atoms were added as a cheaper alternative to Refs for when you didn't need transactions, just compare-and-swap. Turns out that atoms work well enough for even huge single-JVM systems, and are much simpler.
- Scarbutt 9y agoSince most applications use a database, is simpler to keep transactions only at one place, one source of truth.
- platz 9y agofor 'business logic', sure, but things like updating/invalidating application caches, or other operations intrinsic to the application (the "non-functional requirements") that can't be isolated to the database.
- juskrey 9y agoThey have added reducers with parallel folding, core.async and later added transducers and direct support of them to core.async too.
- tosh 9y agoPerhaps not directly related to 'Concurrency' but iirc ClojureScript got released in 2011 https://clojurescript.org https://clojurescript.org https://www.youtube.com/watch?v=tVooR-dF_Ag https://www.youtube.com/watch?v=tVooR-dF_Ag (ClojureScript Release)
- Blackthorn 9y agoNot to this, but some things got added to the language: * core.async * pulsar Also a lot of the stuff just didn't turn out to be as common as anticipated when idiomatic Clojure is used.