| > I've asked merely to clarify whether your issue is with Python's asyncio (e.g. Python got it wrong) or with the tradeoffs inherent in async io APIs in general (regardless of Python) Both, but the latter part is contextual. > I, for one, am fine with async APIs in JS Correct me if you think I'm wrong, but JS in its native environment (the browser) never had access to the OS thread and process scheduler, so the concept of what could be done was limited from the start. If all you're allowed to have is a hammer, it's possible to make a fine hammer. But 1. Python has never had that constraint 2. Python's asyncio in particular is a shitty hammer that only works on special asyncio-branded nails and 3. Python already had a better futures interface for what asyncio provides and more before asyncio was added. The combination of all three of those is just kinda galling in a way that it isn't for JS because the contextual landscape is different. |
Which is neither here, nor there. Python had another big constraint, the GIL. So threads there couldn't go so far as async would. But even environments with threads (C#, Rust) also got big into async in the same style.
>2. Python's asyncio in particular is a shitty hammer that only works on special asyncio-branded nails
Well, that's also the case with C#, JS, and others with similar async style (aka "colored functions"). And that's not exactly a problem, as much as a design constraint.