Python 3.15.0rc2 Testing Guide

Daily Code Guide Python News

Python 3.15.0rc2 was released on September 1, 2026, as the second release candidate for Python 3.15. It has since been superseded by Python 3.15.0rc3, released on October 2, 2026, which the project describes as the final planned release candidate. Python 3.15.0 final is scheduled for October 9, 2026. The rc2 preview includes approximately 144 bug fixes, build improvements, and documentation changes from 76 contributors since the first release candidate.

For developers and package maintainers, rc2 was a testing window. Its release page said only reviewed changes that are clear bug fixes were expected between that candidate and the final release, with no further ABI changes planned for the Python 3.15 series. rc3 followed on October 2 because of last-minute lazy-import fixes. Python 3.15.0rc2 remains a preview release and is not recommended for production environments.

What changed in Python 3.15.0rc2?

Python 3.15 includes changes across the language, runtime, standard library, profiling tools, typing, and the C API. The Python 3.15 What’s New documentation describes the current feature set, but it is still draft material and may change as the release progresses.

  • Explicit lazy imports, configurable through the lazy keyword, -X lazy_imports, PYTHON_LAZY_IMPORTS, and related sys APIs.
  • Built-in frozendict and sentinel types.
  • A new profiling namespace with tracing and sampling tools. cProfile remains available as an alias, while profile is deprecated for later removal according to the supplied documentation.
  • The Tachyon statistical sampling profiler and default frame pointers.
  • Unpacking in comprehensions, UTF-8 as the default encoding, package startup configuration files, and expanded typing features.
  • A new PyBytesWriter C API and stable ABI support for free-threaded builds and related C API changes.

The release also includes a significantly upgraded Python JIT compiler. Official Windows 64-bit binaries use the tail-calling interpreter, while official macOS binaries install free-threading support by default. These capabilities should be evaluated in representative workloads rather than treated as a reason to change production runtimes before the final release.

Ad

Compatibility and package testing implications

Release-candidate testing is particularly relevant for maintainers of native extensions, frameworks, and applications that depend on interpreter behavior. The release notes state that binary wheels built against Python 3.15.0 release candidates are expected to work with future Python 3.15 versions. That gives maintainers an opportunity to build and test wheels before the final release, although the preview status still matters for release decisions.

Projects should review assumptions around the new built-in frozendict, especially where code expects mapping objects to be instances of dict. Profiling integrations also deserve attention because Python 3.15 adds a profiling namespace, retains cProfile as an alias, and deprecates profile.

Lazy imports may change when import-related failures occur. Because some imports can be deferred until a name is first used, applications and test suites should check both successful execution and error-handling paths. The draft status of the What’s New documentation also means it should not be treated as a final, exhaustive migration guide.

Security-related changes in the candidate

The Python changelog records several security-related changes in Python 3.15.0rc2. These include an update to bundled libexpat, limits on certain zipfile decompression allocations, a tarfile path-containment fix, and a change associated with CVE-2026-15806 involving HTTPPasswordMgr credential scoping between HTTP and HTTPS URLs.

These entries are changes included in this release candidate; they should not be interpreted as a broader security certification or a guarantee that all security issues are resolved. Teams that process archives or manage HTTP credentials should review the relevant changelog entries and test their existing workflows against the candidate.

Installing the preview on Windows and macOS

Python’s official 3.15.0rc2 release page provides source archives, macOS and Windows installers, Windows embeddable packages, Android packages, an iOS XCFramework, release manifests, checksums, Sigstore metadata, and selected SBOM files.

On Windows, the Python Install Manager documentation describes installation through python.org or the Microsoft Store. The manager provides the python, py, and pymanager commands for launching and managing runtimes. PATH adjustments may be needed depending on the existing system configuration.

For project isolation, the Windows documentation generally recommends a virtual environment. A basic project environment can be created with:

python -m venv <env path>

The release page lists Windows 64-bit, 32-bit, and ARM64 installers. The ARM64 installer is marked experimental. Windows embeddable packages are also listed for 64-bit, 32-bit, and ARM64 systems.

On macOS, the official installation documentation describes a signed and notarized universal2 installer for supported Apple Silicon and Intel Macs. Installation requires administrator privileges, and the documentation describes a certificate-installation step after the main installation. The optional free-threaded feature is installed by default according to the supplied documentation, with both traditional and free-threaded interpreters available through the documented setup.

Platform support is not the same as binary availability

PEP 11 defines CPython platform-support tiers and lists Tier 1, Tier 2, and Tier 3 target triples covering platforms such as Windows, Linux, macOS, Android, iOS, WASI, and FreeBSD, along with several architectures.

That policy should not be read as a complete artifact-by-artifact support matrix for Python 3.15.0rc2. The supplied release information confirms specific downloads, but it does not establish that every target listed by PEP 11 has an available release-candidate binary. The complete source-build prerequisite matrix for all operating systems and optional modules is also not supplied.

What you should do now

  1. Test in an isolated environment. Use the documented Windows virtual-environment approach or an equivalent isolated setup. Keep the release candidate separate from production interpreters.
  2. Run your compatibility suite. Exercise application startup, import error paths, packaging workflows, profiling integrations, and any code that depends on mapping types or encoding defaults.
  3. Test native extensions and wheels. Build or install Python 3.15 wheels where relevant, and verify them across the platforms your project supports.
  4. Review archive and credential-handling code. Pay particular attention to workflows covered by the rc2 changelog entries for zipfile, tarfile, libexpat, and HTTPPasswordMgr.
  5. Validate downloaded artifacts. Use the release page’s checksums and supplied signature or SBOM metadata when checking downloaded files.
  6. Report and fix compatibility issues before final release. Third-party maintainers are encouraged to test projects against Python 3.15 and publish Python 3.15 wheels on PyPI where binary distribution is relevant.

Availability and release timing

Python 3.15.0rc2 is still available from the official release page, but it is a preview and should not be used as a production runtime. The October 1 final date was postponed. Python 3.15.0rc3, released October 2, 2026, is the final planned release candidate, and Python 3.15.0 final is scheduled for October 9, 2026.

For teams planning upgrades, rc2 is a practical point to identify compatibility problems and prepare package releases. Production migration should wait for the final release and for the project’s own dependency and operational testing to complete.

Sources

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
Ad
Ad
Ad