Fact-checked by Grok 2 weeks ago

CPython

CPython is the reference implementation of the Python programming language.[] Written in C and Python, it is the default and most widely used implementation, serving as the canonical version distributed on python.org.[] As the original implementation developed by Guido van Rossum in the early 1990s, new language features typically appear in CPython first.[] The latest stable release is Python 3.14.0, released on October 7, 2025.[]

Design and Architecture

Core Components

CPython's architecture is composed of several interconnected core components that handle the processing and execution of Python code. The parser, implemented in the Parser/ directory, performs and syntactic parsing of source code to produce an (AST), using files like Grammar/grammar.c for the grammar rules. The , located in Python/compile.c, transforms the AST into bytecode instructions stored in code objects. The interpreter, or Python Virtual Machine (PVM), in Python/ceval.c, executes this bytecode through an evaluation loop that fetches and dispatches opcodes. Underpinning these is the object model, where all Python entities are represented as PyObject instances, enabling dynamic typing and polymorphism. combines immediate for most objects with a generational garbage collector (Python/gcmodule.c) to handle cyclic references.

Bytecode Compilation

CPython compiles source code into through a multi-stage process that ensures portability across platforms. The compilation begins with and of the source code, which generates an (AST) representing the program's structure. This AST is then transformed into instructions encapsulated within code objects, which include the sequence of operations, constants, and metadata such as variable names. The entire process is handled by the compiler module in the CPython internals, invoked automatically when source files are imported or executed via functions like exec() or eval(). Bytecode in CPython consists of a sequence of , each representing a low-level operation that the Virtual Machine (PVM) can execute efficiently. Common opcodes include LOAD_FAST, which pushes a to a onto the evaluation , and BINARY_ADD, which pops two values, adds them, and pushes the result back onto the . Since Python 3.6, each instruction occupies two bytes, with arguments following as needed, and the format is defined in the Include/opcode.h header file. To optimize repeated executions, compiled is cached in .pyc files alongside the source, containing a magic number for version compatibility and the marshaled code object. Developers can inspect and analyze using the dis module, which provides tools to disassemble code objects into human-readable sequences. For example, dis.dis() can print the for a , revealing instructions like LOAD_FAST 0 followed by BINARY_ADD for a simple . This module is particularly useful for and understanding the internal representation without accessing C source code. The execution of occurs within an evaluation loop managed by the CPython interpreter. The core PyEval_EvalFrameEx handles the interpretation of a frame object, which represents the execution context including the code object, locals, and . This iteratively fetches opcodes, dispatches them to appropriate handlers, and manages the and exceptions until the frame completes. It forms the heart of the PVM, enabling the step-by-step evaluation of in a controlled .

Concurrency Model

The (GIL) in CPython is a mutex that protects access to Python objects and interpreter internals, ensuring that only one executes Python at a time. This mechanism serializes execution within a single interpreter instance, preventing multiple native threads from simultaneously modifying shared data structures. The GIL's primary rationale stems from CPython's implementation in , where it simplifies through by avoiding complex synchronization for atomic operations across threads. It prevents race conditions in the interpreter's core, such as those involving object reference counts or the garbage collector, which could otherwise lead to memory corruption or crashes in a multi-threaded environment. By centralizing control, the GIL reduces the overhead of fine-grained locking, making single-threaded performance more efficient while maintaining without requiring extensive changes to the C API. To achieve parallelism despite the GIL, developers commonly use the module, which spawns separate OS processes, each running its own Python interpreter and thus its own GIL, allowing true parallel execution on multi-core systems for CPU-bound tasks. For I/O-bound workloads, the asyncio library provides asynchronous I/O via coroutines and an event loop within a single thread, where the GIL poses minimal contention since blocking operations are offloaded without thread switching. Recent developments have introduced experimental enhancements to CPython's concurrency model. Python 3.12 (released in October 2023) implemented a per-interpreter GIL via , enabling sub-interpreters to each hold their own GIL, which facilitates isolated execution environments with reduced global contention. Building on this, Python 3.13 (released in October 2024) added optional free-threading support through , allowing builds configured with --disable-gil to run without the GIL entirely, though this mode remains experimental and requires compatible extensions for full functionality.

Development History

Origins

