Is this a serious question? Many things were removed in moving from Python 2 to Python 3.
We remove garbages not only between 2 and 3. We regularly remove garbages. https://docs.python.org/3/whatsnew/3.8.html#api-and-feature-removals https://docs.python.org/3/whatsnew/3.7.html#api-and-feature-removals https://docs.python.org/3/whatsnew/3.6.html#removed https://docs.python.org/3/whatsnew/3.5.html#removed We need to avoid major breakage. But we accept small breakages on every minor release. And u-prefix is major for now.
Maybe I missed something. Python used to pride itself on keeping old code working. When hash randomization was introduced, it was decided to be off by default in Python 2 because even though people shouldn't have counted on the order of dicts, they were counting on it, and turning on hash randomization would break code. So there we decided to keep things insecure because otherwise code would break, even "wrong" code.
It is not a good example because we didn't release Python 2.8. Hash randomization might be enabled by default if we released Python 2.8. Regards, -- Inada Naoki <songofacandy@gmail.com>