Earlier quoted context omitted.
Python 3 changed nothing * print is function * string is unicode by default Should have been clean and easy migration path # python 2 from __future__ import print_function print(u"foo") u"" # was u"" b"" # was "" But u"" was not supported in Python 3 until PEP 414 (python 3.3) [1]. That's four years [2]: Python 3.0.0 Dec. 3, 2008 Python 3.3.0 Sept. 29, 2012 Ruby string switched from codebytes to codepoints with encod…
> Python 3 changed nothing. Sorry, have you tried to maintain a C extension for both 2/3? Or a unicode heavy application? This is a silly statement, there's a reason that major packages took a decade to migrate. There are thousands of little details that are incompatible.
Nothing required big 2/3 change. Ruby and Go done it right — a series of small changes. Python 2.* had it right. The attitude of language developers was clearly stated in PEP 414 and 2to3 approach — no backward compatibility. That is nonsense, every python program had backward compatibility several minor versions deep.
Select one issue and work on it. Unicode:
# python prev
u"" # or from __future__ import unicode_literals
b""
vs # python next
u""
b"" # or from __past__ import binary_literals
Facts speak for itself, change was to big for users to overcome it, price was too high. I've lived through Ruby string changes, not a big deal.Wayland transition is nothing like Python 2/3. It is big but mostly invisible, XWayland runs X11 applications, toolkits hide implementation details, no X.Org deprecation.