4 ms·
Indeed, I believe it's impossible to statically prevent race conditions in a turing complete language. Data races can be prevented, but that's just a subset of
by zeeboo 7y ago
Indeed, I believe it's impossible to statically prevent race conditions in a turing complete language. Data races can be prevented, but that's just a subset of all possible race conditions.
- Quekid5 7y agoI think Erlang does? I don't really know Erlang, but AFAIK there's no way to share anything mutable between processes. Any data which is shared is (semantically) copied when it's sent to a different process. (Ignoring FFI, and such.) Same thing applies to the STM "subset" of Haskell -- conformance to which is statically verified by the type checker[1]. [1] There's no particular magic going on wrt. checking -- STM is a monad. It just happens to have "magic" runtime support.
- zeeboo 7y agoThose disallow data races, not race conditions. I find that this blog post explains the distinction well: https://blog.regehr.org/archives/490 https://blog.regehr.org/archives/490
- Quekid5 7y agoAh, yes. My bad... I missed that crucial detail. Still, maybe a non-TC protocol language could fulfill the criteria?