CPython, the reference implementation of the Python programming language, was conceived and initially developed by Guido van Rossum in the late 1980s while he was working at the Centrum Wiskunde & Informatica (CWI), a national research institute for mathematics and computer science in the Netherlands. Van Rossum began implementation in December 1989 during a Christmas holiday, motivated by the need for a more extensible scripting language to support system administration tasks on the Amoeba distributed operating system project at CWI. The first public release, Python 0.9.0, occurred on February 20, 1991, introducing core features such as classes with inheritance, functions, exception handling, core data types including lists and dictionaries, and modules with documentation strings. The design of Python drew significant influences from existing languages, particularly the ABC language, on which Van Rossum had worked from 1983 to 1987 at CWI, adopting its emphasis on structured programming and ease of use while addressing ABC's limitations in extensibility and file handling. Additionally, inspired Python's module system and object-oriented features. The language was named "Python" after the British comedy series , as Van Rossum was reading its published scripts at the time and sought a short, unique, and somewhat humorous name. CPython's initial implementation was written in the C programming language to ensure portability and performance, targeting the Amoeba operating system but designed with cross-platform compatibility in mind from the outset. It featured a simple virtual machine, parser, and runtime environment, prioritizing code readability through significant whitespace indentation for statement grouping and a focus on simplicity to make programming more accessible than in languages like C or shell scripting. Early adoption grew through internal use at CWI and gradual public dissemination, culminating in the release of 1.0 on January 26, 1994, which marked the first stable public version and included enhancements like lambda functions, , , and reduce for support. This release solidified Python's foundation as an open-source project. By 2001, to formalize governance and support ongoing development, the (PSF) was established as a non-profit organization, announced on March 6 at the ninth Python Conference.

Major Releases

CPython's major releases have progressively enhanced the language's capabilities, focusing on usability, performance, and modernity while maintaining its core philosophy of readability and simplicity. The 1.x series, released between 1994 and 1999, established the foundational structure of the language. 1.0, released on January 26, 1994, introduced key constructs such as expressions, along with built-in functions like map(), filter(), and reduce(), enabling more expressive code for data transformations. Subsequent releases in the series refined these elements; for instance, 1.5, released on December 31, 1997, introduced built-in package support for hierarchical modules, the assert statement for , the re module for regular expressions, exception classes, and new modules including threading for easier multithreading. These early versions emphasized modular design and extensibility, setting the stage for Python's growth as a . Python 2.0, released on October 16, 2000, marked a significant evolution with the addition of list comprehensions, which provided a concise syntax for creating lists from iterables, inspired by functional languages like . It also introduced optional cycle-detecting garbage collection to handle memory management for circular references more efficiently, and built-in support for strings to facilitate international text handling. The series culminated in Python 2.7, released on July 3, 2010, which served as the final 2.x release and incorporated refinements from later development branches while prioritizing . Support for Python 2.7 was extended until January 1, 2020, allowing a gradual transition for legacy codebases. Python 3.0, released on December 3, 2008, represented a deliberate break from to address long-standing design inconsistencies, earning it the nickname "Python 3000." Notable changes included transforming print into a built-in , implementing floor division for integers with the // operator (replacing true division in Python 2), and adopting as the default string type to simplify text processing. These reforms aimed at a cleaner, more consistent language core, though they required significant porting efforts for existing code. The Python 3.x series continued to innovate through version 3.10. Python 3.5, released on September 13, 2015, introduced type hints through the typing module, enabling optional static type checking for better code reliability without runtime overhead, as outlined in PEP 484. It also added the async and await keywords for native support, simplifying asynchronous programming patterns as specified in PEP 492. By Python 3.10, released on October 4, 2021, structural pattern matching was implemented via the match statement and case clauses, allowing developers to destructure and match complex data structures in a readable manner, as detailed in PEP 634. This feature enhanced control flow for tasks like parsing and validation, building on the series' emphasis on expressive syntax.

Recent Innovations

Python 3.11, released on October 24, 2022, introduced significant performance enhancements through the Faster CPython project, achieving an average speedup of 25% over Python 3.10 across various benchmarks. A key innovation was the specializing adaptive interpreter outlined in PEP 659, which dynamically specializes for common operations like attribute access and binary operations, adapting to runtime patterns without requiring . This approach targeted hotspots in real-world code, yielding up to 60% improvements in specific scenarios while maintaining compatibility. Building on this momentum, Python 3.12, released on October 2, 2023, advanced concurrency support with per-interpreter Global Interpreter Locks (GILs) as proposed in PEP 684, enabling isolated subinterpreters to operate with independent GILs for better parallelism in multi-threaded extensions. Additionally, error messages were substantially improved, incorporating contextual suggestions for common mistakes, such as recommending modules for undefined names, and enhancing traceback readability with better and line information. These changes reduced time for developers by providing more actionable feedback directly from the interpreter. Python 3.13, released in October 2024, marked a pivotal shift toward optional concurrency restrictions with an experimental free-threaded mode that disables the GIL entirely, allowing true multi-threaded execution on multi-core systems via the build option --disable-gil. This mode, stabilized from prior experimental work, supports extensions compiled against it for improved scalability in tasks. Concurrently, an experimental compiler was merged into the core, initially focusing on simple optimizations like inline caching and to boost interpretive speed without altering the model. The latest stable release, Python 3.14, arrived on October 7, 2025, with refinements to the compiler, including broader platform support in official binaries for macOS and Windows, and optimizations that address previous overheads in non-trivial code paths. Subinterpreter capabilities were further enhanced, building on per-interpreter GILs to allow seamless sharing of certain objects across isolated environments while preserving , facilitating advanced use cases like concurrent loading. Official free-threaded builds became a supported distribution option, encouraging adoption for performance-critical applications. Ongoing development of CPython occurs through the open-source repository at github.com/python/cpython, where contributors propose and review changes via the Python Enhancement Proposal (PEP) process, ensuring community-driven evolution of features like JIT maturation and GIL alternatives.

