Python gets this very wrong, I would love for some assurances to be made even as a library to allow for immutability all the way into the language.
We had some client code in Python that would hand a dictionary to a plugin function, the plugin "could" make a mess of the dictionary and then throw an exception leaving the code in an invalid state unable to know how to roll back.