3 ms·
It's long been clear that there were fundamental implementation choices that mattered between async runtimes, but _nine_ design dimensions? Damn. I think async
by biorach 24d ago
It's long been clear that there were fundamental implementation choices that mattered between async runtimes, but _nine_ design dimensions? Damn.
I think async is deceptive in that it seems like a self-contained and relatively straightforward aspect of a language. But there are many design choices to be made and they all have wide implications.
Plus I think the implications of many of these dimensions are not fully understood and that collectively we are still trying to understand how they are playing out in implementations. Add to this the subtle nature of some of the implications plus the combinations...
I think a good comparison is lexical vs dynamic scope in programming languages. This is a design dimension that was argued over for a decade or two in the early years of programming language design. It was only as time went by, and experience gained by working with concrete implementations that it became clear that lexical scoping should be the default choice and dynamic scoping should be restricted to various niches.
- mitxela 23d agoI felt like they were reaching deep to find dimensions. Whether a task runs autonomously or needs its parent to poll it (Rust) is a dimension but whether an autonomous running task can continue after being cancelled shouldn't be - if you go into that much detail you could probably find thousands of dimensions. If it's autonomous it can do whatever it wants to.
- msteffen 23d ago> whether an autonomous running task can continue after being cancelled shouldn't be Idk, I think this might be quite important in servers, or any application where the running task might spawn subprocesses (can those continue autonomously?) or block on/use os resources
- antonvs 23d agoFull lifecycle management of async tasks is a pretty important aspect - one might even say dimension - of the problem.
- mitxela 22d agoAnd either the runtime enforces it or it doesn't and just notifies you, but I think whether it notifies you once or continually is not a relevant dimension.