Charlie Marsh

@crmarsh.com

Building Astral: Ruff, uv, and other high-performance Python tools, written in Rust.

Today, we're announcing our first hosted infrastructure product: pyx, a Python-native package registry. We think of pyx as an optimized backend for uv: it’s a package registry, but it also solves problems that go beyond the scope of a traditional "package registry".

Bild

The uv build backend is now stable, and considered ready for production use. An alternative to setuptools, hatchling, etc. for pure Python projects, with a focus on good defaults, user-friendly error messages, and performance. When used with uv, it's 10-35x faster.

Bild

Today, we’re announcing the preview release of ty, an extremely fast type checker and language server for Python, written in Rust. In early testing, it's 10x, 50x, even 100x faster than existing type checkers. (We've seen >600x speed-ups over Mypy in some real-world projects.)

Bild

zlib-rs is now used in uv! uv is the extremely fast Python package & project manager with over 200M requests/day. Not only are we happy about the adoption but also grateful for Astral and @crmarsh.com stepping up and supporting us through a GitHub sponsorship. Thanks!

Migrate to `zlib-rs` (again) by charliermarsh · Pull Request #11894 · astral-sh/uv

Summary I believe zlib-rs is now a better choice on ARM and x86, so I'm just going to assume it's a better choice everywhere. It's much easier to build (removes our CMake dependency), a...

github.com

uv is one year old today. Hard to believe its only been a year. The growth, adoption, and impact surpassed my wildest expectations. Happy birthday, uv! 🥳

Bild

Python 3.14.0a5 is out today in uv 0.5.31 and includes a new tail calling interpreter which, from some quick benchmarks, looks like a 1.23x performance improvement !

How to create a Python CLI that's globally available in your system in 5 easy steps. 1. Install uv 2. Init project with `uv init --app --package mycli` 3. Write code 4. Install with `uv tool install . -e` 5. Use `mycli` anywhere in your computer

We’re building a new static type checker for Python, from scratch, in Rust. From a technical perspective, it’s probably our most ambitious project yet. We’re about 800 PRs deep!

Bild

We're continuing to grow the Astral team, and every hire we make is like a dream hire. I don't understand how we're doing it but it rules. This time, it's @gankra.bsky.social! Most recently CTO at Axo, author of cargo-dist, author of The Rustonomicon, Rust 1.0 team member, and more.

It was really valuable for me to stay at a single company long enough to live with the consequences of my own engineering decisions. To come face-to-face with my own technical debt. It takes a few years for this to play out but IMO it's an important part of engineering growth.

🚀 Big news for #Python devs! Socket now supports uv.lock files, bringing deterministic dependency resolution and enhanced supply chain security to your projects. 🛡️ Say goodbye to dependency hell and hello to secure, consistent builds! 🔒✨ @crmarsh.com socket.dev/blog/socket-...

Socket Now Supports uv.lock Files - Socket

Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.

socket.dev

A nice side-effect of making things programmable is that it's much easier to get help from LLMs... For example: infrastructure-as-code means that I can get an LLM to generate CDK, then run the generated CDK, paste back errors, and iterate. No need for any other form interaction.

As someone that learned Rust in 2022, it's easy to forgot how long it takes to build a language and an ecosystem... Rust 1.0 was almost 10 years ago (2015). Graydon Hoare started working on it almost 20 years ago (2006).

Being 100% serious, for me what's described here is a big part of Rust's success. It's fun. And it makes things that are often un-fun (installing the toolchain, adding dependencies) easy.

Bild

My Christmas gift is this series of PRs making standalone PEP 723 scripts first-class targets for all uv commands. You'll be able to create lockfiles for PEP 723 scripts, export them to requirements.txt, view the dependencies with uv tree, and more.

Bild

Any good write-ups on performance improvements across glibc versions? I.e., what kind of lift can you expect when bumping your glibc version?

We now have a shared channel with the CPython core devs where we're discussing upstreaming python-build-standalone changes to CPython itself. It's been pretty awesome to see how welcoming, receptive, and helpful they've been. Grateful!

Last week I focused on addressing quirks in python-build-standalone and fixing the common pain points with uv-installed Pythons. For example: if you've ever run into this tkinter error, it's now fixed.

A build failure indicating that Tcl wasn't installed properly.