Python 3.15 beta 1 is out! This is a really impactful release, with some really
big additions. A new lazy import system, a powerful sampling profiler, not one
but two new builtins, the usual color/types/errors updates, and lots of key
changes for developers.
AI suddenly passed the “more time saved than spent” point around December 2025.
A little late, I’ve finally started using agentic AI in various places over the
last 2-3 months, and wanted to jot down my thoughts on what works, what doesn’t
(yet?), and what the future might look like. If you are curious about AI for
programming, or have been skeptical in the past, if “AI slop” is the first thing
that comes to mind, this post will show you some ways that AI can be really
helpful. Certain tasks have been completely transformed. Notice, I said “some”,
not “all”! But it is a lot.
Posted on April 4, 2026
(Last modified on April 5, 2026)
| Henry Schreiner
I’ve just released repo-review 1.0 with a huge update to the WebApp, along
with some other solid improvements in speed, simplicity, and stability.
Repo-review’s two most popular plugins, sp-repo-review and
validate-pyproject, can take full advantage of the new asynchronous fetching
mechanism. And if you use the upcoming Python 3.15, the CLI is more responsive
than ever thanks to lazy loading!
Posted on March 24, 2026
(Last modified on March 27, 2026)
| Henry Schreiner
Python 3.15a7, which is now just a uv python install 3.15 away on all major
platforms, has lazy imports! This exciting feature, proposed in PEP 810,
promises to make CLI applications faster (especially when using flags like
--help), and could make a lot of large code with lots of imports that don’t
always get used faster too. Unlike the earlier, failed attempt, this requires
libraries to put in some work. I’ve developed a helper tool to make it easy; I’d
like to cover what lazy imports are and how to use my tool. Since this is the
first library that I used AI heavily in developing, the second half of the post
will cover how my experience with AI for a task like this went.
TL;DR: run uvx flake8-lazy --apply to make your code magically faster on
Python 3.15!
I’ve just released boost-histogram 1.7 and hist 2.10, with a major new
feature and a big typing improvement! I’d like to quickly outline what’s new
here. Python 3.10+ is now required.
Posted on January 9, 2026
(Last modified on January 20, 2026)
| Henry Schreiner
Along with a pip (and now packaging) maintainer, Damian Shaw, I have
been working on making packaging, the library behind almost all packaging
related tools, faster at reading versions and specifiers, something tools like
pip have to do thousands of times during resolution. Using Python 3.15’s new
statistical profiler and metadata from every package ever uploaded to PyPI, I
measured and improved core Packaging constructs while keeping the code readable
and simple. Reading in Versions can be up to 2x faster and SpecifierSets can
be up to 3x faster in packaging 26.0, now released! Other
operations have been optimized, as well, up to 5x in some cases. See the
announcement and release notes too; this post will focus on the
performance work only.
UHI 1.0 is out, with a major new feature: a new histogram serialization
spec! This spec supports multiple formats (HDF5, zip, and JSON initially), and
can be supported by multiple libraries (Boost-histogram/hist initially). There’s
also a new test suite helper for libraries targeting the UHI indexing spec.
Pybind11 3.0 has been released! I would like to highlight some of the key
changes below; be sure to check out the changelog and upgrade guide for
more information! This release includes an ABI bump, the first required bump in
many years on Unix (Windows has had required bumps more often). This release
contains the multi-year smart-holder branch, multi-phase init and subinterpreter
support, py::native_enum, an interface to warnings, typing improvements, and
more. CMake now defaults to FindPython mode.
Support for Python 3.14, 3.14t, GraalPy, PyPy 3.11, and iOS have been added,
while legacy support for Python 3.7, PyPy 3.8/3.9, and CMake <3.15 has been
removed. Most deprecated features have been kept for this release, but anything
producing a warning in 3.0 may be removed in a future 3.x version.