Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

How does async/await mitigate #1? Interleaved execution is enough to give you data races; you don't need actual parallelism.


Yes, but it requires a special call site (transitively, all the way up the stack) that permits the interleaving, and so cannot sneak into existing code that might implicitly assume no interleaving.


but good old callback-based code still allows for interleaving and AFAIK JS doesn't require any callsite allocation for that.


It does not allow for interleaving. Interleaving means that state can change in the same subroutine.


What I mean is that subroutine can observe its own state being changed even after a call of a non-sync marked function if that function directly or indirectly calls into a closure closing over that subroutine state.

I.e. IMHO async offers very weak reentrancy guarantees that are better enforced via other means (rust-like lifetimes, immutability annotations, atomic contructs, etc).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: