
Clojure Concurrency Tutorial - maastaar
https://purelyfunctional.tv/guide/clojure-concurrency/
======
tombert
I get to do Clojure about ~60% of the time at work now, and it never ceases to
amaze me how much easier it is to deal with concurrency than in vanilla Java.

Futures and Promises and core.async don't allow you to totally avoid planning
out your project (I've been bitten slightly by core.async's `go` blocks
behaving differently than Go's goroutines), but they are a godsend compared to
dealing with manual mutexes and semaphores.

I still need to play with manifold; I hear that it helps deal with the IO-
heavy stuff that core.async chokes on.

~~~
devgoth
I was reading somewhere that the core.async lib has not been updated in
awhile...is this correct? (generally curious if the lib is actively updated)

~~~
didibus
It is maintained, but not actively. Like the last year there was two issues
fixed in it.

There isn't someone actively trying to enhance it or add more features to it.

So my understanding is only major issues gets addressed.

~~~
siscia
Which is a quite peculiar and reccurrent pattern in closure.

After a while libraries and tools stabilize and the community just maintains
it.

~~~
jakeinspace
Most Clojure libraries I've worked with, even the "larger" ones, are fairly
small and concise by modern standards. I wonder if this has something to do
with the lack of activity (in addition to being a small community). It feels a
bit like the Unix philosophy - lots of small/medium libraries handling
discrete problems, rather than many competing mega-frameworks. To me, this
feels like a silver lining that comes from the limitations of a smaller dev
community.

~~~
tombert
This is why I love functional programming as a whole. I feel like my code is
really terse, without little/no sacrifices in expressivity, and usually no
substantial sacrifice in performance.

------
lincpa
Data flow programming is a natural Concurrency programming. In addition,
Clojure's STM mechanism comes from RMDB's MVCC. It is the easiest, most
convenient, and most appropriate to support data flow programming.
[https://github.com/linpengcheng/PurefunctionPipelineDataflow](https://github.com/linpengcheng/PurefunctionPipelineDataflow)