Distribution and Platforms

Official Releases

The official releases of CPython are managed by the Python core development team through a formalized process that produces source tarballs and coordinates community-built binaries, primarily distributed via the python.org website. This process, detailed in PEP 101, involves stages such as alpha and beta pre-releases, release candidates, and final stable versions, with automation tools handling tagging, building, and uploading to ensure consistency across platforms. Users can obtain CPython via pre-built installers for Windows and macOS, which are signed for and include options for system-wide or user-specific . For systems and custom builds, source tarballs are downloaded from python.org, unpacked, and compiled using standard commands like ./configure && make followed by make install, requiring dependencies such as a C compiler and development libraries. Version management on Windows is facilitated by the built-in py launcher, which allows users to specify and switch between installed Python versions via commands like py -3.12 or py -V:all to list available runtimes. On systems, the third-party pyenv tool is commonly used to install, manage, and switch multiple versions per user or project, integrating seamlessly with shell environments. Additionally, the module venv enables the creation of isolated environments for projects, using python -m venv /path/to/env to bootstrap a self-contained setup with its own package directory and executable. CPython is released under the Python Software Foundation License Version 2 (PSF-2.0), a permissive open-source license that grants non-exclusive, royalty-free rights to use, modify, distribute, and sublicense the software while requiring retention of copyright notices. This license ensures broad compatibility, including with the GNU General Public License, and applies to both the interpreter and its documentation.

Operating System Integrations

CPython is deeply integrated into major Linux distributions, where it serves as a foundational component for system tools and user applications. In Ubuntu, the python3 package provides the default CPython interpreter, delivering version 3.12.3 in the latest long-term support release (Ubuntu 24.04 LTS), along with essential standard library modules and dependencies like libpython3-stdlib. Fedora similarly includes CPython by default, with Python 3.13 as the system version in Fedora 41, optimized with compiler flags for enhanced performance and supporting seamless migration of pip-installed packages between releases. Enterprise-oriented distributions prioritize stability; Red Hat Enterprise Linux (RHEL) 9 defaults to Python 3.9 for broad compatibility in production environments, while offering modular access to newer runtimes such as Python 3.11 (via the python3.11 package since RHEL 9.2) and Python 3.12 (since RHEL 9.4). CentOS Stream 9, as a RHEL 9 derivative, mirrors this approach with Python 3.9 as the default, providing modular packages for Python 3.11 and 3.12 to ensure stability in long-term deployments. On Windows, CPython integrates seamlessly through the , allowing users to install the latest stable release—such as Python 3.13—without administrative privileges, with automatic updates and proper configuration for the current user. The accompanying py launcher facilitates version management, enabling commands like py -3.12 to invoke a specific CPython or py --list to enumerate available versions, which is particularly useful in multi-version setups. For macOS, CPython is bundled with the Xcode Command Line Tools, providing a system-integrated version (typically Python 3.9) essential for development workflows and Apple ecosystem dependencies. Users seeking the most recent releases can rely on Homebrew, which maintains formulae for specific versions like [email protected], ensuring access to the latest maintained CPython builds while respecting macOS's site-packages structure and virtual environment best practices. Across these operating systems, maintenance emphasizes security and compatibility; distributions routinely apply backports for vulnerabilities identified by the Python Security Response Team, which triages issues and coordinates fixes for supported branches without requiring full upgrades. The CPython 3.x series further supports this through its Stable ABI, a subset of the C API that guarantees binary compatibility for extensions across minor versions (e.g., from 3.9 to 3.13), provided they are compiled against the limited API defined in PEP 387.

Cross-Platform Support

CPython is designed for high portability and can be compiled and run on a wide range of operating systems and hardware architectures. It supports systems (including various distributions, , and ), Windows (via or ), and macOS. Architecturally, it accommodates x86_64, (including ARM64 for and mobile devices), PowerPC, and others through configure scripts and build tools. This cross-platform capability is facilitated by the Autoconf-based build system for Unix and the distutils/setuptools for Windows, allowing developers to build from source tailored to specific environments. As of November 2025, CPython 3.14 includes enhanced support for experimental free-threading on multiple platforms.

