There is an ongoing craze around immutability and functional programming, and while I appreciate the value they do provide, I start to think that some people are starting to get overboard with this. Others are working on new implementation of existing paradigms.
Joe Duffy did express my point of view better than I ever would, so I will just quote him:
I had grown frustrated that our programming languages didn’t help us write correct concurrent code. Instead, these systems simply keep offering more and more unsafe building blocks and synchronization primitives. Although I admit to contributing to the mess, it continues to this day. How many flavors of tasks and blocking queues does the world need? I was also dismayed by the oft-cited “functional programming cures everything” mantra, which clearly isn’t true: most languages, Haskell aside, still offer mutability. And few of them track said mutability in a way that is visible to the type system (Haskell, again, being the exception). This means that races are still omnipresent, and thus concurrent programs expensive and error prone to write and maintain.