CPython

From Wikipedia, the free encyclopedia

CPython
Developed by Python Software Foundation
Latest release 2.5.2 / February 22, 2008
Platform Cross-platform
Genre Python Programming Language Interpreter
License Python Software Foundation License
Website Python.org

CPython is the default, most-widely used implementation of the Python programming language. It is written in C. In addition to CPython, there are two other production-quality Python implementations: Jython, written in Java, and IronPython, which is written for the Common Language Runtime, as well as several experimental implementations.[1] The backronym Classic Python has been suggested as another meaning for the 'C'.

CPython is a bytecode interpreter. It has a foreign function interface with several languages including C, in which one must explicitly write bindings in a language other than Python.

Contents

[edit] Supported platforms

Unix-like

Desktop OSes

Special and embedded

Mainframe and other

[edit] Previously supported platforms

PEP 11 lists platforms which are not supported in CPython by Python Software Foundation. These platforms can still be supported by external ports. See below.

  • DOS (unsupported since 2.0)
  • IRIX 4 (unsupported since 2.3)
  • Mac OS 9 (unsupported since 2.4)
  • Minix (unsupported since 2.3)

[edit] External ports

These are ports not integrated to Python Software Foundation's official version of CPython, with links to its main development site. Ports often include additional modules for platform-specific functionalities, like graphics and sound API for PSP and SMS and camera API for S60.

[edit] Concurrency Issues

The main issue of using CPython on a multiprocessor computer is the presence of a Global Interpreter Lock on each CPython interpreter process, which effectively disables concurrent Python threads within one process[1]. To be truly concurrent in multiprocessor environment, separate CPython interpreter processes have to be run, which makes establishing communication between them a difficult task. There is constant discussion whether to remove the GIL from CPython[2].

[edit] Notes

  1. ^  Martelli, Alex (2006). Python in a Nutshell, 2nd edition, O'Reilly, 5–7. ISBN 0-596-10046-9. 

[edit] References

  1. ^ Python/C API Reference Manual: Thread State and the Global Interpreter Lock
  2. ^ Python Library and Extension FAQ: Can't we get rid of the Global Interpreter Lock?