Python 3¶
At the instigation of Guido van Rossum (the Benevolent Dictator for Life for the Python language specification and the CPython reference implementation), the Python ecosystem is currently undertaking a transition from the Python 2 series to the infamously incompatible Python 3 series.
This page collects a series of essays I have written covering various aspects of the Python 3 transition (as well as Python 3 features in general).
- Python 3 Q & A
- TL;DR Version
- Why was Python 3 made incompatible with Python 2?
- What actually changed in the text model between Python 2 and Python 3?
- Why not just assume UTF-8 and avoid having to decode at system boundaries?
- OK, that explains Unicode, but what about all the other incompatible changes?
- What other notable changes in Python 3 depend on the text model change?
- When is the last release of Python 2.7 coming out?
- What are (or were) some of the key dates in the Python 3 transition?
- When did Python 3 become the obvious choice for new projects?
- When can we expect Python 2 to be a purely historical relic?
- Why have Linux distributions taken so long to migrate away from Python 2?
- Why did Apple decide not to ship Python 3?
- But uptake is so slow, doesn’t this mean Python 3 is failing as a platform?
- Is the ultimate success of Python 3 as a platform assured?
- Python 3 is meant to make Unicode easier, so why is <X> harder?
- Python 3 is meant to fix Unicode, so why is <X> still broken?
- Is Python 3 a better language to teach beginning programmers?
- Out of the box, why is Python 3 better than Python 2?
- Is Python 3 more convenient than Python 2 in every respect?
- What’s up with WSGI in Python 3?
- What’s up with POSIX systems in Python 3?
- What changes in Python 3 have been made specifically to simplify migration?
- What other changes have occurred that simplify migration?
- What future changes in Python 3 are expected to further simplify migration?
- Didn’t you strand the major alternative implementations on Python 2?
- Aren’t you abandoning Python 2 users?
- What would it take to make you change your minds about the current plan?
- Wouldn’t a Python 2.8 release help ease the transition?
- Aren’t you concerned Python 2 users will abandon Python over this?
- Doesn’t this make Python look like an immature and unstable platform?
- Why wasn’t I consulted?
- But <name> says Python 3 was a waste of time/didn’t help/made things worse!
- But, but, surely fixing the GIL is more important than fixing Unicode…
- Well, why not just add JIT compilation, then?
- What about <insert other shiny new feature here>?
- Efficiently Exploiting Multiple Cores with Python
- Why is using a Global Interpreter Lock (GIL) a problem?
- What alternative approaches are available?
- Why hasn’t resolving this been a priority for the core development team?
- Why isn’t “just remove the GIL” the obvious answer?
- What are the key problems with fine-grained locking as an answer?
- What does the future look like for exploitation of multiple cores in Python?
- Python 3 and ASCII Compatible Binary Protocols
- Processing Text Files in Python 3
- Python, Enumerations and “Good Enough”