>>50
That raises the question of whether or not they did in fact fix them. I have several complaints (nonlocal/global, poor support for functional programming, everything is public) that I don't think guido will ever fix and I've been looking for a replacement because of that.
There are even more critical problems than this, both with the reference implementation and with the language design. Honestly they fixed almost nothing in the change to 3.0.
For example memory management is still reference counted. This is why even Google can't make it faster, because of the GIL. Jython is a rewrite to fix this.
Another problem is that the VM stack still grows on the native stack. It's still possible to crash the interpreter in a stack overflow. Stackless is a rewrite to fix this.
Of course since Python's massive library only really works with the reference implementation, these rewrites are fairly useless.
The language design itself also has more problems. The ones you mentioned are pretty critical; in particular how everything is public, and it internally renames fields based on naming convention (double underscore??) to prevent name clashes in inheritance trees.
I have a big problem with the inconsistent method syntax. For example, you implement x.__len__() to support calling len(x). Why don't you just implement x.len(), and call x.len(), like every other class method?
All this being said, Python is still the language I choose for almost any project that isn't performance-bound. You learn to live with its faults I guess.
I've never used Lua. Can someone explain the main differences between Lua tables and Python dicts?