Alternative Implementations

JIT-Based Alternatives

JIT-based alternatives to CPython leverage just-in-time () compilation to generate at , offering substantial performance improvements over CPython's bytecode interpreter for computationally intensive workloads. These implementations translate frequently executed code paths into optimized native code, reducing interpretation overhead and enabling aggressive optimizations like inlining and . Unlike CPython, which executes directly through a , JIT approaches profile behavior to compile "hot" code, resulting in faster execution for long-running programs. PyPy is a prominent JIT-based Python implementation, built using the RPython toolchain—a restricted subset of Python designed for translation into efficient interpreters and compilers. Its JIT compiler, generated automatically from the RPython interpreter, employs meta-tracing to capture and optimize execution traces of hot code paths, producing that can outperform by factors of 3x on average and up to 5-10x for certain tasks, such as numerical simulations or algorithmic computations. PyPy maintains high compatibility with 's ecosystem, supporting most C extensions through the cpyext , which emulates the C to allow seamless integration of libraries like , though with potential performance penalties due to overhead. Numba provides a specialized JIT solution for numerical and scientific computing, functioning as a library rather than a full interpreter replacement. It uses the compiler infrastructure to translate decorated Python functions—particularly those involving arrays—into optimized , achieving speeds comparable to or for array-oriented operations without requiring code rewrites in lower-level languages. Focused on domains like and simulations, Numba supports parallelization via automatic SIMD and explicit threading, delivering 2-4x speedups in vectorized loops and broader acceleration in GPU-accelerated environments through integration. Key differences between these JIT alternatives and CPython lie in their compilation strategies and concurrency handling. PyPy's tracing records dynamic execution paths to generate specialized code, contrasting with CPython's static interpretation, which lacks runtime optimization and incurs repeated dispatch costs. While both retain a (GIL) to manage ,

VM-Based Alternatives

VM-based alternatives to CPython implement the Python language on established virtual machines such as the (JVM) and the (CLR), enabling seamless interoperability with their respective ecosystems while hosting Python bytecode or equivalent representations. These implementations prioritize integration over standalone performance, allowing Python code to leverage vast libraries in Java or .NET environments, though they often sacrifice full compatibility with CPython's C extensions. Jython is an implementation of Python that runs on the JVM, compiling Python code to Java bytecode for execution within Java applications. It provides direct access to Java classes and libraries from Python scripts, using constructs like from java.lang import System to invoke Java functionality, and supports embedding Python interpreters in Java via org.python.util.PythonInterpreter. This enables rapid prototyping and scripting in Java-heavy environments, such as enterprise software or Android development, where Python code can be 2-10 times shorter than equivalent Java. However, Jython is limited to Python 2.7 syntax and semantics in its stable releases, with ongoing work toward Python 3 support, and it lacks native support for CPython's C extensions due to the absence of a C runtime on the JVM. IronPython, supporting Python 2.7 and 3.4, executes Python on the .NET CLR, preserving Python's dynamic typing while exposing .NET assemblies as Python modules through the clr module, such as clr.AddReference("System.Xml") to import and use C# libraries like System.Collections.Generic.List. This integration allows Python developers to call .NET APIs with familiar syntax, including method invocation and property access, and supports bidirectional where .NET applications can host IronPython scripts. Dynamic features like isinstance() work seamlessly with .NET types, making it suitable for .NET-based web services or desktop applications. Limitations include partial support for advanced .NET features like full interop or expression trees, and it requires .NET Core or Framework for cross-platform use. GraalPy, formerly known as GraalPython, is a Python 3.12-compliant runtime (as of GraalVM 25, September 2025) built on , a polyglot that supports interoperability across languages like , , and via the . It allows Python code to import Java classes through the java module (e.g., import java.util.ArrayList) and interact with other languages using polyglot.eval(language="js", source="1 + 1"), facilitating mixed-language applications in or embedded systems. GraalPy supports embedding in Java via Maven/Gradle plugins and can generate native executables for standalone deployment, with automatic type conversions between Python and foreign objects. While it emulates some CPython C extensions, performance varies, and full compatibility is not guaranteed for all native modules. These VM-based implementations are inherently platform-specific, tying Python to the Java or .NET ecosystems for enhanced enterprise interoperability, such as combining Python's data analysis capabilities with Java's scalability or .NET's GUI frameworks. However, they introduce trade-offs including slower startup times due to VM initialization—often longer than CPython's direct execution—and reduced compatibility with the broader CPython ecosystem, particularly C extensions that rely on platform-native code. Despite these, they excel in scenarios requiring tight integration, like polyglot microservices or legacy system extensions, where the interoperability benefits outweigh the overhead.

