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.