Towards Data Science

Python 3.15 Has a New Profiler

The article discusses the new profiler introduced in Python 3.15, highlighting its capabilities compared to the existing cProfile tool. It explains what the new profiler can detect that cProfile misses, providing insights into performance analysis improvements. The post was originally published on Towards Data Science.

Simon Willison
Oct 13

web-edit 0.1a1

The article announces the release of web-edit version 0.1a1. It highlights performance optimizations that were written by Claude Opus 5.5, which were generated after feeding it a Python 3.15 profiling report created by GPT‑6 Astra. The release is tagged with "profiling" and "projects".

Simon Willison
Oct 12

Hello Python 3.15, goodbye 3.10, and now I can use 3.11

Python 3.15 introduces several new features, notably explicit lazy imports from PEP 810 that delay module loading until first use, and unpacking syntax in comprehensions (PEP 798) that simplifies flattening lists, sets, and dictionaries. The release also updates the profiling tools, renaming the tracing profiler to profiling.tracing and adding a new sampling profiler, profiling.sampling. These changes aim to improve performance and developer ergonomics in Python code.

Simon Willison
6d ago

If in doubt, delete the uv.lock file

The article explains that when using the uv package manager with Python 3.15, developers sometimes encounter dependency errors because uv.lock files pin versions that lack compatible wheels. The author advises a simple workaround: if a test run fails due to such a mismatch, delete the uv.lock file and rerun the tests. This practice is common in library projects where uv.lock files are ignored in version control.

Simon Willison
Aug 24

llm-anthropic 0.27

The release of llm‑anthropic 0.27 updates the Anthropic plugin for LLM to be compatible with the newly released anthropic v1.0.0 Python library, which has switched from httpx to httpx2. This mirrors a similar change made by OpenAI in their v3.0.0 release two weeks prior. The update includes a migration guide and a pull request that ensures tests pass after upgrading to anthropic>=1.

Simon Willison
Aug 25

EVE Online: The Move to Python 3 Begins!

EVE Online is beginning its transition to Python 3, a move that will involve using the futurize script on 2.4 million lines of code and a manual review of about 20,000 differences between Python 2 and Python 3. The company has historically run on Stackless Python since 2003, with the last major upgrade in 2010 to Stackless Python 2.7. While the announcement does not detail how Stackless will be replaced, the team previously showcased a shift away from Stackless in their Carbon engine for EVE Frontier, leveraging the open‑source carbonengine/scheduler library.

Simon Willison
Oct 12

datasette-ports 0.4

The article announces the release of datasette-ports version 0.4. This plugin now works with the latest Datasette version and can detect and list all Datasette instances running on the current machine, displaying their process IDs (PIDs). Knowing the PID allows users to attach the new Python 3.15 profiler to the running instances.

Towards Data Science
Oct 16

I Reran My Python 3.14 JIT Benchmarks on Python 3.15

The article reports that the author reran Python 3.14 JIT benchmarks on Python 3.15, observing a significantly stronger Just-In-Time (JIT) performance across the same three workloads. However, the improved JIT does not universally benefit all programs, indicating that performance gains are workload‑dependent.

By Thomas Reid
Simon Willison
Sep 1

Python 3.15.0 candidate 2 is here!

Python 3.15.0 candidate 2 has been released, marking the final release candidate for the upcoming 3.15 release scheduled for October. Hugo van Kemenade, the release manager, notes that only clear bug‑fix changes are allowed between this candidate and the final release, and urges third‑party maintainers to prepare wheels on PyPI and test their projects during this phase. The new RC is not yet available for GitHub Actions, but users can add it to their testing matrix using the allow‑prereleases and check‑latest flags to automatically test against the latest RC and then the stable release.