Performance and Limitations

Optimization Efforts

Efforts to optimize CPython's performance began in the early 2000s with Psyco, a just-in-time () compiler extension developed by Armin Rigo that specialized code at runtime for pre-2.7 versions, achieving significant speedups in targeted workloads before being discontinued around 2010 due to maintenance challenges. In 2009, launched Unladen Swallow, an -based optimization branch of CPython aimed at delivering up to 5x performance gains through JIT compilation while maintaining compatibility with 2.6, but the project was abandoned by 2011 after falling short of goals, encountering LLVM integration issues, and increasing memory usage. The Faster CPython project, initiated in 2021 under the Steering Council with contributions from and others, has driven systematic performance enhancements in recent releases. A key outcome in Python 3.11 was the introduction of the specializing adaptive interpreter via PEP 659, which uses inline caching and superinstructions to optimize common operations like binary arithmetic, subscripting, and function calls based on runtime types, resulting in an average 25% speedup across the pyperformance benchmark suite compared to Python 3.10. Complementing this, frame evaluation optimizations in 3.11 streamlined stack frames with lazy allocation and inlined function calls, reducing overhead and yielding up to 1.7x improvements in recursive scenarios. Building on these, Python 3.13 introduced an experimental compiler via PEP 744, which translates hot to optimized using a copy-and-patch approach with and is disabled by default. The JIT uses approximately 10-20% more memory than the standard interpreter, with initial benchmarks showing modest speedups of up to 9% in some workloads, though often comparable to or slightly slower than the non-JIT interpreter; the goal is at least 5% overall improvement as progresses, targeting further gains in loop-intensive code. Developers commonly use built-in tools like cProfile for detailed deterministic of execution times and call counts in long-running programs, and timeit for precise of small code snippets to measure and validate these optimizations.

Key Limitations

One of the primary limitations of CPython is the (GIL), which serializes access to Python objects, preventing true parallel execution of CPU-bound threads on multi-core systems. This restriction means that multi-threaded programs cannot fully utilize multiple processors for compute-intensive tasks, often resulting in performance that scales no better than single-threaded execution despite using multiple threads. Workarounds such as incur significant overhead due to and memory duplication, making them less efficient for shared-data scenarios compared to native multi-threading in other languages. CPython's C extension modules face binary compatibility challenges across Python versions, as the C API evolves and can introduce breaking changes in minor releases, requiring recompilation for each new version. Prior to Python 3.2, the ABI was not stable, leading to frequent incompatibilities that disrupted extension deployment; although a stable ABI was introduced in PEP 384 to mitigate this from 3.2 onward, it excludes certain low-level functions and still demands careful versioning for full compatibility. Recent efforts like PEP 809 propose further ABI stability for future releases starting with 3.15, but existing extensions may still encounter issues with free-threaded builds or platform-specific linkers. The interpreter's startup time in CPython is notably slow for short-running scripts or command-line tools, often taking 8 to 100 milliseconds due to initialization of the , loading of core modules, and site-specific configurations like .pth files. This cold-start becomes a in serverless environments or frequent invocations, where it can dominate total execution time for simple programs. Efforts to optimize this, such as pre-warming the VM or lazy imports, have been proposed but remain partial solutions without fully addressing the underlying initialization overhead. CPython's resource demands, including its full and dynamic nature, make it unsuitable for resource-constrained mobile or devices, where memory usage can exceed available on microcontrollers and power efficiency is critical. In such environments, alternatives like provide a lightweight subset optimized for and low-power hardware, avoiding CPython's high footprint while retaining core syntax. This limitation has driven adoption of specialized implementations for applications, as CPython requires significant adaptations or stripping that compromise its standard features. To address the GIL's drawbacks, Python 3.14 introduced official support for free-threaded builds via PEP 703, allowing users to disable the GIL at compile or for better multi-core utilization in code, though it remains opt-in due to potential compatibility breaks with existing C extensions. As of late 2025, this mode enhances performance for multi-threaded workloads by up to 2x on multi-core systems but introduces a 10-20% overhead in single-threaded scenarios and requires ongoing stability improvements.

