- CPython is the reference implementation of the Python Interpreter, the Python Programming Language and the Python Standard Library and the associated tools.
- While the majority of the Python Standard Library is developed using Python, portions of it and the Python interpreter are developed using C.
- CPython is the implementation available for download from Python.org.
- Any new feature as it is implemented through the Python Enhancement Proposal (The PEP process) is generally implemented in the CPython first.
Development, Protection, Distribution and Licensing:
- CPython is developed and distributed by the Python Software Foundation.
- Python Software Foundation also manages the Intellectual Property Rights and the various processes of the Python Community.
- CPython is released under the GPL compatible open source license.
Contributing to Python Development:
- The Python Developer’s guide, provided by the Python Software Foundation details on how to contribute to the Python Programming language and the associated libraries.
- The Python Software Foundation has given the github repositories related to the Python development including the CPython at: Python Repositories.
The Global Interpreter Lock and CPython:
- One major issue associated with the CPython implementation is that the CPython uses Global Interpreter Lock(GIL), which prevents execution of Python byte code from multiple threads of a Python Program.
- When a Python thread is blocked for I/O or while performing long running operations like image processing and number crunching, it is taken out by the CPython interpreter and the thread will have to wait for the GIL again.
- A multithreaded Python program will not be able to effectively make use of the multiple cores present in a system due to the Global Interpreter Lock - GIL.
Various Python implementations:
CPython being the reference implementation of the Python Programming Language, there are various implementations of the language developed with specific goals in mind. The variants include,
IronPython: IronPython is developed and targeted for the .net Platform. IronPython for the most part is developed in C#.
Jython: Jython is developed for the Java platform. Jython is developed using the Java Programming Language.
While these implementations of Python complement their targetted platform(Java, .NET), the release cycle of these implementations typically lag behind the CPython implementation release cycles. They also differ from CPython on certain aspects.