Reinventing Python tooling with Rust (Interview)
Episode
103 min
Read time
2 min
Topics
Leadership, Design & UX, Software Development
AI-Generated Summary
Key Takeaways
- ✓Performance through ownership: Rust's borrow checker enforces memory safety at compile time through three rules: each value has one owner, values drop when owners go out of scope, and code can have multiple immutable references or one mutable reference but not both simultaneously, eliminating memory vulnerabilities without runtime overhead.
- ✓Incremental shipping strategy: UV launched in February with just pip-compatible commands (pip install, pip uninstall, virtual environments) to prove viability quickly, then added declarative workflows (init, add, run) by August. Ship minimal useful versions fast rather than waiting for complete feature sets to enable rapid user feedback loops.
- ✓Global cache architecture: UV stores one copy of each package in a global cache and symlinks or uses copy-on-write reflinking into project environments. This makes reinstallation nearly instantaneous and saves massive disk space, especially for large packages like PyTorch which compress to one gigabyte for CUDA builds.
- ✓GPU-aware package management: Python standards lack ways to specify GPU architectures (CUDA versions, AMD ROCm), forcing projects like PyTorch to create separate registries per architecture. Pyx solves this by detecting user GPUs, curating compatible pre-built distributions, and serving correct versions automatically without manual configuration or source compilation.
- ✓Cross-ecosystem learning: Study how other languages solve similar problems before building. UV's design draws from Cargo (Rust), Bundler (Ruby), PNPM and Bun (JavaScript). Examine both successes and failures in context, then adapt solutions to your specific constraints rather than reinventing from scratch or copying blindly.
What It Covers
Charlie Marsh explains how Astral builds UV and Ruff, Python tools written in Rust that achieve 10x speed improvements through performance optimization, global caching, and tackling the entire tooling stack from package management to Python installation itself.
Key Questions Answered
- •Performance through ownership: Rust's borrow checker enforces memory safety at compile time through three rules: each value has one owner, values drop when owners go out of scope, and code can have multiple immutable references or one mutable reference but not both simultaneously, eliminating memory vulnerabilities without runtime overhead.
- •Incremental shipping strategy: UV launched in February with just pip-compatible commands (pip install, pip uninstall, virtual environments) to prove viability quickly, then added declarative workflows (init, add, run) by August. Ship minimal useful versions fast rather than waiting for complete feature sets to enable rapid user feedback loops.
- •Global cache architecture: UV stores one copy of each package in a global cache and symlinks or uses copy-on-write reflinking into project environments. This makes reinstallation nearly instantaneous and saves massive disk space, especially for large packages like PyTorch which compress to one gigabyte for CUDA builds.
- •GPU-aware package management: Python standards lack ways to specify GPU architectures (CUDA versions, AMD ROCm), forcing projects like PyTorch to create separate registries per architecture. Pyx solves this by detecting user GPUs, curating compatible pre-built distributions, and serving correct versions automatically without manual configuration or source compilation.
- •Cross-ecosystem learning: Study how other languages solve similar problems before building. UV's design draws from Cargo (Rust), Bundler (Ruby), PNPM and Bun (JavaScript). Examine both successes and failures in context, then adapt solutions to your specific constraints rather than reinventing from scratch or copying blindly.
Notable Moment
Marsh describes rewriting the parser from a generator-based approach to handwritten code, achieving several times faster parsing speed and making Ruff 30-40% faster overall. This demonstrates how significant performance gains come from architectural decisions within the same language, not just from choosing Rust over Python initially.
Episode Transcript
Welcome, everyone. I'm Jared, and you are listening to the change log, where each week we interview the hackers, the leaders, and the innovators of the software world. We pick their brains. We learn from their failures. We get inspired by their accomplishments. And, you know, we have a lot of fun along the way. Charlie Marsh built RUF, an extremely fast Python linter written in Rust and UV, an extremely fast Python package manager written in Rust, because he believes great tools can have an outsized impact. He believes it so much, in fact, that he started an entire company that builds next gen Python tooling. On this episode, Charlie joins us to tell us all about it. Why Python? Why Rust? How they make everything so fast? How they plan to make money? What other products he's dreaming up and a whole lot more. But first, a big thank you to our partners at fly.io, the public cloud built for developers who ship. We love Fly. You might too. Learn all about it at fly.io. Okay. Charley Marsh from Astral on the change log. Let's do it. What's up, friends? I'm here with Kyle Galbraith, cofounder and CEO of Deepo. Deepo is the only build platform looking to make your builds as fast as possible. But, Kyle, this is an issue because GitHub Actions is the number one CI provider out there, but not everyone's a fan. Explain that. I think when you're thinking about GitHub Actions, it's really quite jarring how you can have such a wildly popular CI provider, and yet it's lacking some of the basic functionality or tools that you need to actually be able to debug your builds or deployments. And so back in June, we essentially took a stab at that problem in particular with Depo's GitHub Action Runners. What we've observed over time is effectively GitHub Actions, when it comes comes to, like, actually debugging a build, is pretty much useless. The job logs in GitHub Actions UI is pretty much where your dreams go to die. Like, they're collapsed by default. They have no resource metrics. When jobs fail, you're essentially left playing detective, like clicking each little drop down on each step in your job to figure out, like, okay, where did this actually go wrong? And so what we set out to do with our own GitHub Actions observability is essentially we built a real observability solution around GitHub actions. Okay. So how does it work? All of the logs by default for a job that runs on a depot GitHub action runner, they're uncollapsed. You can search them. You can detect if there's been out of memory errors. You can see all of the resource contention that was happening on the runner. So you can see your CPU metrics, your memory metrics, not just at the top level runner level, but all the way down to the individual processes running on the machine. And so for us, …
Get the full transcript (20,852 words) + summary by email — free
One-time email with the complete transcript and AI summary of this episode. No account needed.
One email, no spam. We’ll also show you what SignalCast does.
You just read a 3-minute summary of a 100-minute episode.
Get The Changelog summarized like this every Monday — plus up to 2 more podcasts, free.
Pick Your Podcasts — FreeKeep Reading
More from The Changelog
Forking Cal.com to closed source (Interview)
Sep 3 · 114 min
Software Engineering Daily
Python 3.14 with Łukasz Langa
Feb 10
More from The Changelog
Postgres at PlanetScale (Interview)
Aug 25 · 102 min
Lenny's Podcast
Getting paid to vibe code: Inside the new AI-era job | Lazar Jovanovic (Professional Vibe Coder)
Feb 8
Books, tools, and gear mentioned in this episode
SignalCast may earn commission on purchases via these links. As an Amazon Associate, SignalCast earns from qualifying purchases.
Tools
“Pyx solves this by detecting user GPUs, curating compatible pre-built distributions, and serving correct versions automatically without manual configuration or source compilation.”
- UVBy guest
by Astral
“Charlie Marsh explains how Astral builds UV and Ruff, Python tools written in Rust that achieve 10x speed improvements through performance optimization, global caching, and tackling the entire tooling stack from package management to Python installation itself.”
- RuffBy guest
by Astral
“Charlie Marsh explains how Astral builds UV and Ruff, Python tools written in Rust that achieve 10x speed improvements through performance optimization, global caching, and tackling the entire tooling stack from package management to Python installation itself.”
“SPONSORS: Depot”
“UV's design draws from Cargo (Rust), Bundler (Ruby), PNPM and Bun (JavaScript).”
“UV's design draws from Cargo (Rust), Bundler (Ruby), PNPM and Bun (JavaScript).”
“UV's design draws from Cargo (Rust), Bundler (Ruby), PNPM and Bun (JavaScript).”
“UV's design draws from Cargo (Rust), Bundler (Ruby), PNPM and Bun (JavaScript).”
Products
company
“SPONSORS: Fly.io”
More from The Changelog
We summarize every new episode. Want them in your inbox?
Forking Cal.com to closed source (Interview)
Postgres at PlanetScale (Interview)
Canary tokens and digital tripwires (Interview)
From open source hits to OpenAI (Interview)
MCP on Code Mode (Interview)
Similar Episodes
Related episodes from other podcasts
Software Engineering Daily
Feb 10
Python 3.14 with Łukasz Langa
Lenny's Podcast
Feb 8
Getting paid to vibe code: Inside the new AI-era job | Lazar Jovanovic (Professional Vibe Coder)
Lenny's Podcast
Oct 19
How to measure AI developer productivity in 2025 | Nicole Forsgren
Modern Wisdom
Sep 7
Why You Feel Everything So Deeply (and how to survive it) - Dr Sasha Hamdani - #1147
Odd Lots
Aug 10
NYT CEO Meredith Kopit Levien on Running a Media Brand in the Age of AI
Explore Related Topics
This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.
Read this week's Software Engineering Podcast Insights — cross-podcast analysis updated weekly.
You're clearly into The Changelog.
Every Monday, we deliver AI summaries of the latest episodes from The Changelog and 192+ other podcasts. Free for one show.
Start My Monday DigestNo credit card · Unsubscribe anytime