Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does PyPy have to offer over CPython, Jython, and IronPython?

From what I have seen and read on blogs, PyPy is a very ambitious project. What are some advantages it will bring to the table over its siblings (CPython, Jython, and IronPython)? Is it speed, cross-platform compatibility (including mobile platforms), the ability to use c-extensions without the GIL, or is this more of a technical exercise on what can be done?

like image 937
Jason Christa Avatar asked Mar 06 '09 16:03

Jason Christa


People also ask

How is CPython Jython different from IronPython?

Jython and IronPython are different python implementations, both of which run on different virtual machines. Jython runs on the JVM (Java virtual machine) and IronPython runs on the CLR (common language runtime).

What is Jython IronPython PyPy?

Jython, IronPython and PyPy are the current "other" implementations of the Python programming language; these are implemented in Java, C# and RPython (a subset of Python), respectively. Jython compiles your Python code to Java bytecode, so your Python code can run on the JVM.

What is the difference between CPython and PyPy?

PyPy vs. PyPy is a drop-in replacement for the stock Python interpreter, CPython. Whereas CPython compiles Python to intermediate bytecode that is then interpreted by a virtual machine, PyPy uses just-in-time (JIT) compilation to translate Python code into machine-native assembly language.

Is PyPy better than CPython?

The PyPy implementation is 16 times faster than the CPython implementation and about 3 times slower than the Cython implementation. This is fascinating since PyPy is running the exact same pure Python code as the CPython implementation – it shows the power of PyPy's JIT compiler.


1 Answers

PyPy is really two projects:

  • An interpreter compiler toolchain allowing you to write interpreters in RPython (a static subset of Python) and have cross-platform interpreters compiled standalone, for the JVM, for .NET (etc)
  • An implementation of Python in RPython

These two projects allow for many things.

  • Maintaining Python in Python is much easier than maintaining it in C
  • From a single codebase you can generate Python interpreters that run on the JVM, .NET and standalone - rather than having multiple slightly incompatible implementations
  • Part of the compiler toolchain includes an experimental JIT generator (now in its fifth incarnation and starting to work really well) - the goal is for a JITed PyPy to run much faster than CPython
  • It is much easier to experiment with fundamental language features - like removing the GIL, better garbage collection, integrating stackless and so on

So there are really a lot of reasons for PyPy to be exciting, and it is finally starting to live up to all its promises.

like image 123
fuzzyman Avatar answered Sep 30 '22 17:09

fuzzyman