In December 2021, the fourth Python steering council was elected, as usual with a mix of new and returning members. Python’s release-cycle circle of life kept spinning, with new iterations of both Python 3.10 and the upcoming Python 3.11 released. At the same time, the popular Python 3.6 reached end-of-life and will no longer be supported.
Amid this flurry of activity, developers from all over had some fun over the holidays by solving the annual Advent of Code puzzles.
Let’s dive into the biggest Python news from the past month!
Free Bonus: Click here to get a Python Cheat Sheet and learn the basics of Python 3, like working with data types, dictionaries, lists, and Python functions.
Python Steering Council Elections
Guido van Rossum is the creator of Python. For a long time, he was also the Benevolent Dictator For Life (BDFL) of the language, in charge of overseeing all changes that were implemented.
During the summer of 2018, Guido resigned as BDFL and asked the community to come up with a new model for governance of the language. After some discussion, the community decided that a steering council should be elected to direct the development of Python.
A new steering council is elected regularly, more or less coinciding with each release of Python. The terms are therefore often labeled by the corresponding version of Python that will be released during that term. The most recent election, for the Python 3.11 term, was held in the first half of December, with the final results announced on December 17.
Since the first steering council was elected in January 2019, the following members have served:
- Barry Warsaw (3.8, 3.9, 3.10)
- Brett Cannon (3.8, 3.9, 3.10)
- Carol Willing (3.8, 3.9, 3.10)
- Guido van Rossum (3.8)
- Nick Coghlan (3.8)
- Pablo Galindo Salgado (3.10)
- Thomas Wouters (3.9, 3.10)
- Victor Stinner (3.9)
For the Python 3.11 term election, there were ten eligible candidates. The voting period lasted from December 1 to 15, 2021. In total, sixty-seven Python core developers cast votes.
The five people receiving the most votes, and therefore the members of the new steering council, are:
- Brett Cannon
- Gregory P. Smith
- Pablo Galindo Salgado
- Petr Viktorin
- Thomas Wouters
Brett, Pablo, and Thomas are returning members of the council, while Gregory and Petr will be serving their first terms.
The steering council does the important job of guiding the community while letting everyone have their say. The discussions around deferred evaluation of annotations last spring served as a great example of how the council can lead by seeking consensus.
We at Real Python are grateful for the work the steering council does for the language and the community, and we wish the council all the best for the new term.
New Python Releases
The latest version of Python, Python 3.10, was released in October 2021. Its first maintenance release, Python 3.10.1, was made available on December 6. As usual, this minor release includes many small bug fixes and updates to the documentation and tests.
The next version of Python, Python 3.11, will be released in October 2022. However, the core developer team has already been working on new features and improvements for many months. If you’re interested in getting a preview of what’s coming, you can download and install the latest pre-release version.
Even with the official release of Python 3.11 so many months down the road, so-called alpha releases are becoming available for you to play with. On December 8, Python 3.11.0a3, the third alpha release, was made public. You can try it out to experience the improved error reporting and faster execution speed for yourself.
By their very nature, alpha releases are unstable and may contain many bugs. You should therefore never rely on Python alpha releases in production or for other important scripts. However, if you’re curious to try out the new features and improvements, consider giving the new pre-release a spin.
End-of-Life for Python 3.6
On the other side of the release cycle, you’ll find Python 3.6, which reached its end-of-life date on December 23, 2021. With Python 3.6, you got many popular new features, including the following:
- Underscores in numeric literals
- Annotation for variables
- More efficient dictionaries with guaranteed ordering of elements
- Many improvements to Python’s asynchronous features
However, Python 3.6 is now more than five years old. There won’t be any new maintenance releases of Python 3.6, even if serious security issues are discovered. While your Python 3.6 will still keep working, you should make sure to upgrade any important system that still runs Python 3.6 or older.
Due to the popularity of features like f-strings, type annotations, and async, Python 3.6 has been the minimum supported version for many libraries for years already. However, popular libraries like NumPy and Django are already listing Python 3.8 as the minimum requirement for their latest versions. Getting proper support for your dependencies is another reason to keep your Python version reasonably up to date.
PyPI Stats is a great site for getting some insight into the use of different Python packages and Python versions. You can access statistics on their web page or through the
pypistats command-line tool:
$ pypistats python_minor __all__ -m 2021-12 | category | percent | downloads | | :------- | ------: | -------------: | | 3.7 | 41.15% | 5,002,371,969 | | 3.8 | 21.56% | 2,621,179,853 | | 3.6 | 14.98% | 1,821,281,479 | | 3.9 | 7.93% | 964,495,785 | | 2.7 | 7.13% | 866,934,431 | | null | 4.03% | 490,065,646 | | 3.10 | 1.46% | 177,027,749 | | 3.5 | 1.23% | 149,063,639 | | 3.4 | 0.51% | 62,069,015 | | 3.11 | 0.00% | 536,407 | | 3.3 | 0.00% | 24,849 | | 3.2 | 0.00% | 4,131 | | 2.6 | 0.00% | 3,683 | | 2.8 | 0.00% | 123 | | 3.1 | 0.00% | 73 | | 4.11 | 0.00% | 26 | | Total | | 12,155,058,858 | Date range: 2021-12-01 - 2021-12-31
This overview shows that about 15% of all downloads on PyPI in December 2021 were for Python 3.6. In total, almost one quarter of all downloads were for Python versions that are now past end-of-life, including Python 2. See It’s Time to Stop Using Python 3.6 by Itamar Turner-Trauring for a more in-depth discussion on keeping your Python up to date.
Advent of Code
Advent of Code is an online Advent calendar where new programming puzzles are released each day from December 1 to 25. Last month, programmers from all over the world gathered in friendly competition for the seventh year in a row. Advent of Code 2021 turned out to be the most popular edition to date, with more than 200,000 participants.
Each year, a wonderful story accompanies the puzzles. This year, you needed to help save Christmas by recovering Santa’s sleigh keys, which had fallen to the ocean floor. In your search for the keys, you got to play bingo with a giant squid, marvel at the spawning capabilities of lanternfish, help a school of amphipods find their home burrows, and solve many other exciting puzzles.
Even if you missed all the excitement as each puzzle unlocked, you can still go back and solve all these puzzles, as well as earlier editions dating back to 2015. Jesse van Elteren has done an analysis comparing Advent of Code 2021 with years past.
Similarly, Jeroen Heijmans did an unofficial survey of Advent of Code participants. The survey indicates that Python is the most popular language for solving Advent of Code puzzles, with more than 40% of respondents using it.
At Real Python, we ran a private leaderboard competition for our community, which was a lot of fun. We’d like to thank Eric Wastl, the creator of Advent of Code, for all the effort he’s put into the project over the years, and congratulate him for reaching both the 500,000 total users and 10,000,000 total stars milestones in December 2021.
If you want to try the puzzles yourself, have a look at our guide. The Competitive Programmer’s Handbook is a comprehensive resource for solving these kinds of puzzles and contains a lot of information about useful techniques and algorithms.
What’s Next for Python?
2021 has been a great year for Python, with the release of Python 3.10 as one of the highlights. At Real Python, we’re looking forward to 2022 and the further development of Python 3.11, guided by the new steering council and implemented by the core development team and other volunteers from around the world.
What’s your favorite piece of Python news from December? Did we miss anything notable? Let us know in the comments, and we might feature you in next month’s Python news roundup.