Differences between revisions 24 and 25
Revision 24 as of 2009-06-22 15:57:25
Size: 3064
Editor: PaulBoddie
Comment: Added Genie.
Revision 25 as of 2009-06-24 10:25:21
Size: 3599
Editor: PaulBoddie
Comment: Added Wirbel, explanatory notes. Re-ordered sections and changed heading. Moved distributions to the appropriate page.
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
 * ActivePython - a CPython variant
 * [[IPython]] and its [[IPyKit]] variant
Line 19: Line 17:
 * IronPython - Python in C# for the Common Language Runtime (CLR/.NET)  * IronPython - Python in C# for the Common Language Runtime (CLR/.NET) and the [[http://fepy.sourceforge.net/|FePy]] project's IronPython Community Edition (IPCE)
Line 26: Line 24:
== Closely related but arguably distinct languages == == Compilers ==
Line 28: Line 26:
 * Boo These compilers usually implement something close to Python, although some compilers may impose restrictions that alter the nature of the language:

 * [[http://members.verizon.net/~olsongt/compyler/index.html|Compyler]] - an attempt to "transliterate the bytecode into x86 assembly"
 * [[http://cython.org/|Cython]] - an optimising Python-to-C compiler, CPython extension module generator, and wrapper language for binding external libraries
 * [[http://code.google.com/p/shedskin/|Shed Skin]] - a Python-to-C++ compiler
 * [[http://code.google.com/p/unpython/|unPython]] - a Python to C compiler using type annotations

== Similar but Distinct Languages ==

These languages don't attempt to be directly compatible even with a subset of Python, choosing to provide their own set of features:

 * [[http://boo.codehaus.org/|Boo]]
Line 34: Line 43:

== Compilers ==

 * [[http://members.verizon.net/~olsongt/compyler/index.html|Compyler]] - an attempt to "transliterate the bytecode into x86 assembly"
 * [[http://cython.org/|Cython]] - an optimising Python-to-C compiler, CPython extension module generator, and wrapper language for binding external libraries
 * [[http://code.google.com/p/shedskin/|Shed Skin]] - a Python-to-C++ compiler
 * [[http://code.google.com/p/unpython/|unPython]] - a Python to C compiler using type annotations
 * [[http://mathias-kettner.de/wirbel.html|Wirbel]] - a compilable language with similar restrictions to Shed Skin (statically typed names, lists cannot mix elements of different types) and PyMite (no user-defined classes)

Python Implementations

An "implementation" of Python should be taken to mean a program or environment which provides support for the execution of programs written in the Python language, or some broadly similar dialect of the language.

There have been and are several distinct software packages providing of what we all recognize as Python, although some of those are more like distributions or variants of some existing implementation than a completely new implementation of the language.

CPython Variants

  • CPython - the reference Python implementation

  • Tiny Python - not to be confused with tinypy, below

  • unladen-swallow - "an optimization branch of CPython, intended to be fully compatible and significantly faster"

  • wpython - a re-implementation of CPython using "wordcode" instead of bytecode

Other Implementations

  • CLPython - Python in Common Lisp

  • IronPython - Python in C# for the Common Language Runtime (CLR/.NET) and the FePy project's IronPython Community Edition (IPCE)

  • Jython - Python in Java for the Java platform

  • PyMite - Python for embedded devices

  • PyPy - Python in Python, targeting several environments

  • SNAPpy - "a subset of the Python language that has been optimized for use in low-power embedded devices" (apparently proprietary)

  • tinypy - a minimalist implementation of python in 64k of code

Compilers

These compilers usually implement something close to Python, although some compilers may impose restrictions that alter the nature of the language:

  • Compyler - an attempt to "transliterate the bytecode into x86 assembly"

  • Cython - an optimising Python-to-C compiler, CPython extension module generator, and wrapper language for binding external libraries

  • Shed Skin - a Python-to-C++ compiler

  • unPython - a Python to C compiler using type annotations

Similar but Distinct Languages

These languages don't attempt to be directly compatible even with a subset of Python, choosing to provide their own set of features:

  • Boo

  • Cobra

  • Converge - inspired by Python, Haskell, Icon and Smalltalk, provides macros which can be evaluated at compile-time

  • Delight - based on the D programming language

  • Genie - based on the same foundations (Gtk+, GNOME) as the Vala programming language

  • Serpent

  • Wirbel - a compilable language with similar restrictions to Shed Skin (statically typed names, lists cannot mix elements of different types) and PyMite (no user-defined classes)

Topic Guides

This page aims to replace one formerly maintained as "Cameron Laird's personal notes on varieties of Python implementation". Also of interest will be IntegratingPythonWithOtherLanguages, which, among other variants, mentions embeddings of Python in other languages.

PythonImplementations (last edited 2023-06-24 04:21:27 by MaxBernstein)

Unable to edit the page? See the FrontPage for instructions.