I’m not exactly sure what you mean… Or rather, I understand what you mean with Rust, and agree there. It’s borrow checker isn’t actually as neat as people think. I mean, sure, it makes you think about ownership and lifetimes, but you still have to think about ownership and lifetimes.
As for python, I’m curious what py3k prevented you from doing. I do think they badly handled the move, politically, and they never delivered on a working 2to3, but I never felt artificially constrained by py3k, even before 3.4 (which was the first version with something close to feature parity with 2.x).
Actually, come to think of it, there was one thing that still bothers me… When python was new (1.3 time frame), there was a lot of pushback about it being a whitespace sensitive language, since that can lead to off-by-one errors (\n \t
instead of \n\t
). Its defenders argued that it used an intelligent whitespace parsing algorithm, the same one used by text editors, so that if your code looks right, it’ll run right. In practice, that required setting a #tab-width
comment at the top of the file to match your editor (or use 8-character tabs), but all in all it worked great: as promised, no off by one errors. They dropped it with py3k, for no good reason. Instead, it Exceptions if it goes to parse a source code file with mixed tabs and spaces (within the same indented block, mixing them within a file is still fine, for some reason…). This is all well and good if you have a decent editor, but if you are stuck using a bad editor, relying on proper tab-stop behaviour, and invariably in a hurry, it still freaking sucks.