What’s up Python? Wheels in the browser, astral still moves fast, and my new favorite @
June 2026
Summary
Pyodide has official wheel support. You are going to be able to pip install a lot of stuff in your web browser.
Astral cancels pyx, releases the GPU index as FOSS, and keeps improving
uvandtyIf you hate
Annotated, rejoice, we may soon have a shorthand for it.
Pyodide has official wheel support
Pyodide is a web-based version of Python that runs in the browser. It’s the full deal, including the stdlib and support for compiled extensions.
Because it’s very heavy, it’s not something I would use for frontend dev, but it’s definitely nice for playing with Python without having to install anything.
It also had one limitation: each 3rd party library had to be specifically added for the platform by the authors. Not very sustainable.
One year ago, PEP 783 suggested letting lib writers publish Emscripten (and hence pyodide, which relies on the tech) packages on PyPI. This means anybody can now build their own web-enabled lib, and it will be installable out of the box. cibuildwheel v4.0 already supports it, making it very easy to provide.
Nice timing as pyiodide itself reaches the 3.14 milestone, which packages sqlite3 by default and is a native ES module.
Catching up with Astral
Since the company has been bought by OpenAI, what our dream team has been up to?
First, they cancelled pyx, their commercial offering as hey don’t need the money anymore since they are riding the AI cash train and Pyx was mostly their initial bet to secure their financial future. What is interesting, though, is that mention they will release all the important bits behind the tech as free software: the GPU index and prebuilt-wheel infrastructure that were making the product unique.
If this happens, it will reinforce my opinion that uv is here to stay. After all, if they make proprietary stuff open, it’s unlikely they will make something already open, well, not open. But let’s wait and see.
Second is that they added support for the Emscripten platform, which shows they are still as reactive as ever.
Third, they published a draft for the spec of a new compression format, specialized for Python, that is meant to replace zip and tar to distribute packages. The goal is to make it easy to partially read and download, and fast to extract. This is a very early proposal, so I would not get too worked up about it (E.G: they use the name .war, which is already a popular Java packaging format), but they are still targeting long-term.
And finally, the number of ty improvements seems to keep up. There is notably a lot of quality-of-life additions around match statements, they fixed the annoying blind spot on the list()/dict()/set() functions, and the tool has a much better reachability and narrowing analysis.
Good stuff.
Actually, do @ me
I loooove PEP 835, the shorthand syntax for Annotated type metadata.
I like the concept behind Annotated: being able to attach any metadata to types is wonderful while using Pydantic or FastAPI.
But the syntax is so freaking ugly and verbose.
Going from:
from typing import Annotated
from rampocalypse import IncreaseRange
class SteamHardware
price: Annotated[float, IncreaseRange(300, 500)]To this:
from rampocalypse import IncreaseRange
class SteamHardware
price: float @ IncreaseRange(300, 500)Is much better in my eyes. I actually override matmul regularly because it’s not used by anything by default, and this one is really the best use yet.
Also, anything that makes LLM context smaller while staying clear is a win.