References

  1. [1]
    4. Execution model — Python 3.14.0 documentation
    Structure of a program: A Python program is constructed from code blocks. A block is a piece of Python program text that is executed as a unit.4. Execution Model · 4.1. Structure Of A Program · 4.2. Naming And Binding
  2. [2]
  3. [3]
    dis — Disassembler for Python bytecode — Python 3.14.0 ...
    The dis module supports the analysis of CPython bytecode by disassembling it. The CPython bytecode which this module takes as an input is defined in the file ...Missing: process | Show results with:process
  4. [4]
  5. [5]
    The Very High Level Layer — Python 3.14.0 documentation
    Parse and compile the Python source code in str, returning the resulting code object. The start symbol is given by start; this can be used to constrain the ...Missing: CPython | Show results with:CPython<|control11|><|separator|>
  6. [6]
    PEP 703 – Making the Global Interpreter Lock Optional in CPython
    Jan 9, 2023 · CPython's global interpreter lock (“GIL”) prevents multiple threads from executing Python code at the same time. The GIL is an obstacle to ...
  7. [7]
    What's New In Python 3.12 — Python 3.14.0 documentation
    PEP 684 introduces a per-interpreter GIL, so that sub-interpreters may now be created with a unique GIL per interpreter. This allows Python programs to take ...
  8. [8]
    What's New In Python 3.13 — Python 3.14.0 documentation
    CPython now has experimental support for running in a free-threaded mode, with the global interpreter lock (GIL) disabled. This is an experimental feature and ...
  9. [9]
    The Making of Python - Artima
    Jan 13, 2003 · In the late 1980s, Van Rossum began work on Python at the National Research Institute for Mathematics and Computer Science in the Netherlands ...Missing: CPython | Show results with:CPython
  10. [10]
    History and License — Python 3.14.0 documentation
    Python was created in the early 1990s by Guido van Rossum at Stichting Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands as a successor of a ...History And License · History Of The Software · Licenses And...
  11. [11]
    General Python FAQ — Python 3.14.0 documentation
    When he began implementing Python, Guido van Rossum was also reading the published scripts from “Monty Python's Flying Circus”, a BBC comedy series from the ...General Python Faq · General Information · Python In The Real World
  12. [12]
    A Brief Timeline of Python
    Jan 20, 2009 · Release Date, Version ; December, 1989, Implementation started ; 1990, Internal releases at CWI ; February 20, 1991, 0.9.0 (released to alt.sources).
  13. [13]
    Python Software Foundation: Press Release 6-Mar-2001
    LONG BEACH, CA March 6, 2001 - At the ninth Python Conference, Guido van Rossum announced the launch of the Python Software Foundation (PSF).
  14. [14]
    Python Programming/Version history - Wikibooks, open books for an ...
    The Python version release dates are as follows: Ancient release ... Python 1.0 - 26 Jan 1994; Python 1.1 - 11 October 1994; Python 1.2 - 13 April ...
  15. [15]
    Releases | Python.org
    Python 1.6.1 (September 2000) · Python 1.5.2 (April 1999) · Older source releases (1.0.1 - 1.6) · Ancient source releases (pre 1.0) · Python 1.5 binaries · Python ...Python 1.5.2 · Python 1.6.1 · Ancient Releases · Of /download/releases...Missing: major | Show results with:major
  16. [16]
    What's New in Python 2.0 — Python 3.14.0 documentation
    A new release of Python, version 2.0, was released on October 16, 2000. This article covers the exciting new features in 2.0, highlights some other useful ...
  17. [17]
    Sunsetting Python 2 | Python.org
    As of January 1st, 2020 no new bug reports, fixes, or changes will be made to Python 2, and Python 2 is no longer supported. A few changes were made between ...
  18. [18]
    What's New In Python 3.0 — Python 3.14.0 documentation
    Python 3.0, also known as “Python 3000” or “Py3K”, is the first ever intentionally backwards incompatible Python release. Python 3.0 was released on December 3, ...What's New In Python 3.0 · Common Stumbling Blocks · Changes Already Present In...
  19. [19]
    What's New In Python 3.5 — Python 3.14.0 documentation
    Python 3.5 introduces coroutines with async/await, a matrix multiplication operator, type hints, and improved `collections.OrderedDict` and `os.scandir()`.
  20. [20]
    PEP 484 – Type Hints - Python Enhancement Proposals
    This PEP aims to provide a standard syntax for type annotations, opening up Python code to easier static analysis and refactoring.
  21. [21]
    PEP 492 – Coroutines with async and await syntax | peps.python.org
    async and await names will be softly deprecated in CPython 3.5 and 3.6. In 3.7 we will transform them to proper keywords. Making async and await proper ...Missing: hints | Show results with:hints
  22. [22]
    What's New In Python 3.10 — Python 3.14.0 documentation
    Pattern matching enables programs to extract information from complex data types, branch on the structure of data, and apply specific actions based on different ...
  23. [23]
    What's New In Python 3.11 — Python 3.14.0 documentation
    PEP 659 is one of the key parts of the Faster CPython project. The general idea is that while Python is a dynamic language, most code has regions where objects ...
  24. [24]
    PEP 659 – Specializing Adaptive Interpreter | peps.python.org
    Apr 13, 2021 · This PEP proposes using a specializing, adaptive interpreter that specializes code aggressively, but over a very small region, and is able to adjust to mis- ...Missing: release | Show results with:release
  25. [25]
    Python Release Python 3.12.0
    Oct 2, 2023 · Support for isolated subinterpreters with separate Global Interpreter Locks (PEP 684). Even more improved error messages. More exceptions ...New Features · Deprecations · And Now For Something...Missing: GIL | Show results with:GIL
  26. [26]
    What's new in Python 3.14 — Python 3.14.0 documentation
    This article explains the new features in Python 3.14, compared to 3.13. Python 3.14 was released on 7 October 2025. For full details, see the changelog. See ...PEP 779 · PEP 750 – Template Strings · PEP 765 – Disallow return... · Annotationlib
  27. [27]
    PEP 101 – Doing Python Releases 101 | peps.python.org
    Oct 22, 2025 · This PEP attempts to collect, in one place, all the steps needed to make a Python release. Most of the steps are now automated or guided by automation.
  28. [28]
    Download Python | Python.org
    Looking for a specific release? ; Python 3.9.25 Oct. 31, 2025 ; Python 3.13.9 Oct. 14, 2025 ; Python 3.11.14 Oct. 9, 2025 ; Python 3.10.19 Oct. 9, 2025 ; Python 3.9.Python Source Releases · Python Releases for Windows · Releases · Python 3.13.5
  29. [29]
    Python Setup and Usage
    ### Summary of Installation Methods from https://docs.python.org/3/using/index.html
  30. [30]
    4. Using Python on Windows
    ### Summary: Python Launcher for Windows Version Management
  31. [31]
    pyenv/pyenv: Simple Python version management - GitHub
    pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one ...PyEnv Installer · Pyenv-virtualenv · Pyenv-Update · PyenvMissing: launcher | Show results with:launcher
  32. [32]
    venv — Creation of virtual environments ... - Python documentation
    Bootstrapping · PEP 405Missing: launcher Unix
  33. [33]
    Ubuntu – Details of package python3 in noble
    ### Summary of Python3 Package in Ubuntu Noble (24.04 LTS)
  34. [34]
    [f41] Changes in Fedora 41 For Developers
    ### Summary: Default Python Version in Fedora 41
  35. [35]
    Chapter 2. Installing and using Python | Red Hat Enterprise Linux | 9
    In RHEL 9, Python 3.9 is the default Python implementation. Since RHEL 9.2, Python 3.11 is available as the python3.11 package suite, and since RHEL 9.4, Python ...
  36. [36]
    Red Hat and Python — Victor Stinner's Notes 1.0 documentation
    Apr 23, 2018 · In RHEL 8, Python 2.7 and Python 3.8 have shorter support than RHEL, they are shipped as app streams, not in the base operating system.
  37. [37]
    Get started using Python on Windows for beginners - Microsoft Learn
    Jul 4, 2025 · Install Python 3 using Microsoft Store - select the most recent version available and then "Download". Installing Python via the Microsoft Store ...
  38. [38]
    Why is Python included in Xcode Command Line Tools?
    Jun 6, 2024 · When you install Xcode Command Line Tools, Apple includes Python 3.9.6. I'm wondering why it is included. Is it a dependency for any Apple or third-party ...Xcode: Cannot select python3 as executable - Apple CommunitiesDo I have Python and if so do I need it? - Apple Support CommunitiesMore results from discussions.apple.com
  39. [39]
    Python - Homebrew Documentation
    Homebrew will install the necessary Python 3 version that is needed to make your packages work. ... The executables do not always point to the latest Python 3 ...Homebrew Documentation · Python for Formula Authors · Formulae Versions
  40. [40]
    Python Security | Python.org
    A Python Security Response Team (PSRT) has been formed that does triage on all reported vulnerabilities and works to resolve them.<|separator|>
  41. [41]
    C API Stability — Python 3.14.0 documentation
    The Stable ABI prevents ABI issues, like linker errors due to missing symbols or data corruption due to changes in structure layouts or function signatures.
  42. [42]
    Frequently Asked Questions - PyPy documentation
    PyPy is a reimplementation of Python in Python, using the RPython translation toolchain. It is almost a drop-in replacement for CPython, but extension module ...Does Pypy Have A Gil? Why? · How Fast Is Pypy? · Can I Use Pypy's Translation...
  43. [43]
    PyPy Speed
    - **Average Speedup of PyPy over CPython:**
  44. [44]
    Numba: A High Performance Python Compiler
    Numba: A High Performance Python Compiler. Numba is an open source JIT compiler that translates a subset of Python and NumPy code into fast machine code.
  45. [45]
    Applying a Tracing JIT to an Interpreter - PyPy
    Mar 2, 2009 · The goal of the post is to give an understanding of how PyPy's JIT generator is going to work. To do this, I will look at what happens when you ...Missing: differences | Show results with:differences
  46. [46]
    Multicore Programming in PyPy and CPython
    Aug 9, 2012 · We often hear about people wanting a version of Python running without the Global Interpreter Lock (GIL): a "GIL-less Python". But what we ...Gil-Less Versus Ame · Pypy And Stm/ame · Cpython And Htm
  47. [47]
    Jython: Home
    The Jython project provides implementations of Python in Java, providing to Python the benefits of running on the JVM and access to classes written in Java.Downloads · Jython 3 Roadmap · Jython-Specific Features · Installation
  48. [48]
    IronPython .NET Integration
    IronPython does this by exposing .NET concepts as Python entities. Existing Python syntax and new Python libraries (like clr ) are used to make .NET features ...
  49. [49]
    GraalPy - Documentation - GraalVM
    The project uses the GraalVM Polyglot API with additional features to manage Python virtual environments and integrate Python package dependencies with a Maven ...
  50. [50]
  51. [51]
    IronPython.net /
    IronPython is an open-source implementation of the Python programming language which is tightly integrated with .NET.Download · Documentation · The release announcement · What's new in 2.7.3
  52. [52]
    IronLanguages/ironpython3: Implementation of Python 3.x ... - GitHub
    IronPython is an open-source implementation of the Python programming language that is tightly integrated with .NET. IronPython can use .NET and Python ...
  53. [53]
    GraalPy – A high-performance embeddable Python 3 runtime for Java
    GraalPy is a Python 3.11 compliant runtime. It has first-class support for embedding in Java and can turn Python applications into fast, standalone binaries.
  54. [54]
    Difference between various Implementations of Python
    Sep 13, 2023 · Jython is slow as compared to Cpython and lacks compatibility with CPython libraries. ... IronPython performs better in Python programs ...
  55. [55]
    Representation-based just-in-time specialization and the psyco ...
    In the present paper, the Psyco prototype for the Python language is presented. It introduces two novel techniques. The first is just-in-time specialization, or ...
  56. [56]
    PEP 3146 – Merging Unladen Swallow into CPython | peps.python.org
    Jan 1, 2010 · Unladen Swallow is a Google-sponsored branch of CPython, initiated to improve the performance of Google's numerous Python libraries, tools and ...
  57. [57]
    Faster Python: Mark Shannon, author of newly endorsed plan ...
    May 19, 2021 · Python creator Guido van Rossum last week introduced a project to make CPython, the official implementation, five times faster in four years.
  58. [58]
    PEP 744 – JIT Compilation | peps.python.org
    ### Summary of Experimental JIT in Python 3.13 (PEP 744)
  59. [59]
  60. [60]
    The Python Profilers — Python 3.14.0 documentation
    cProfile and profile provide deterministic profiling of Python programs. A profile is a set of statistics that describes how often and for how long various ...The Python Profilers · Profile And Cprofile Module... · The Stats Class
  61. [61]
    What Is the Python Global Interpreter Lock (GIL)?
    The Python Global Interpreter Lock or GIL, in simple words, is a mutex (or a lock) that allows only one thread to hold the control of the Python interpreter.What Problem Did the GIL... · The Impact on Multi-Threaded...
  62. [62]
    PEP 384 – Defining a Stable ABI - Python Enhancement Proposals
    May 17, 2009 · Currently, each feature release introduces a new name for the Python DLL on Windows, and may cause incompatibilities for extension modules ...Specification · Type Objects · Excluded Functions
  63. [63]
    PEP 809 – Stable ABI for the Future | peps.python.org
    Sep 19, 2025 · This PEP proposes a Stable ABI that will be compatible with all variants of 3.15 and later, allowing package developers to produce a single ...Specification · Abi Stability · Interfaces Api
  64. [64]
    Reducing Python's startup time - LWN.net
    Aug 16, 2017 · Startup time can dominate the execution time of command-line programs written in Python, especially if they import a lot of other modules.Missing: initialization | Show results with:initialization
  65. [65]
    MicroPython - Python for microcontrollers
    MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard libraryMicroPython downloads · MicroPython Live · MicroPython pyboard feature... · StoreMissing: mobile | Show results with:mobile
  66. [66]
    MicroPython: An Intro to Programming Hardware in Python
    In this tutorial, you'll learn about: The history of MicroPython; The differences between MicroPython and other programming languages; The hardware you'll use ...