Python 3.14 was released today and I caught myself reading the Python 3.14 release notes so figured I’d type up what changes caught my eye.

§Installing Python

There are probably better ways to do this. I opted to manually build and install Python 3.14:

./configure --prefix=$HOME/python3.14 && make -j && make install
export PATH="$HOME/python3.14/bin:$PATH"
which python3  # Should print out a path equivalent to $HOME/python3.14/bin/python3

§python -m json

This is a nice way to pretty-print JSON (both indentation and color). Previously, one can use python -m json.tool. Now one can simply invoke python -m json. Personally, I missed the release of python -m json.tool, so this release note item helped introduce me to this built-in command line utility. Did you know about python -m json.tool?

§Multiple performance improvements

The following areas saw significant performance improvements:

  • uuid module
  • garbage collection
  • import time of a over 20 modules has been improved.
  • asyncio subsystem performance improvements

§compression.zstd

Python 3.14 now has ZSTD compression support built-in! ZSTD has pretty great characteristics for general use. One less pypi package to grab — hooray!

§Attach pdb to a running Python process

Have a run away Python process? Attach pdb to it! In the screenshot, I’ve attached pdb to a toy roguelike that I created last year.

§Simplified Exception specifications with PEP 758

Formerly you’d catch multiple exception types using a tuple except (ConnectionRefusedError, TimeoutError):. Now one can drop the parenthesis. It looks cleaner and less busy: except ConnectionRefusedError, TimeoutError:.

§Color by default in more places!

Color now appears in argparse generated help messages. In the following picture, check out python -m http.server’s argparse message.

Oh, and python -m json prints in color by default now! (See the picture in the previous section for its colorfulness in action.)

§Some other goodies

  • pathlib’s Path objects gain copy() and move() methods to simplify file manipulation. Less reliance on shutil.copy and shutil.move.
  • many more improvements - see the release notes!

What is your favorite recent Python addition?