# CPython: The Python Reference Implementation


When `uv python install` downloads an {{< term "interpreter" >}}, it downloads CPython: the reference implementation of the Python language, written in C. CPython compiles `.py` files to bytecode and executes them, and it ships the [standard library](https://docs.python.org/3/library/) that every Python program depends on. Alternative implementations like [PyPy](https://pypy.org/) and [GraalPy](https://www.graalvm.org/python/) exist, but CPython is what "Python" means in practice.

{{< callout type="info" >}}
CPython is the default `uv python install` target. Running `uv python install cpython` downloads the latest stable release. See [How to install Python with uv](https://pydevtools.com/handbook/how-to/how-to-install-python-with-uv.md).
{{< /callout >}}

## Release cycle

CPython follows an annual release cycle defined by [PEP 602](https://peps.python.org/pep-0602/). A new minor version (3.x) ships each October. Each release receives two years of full bug-fix support and three additional years of security-only patches, for a total five-year support window. The [developer guide](https://devguide.python.org/versions/) tracks which versions are currently supported.

Patch releases (3.x.y) arrive roughly monthly during the bug-fix phase. Security releases are irregular and address only vulnerabilities.

## Build variants

A single CPython version can ship in several build configurations:

- **Standard build** is the default. It includes the [GIL](https://pydevtools.com/handbook/explanation/what-is-the-gil.md) and ships with every installer and package manager.
- **Free-threaded build** removes the GIL, enabling true thread-level parallelism. Officially supported starting in Python 3.14 ([PEP 703](https://pydevtools.com/handbook/explanation/what-is-pep-703.md)). uv installs it with the `t` suffix: `uv python install 3.14t`. See [How to use free-threaded Python in a uv project](https://pydevtools.com/handbook/how-to/how-to-use-free-threaded-python-in-a-uv-project.md).
- **Debug build** includes extra runtime checks and assertions. Useful for extension authors, not typical application development.

## Installation

Most developers should install CPython through a version manager rather than platform installers. [uv](https://pydevtools.com/handbook/reference/uv.md) downloads pre-built binaries and manages multiple versions side by side:

```bash
uv python install cpython
```

This downloads the latest stable CPython release into uv's managed directory. `uv run` and `uv sync` select a managed interpreter automatically when it satisfies the project's `requires-python`.

Other installation paths:

| Method | What it does |
|---|---|
| `uv python install 3.12` | Downloads a specific minor version |
| [pyenv](https://pydevtools.com/handbook/reference/pyenv.md) | Compiles CPython from source (macOS/Linux) |
| [python.org installers](https://www.python.org/downloads/) | Official GUI/PKG installers for macOS and Windows |
| [Homebrew](https://pydevtools.com/handbook/reference/homebrew.md) (`brew install python`) | System-level install on macOS |
| Linux distro packages (`apt install python3.12`) | System-level install, often pinned to a single version |

uv and pyenv both read [`.python-version`](https://pydevtools.com/handbook/explanation/what-is-a-python-version-file.md) files, so version pinning is portable between them.

## python-build-standalone

When uv downloads a CPython interpreter, it fetches a pre-built binary from the [python-build-standalone](https://github.com/astral-sh/python-build-standalone) project, maintained by Astral. These builds cover macOS, Linux, and Windows across x86-64 and ARM64 architectures. They are self-contained relocatable installations that do not require system dependencies beyond a C library.

## Cons

- Single-threaded by default. The GIL limits CPU-bound parallelism to one thread at a time. The free-threaded build removes this limit but is newer and not yet the default.
- Slower than JIT-compiled alternatives for sustained pure-Python computation. [PyPy](https://pypy.org/)'s tracing JIT can be significantly faster for tight loops (`uv python install pypy@3.11`).
- Source builds are fragile. Compiling CPython from source (the pyenv default) requires C build tools and system libraries; missing dependencies cause [silent omission of standard library modules](https://pydevtools.com/handbook/how-to/how-to-fix-pyenv-no-module-named-lzma.md).
