Programmers have been arguing for decades whether it is sharing xor mutability causes memory safety bugs:
- "It's threads!" – shouted JavaScript and Python, and JS remained single-threaded, and Python introduced the GIL.
- "It's mutability!" – screamed Haskell and Erlang, and they made (almost) everything immutable.
And then along came Rust, and said: "you are fools! You can have both sharing and mutability in the same language, as long as you isolate them from each other."