Remix.run Logo
nromiun 2 days ago

So basically like gevent. I agree that is a very good concurrency model. Much better than the current asyncio mess we have.

But if you already have a runtime I don't know why it would be big deal to make them N:M threads as well. Makes managing CPU bound tasks easy as well as IO bound tasks.

Phil_Latio 2 days ago | parent [-]

Well I see 2 cases for automatic preemption:

- You are lazy and just don't care, let the runtime do it - Or you failed to realize that what you do could block

The first case is what annoys me. I think the developer should handle obvious cases manually. While the second case would be considered a bug in my model and the language should help you with that as explained earlier. If that works out, I mean to rule out mistakes for the second case, then this model is superior and more performant I think.

gpderetta 2 days ago | parent [-]

You could make the same argument for GC, yet, outside of system languages, it is generally considered a net positive. The reality is that in a large application it not easy to find all the right preemption points.

Phil_Latio 2 days ago | parent [-]

I guess you are right. Maybe I see it too much from a system programming language perspective. After all, Go is of a different kind.