I see that one commenter raises the subject of real-time systems, and indeed we do not aim to produce code for real-time systems in Haskell.
Moreover:
In short, implementing M:N threading is basically like implementing your own OS in the runtime,
If you need to go beyond what OSes provide to you today, that’s entirely acceptable. After all, we don’t really use the C stack to store the parameters to our functions (it’s a bit of heap).
The Erlang model has shown its disadvantages and (huge) advantages, especially combined with message passing, and individual heaps per actors.
Disclaimer: Personally I’m a great fan of Erlang and hold a lot of affection from my time using it in production. Perhaps I cannot see the fundamental flaws of this model that are poisoning its users. But enlightenment welcome.