¿Qué tiene que ofrecer PyPy sobre CPython, Jython y IronPython?

Por lo que he visto y leído en los blogs, PyPy es un proyecto muy ambicioso. ¿Cuáles son algunas de las ventajas que traerá a la mesa sobre sus hermanos (CPython, Jython y IronPython)? ¿Es la velocidad, la compatibilidad multiplataforma (incluidas las plataformas móviles), la capacidad de usar las extensiones C sin la GIL, o es más bien un ejercicio técnico sobre lo que se puede hacer?

PyPy es en realidad dos proyectos:

  • Una cadena de herramientas de comstackción de intérpretes que le permite escribir intérpretes en RPython (un subconjunto estático de Python) y tener intérpretes multiplataforma comstackdos de forma independiente, para la JVM, para .NET (etc.)
  • Una implementación de Python en RPython

Estos dos proyectos permiten muchas cosas.

  • Mantener Python en Python es mucho más fácil que mantenerlo en C
  • Desde una base de código única, puede generar intérpretes de Python que se ejecutan en la JVM, .NET e independiente, en lugar de tener múltiples implementaciones ligeramente incompatibles.
  • Parte de la cadena de herramientas del comstackdor incluye un generador JIT experimental (ahora en su quinta encarnación y comienza a funcionar realmente bien): el objective es que un PyPy JIT funcione mucho más rápido que CPython
  • Es mucho más fácil experimentar con funciones de lenguaje fundamentales, como eliminar GIL, mejorar la recolección de basura, integrar sin astackr, etc.

Así que hay muchas razones para que PyPy sea emocionante, y finalmente está empezando a cumplir todas sus promesas.

Este es un enlace a la presentación que uno de los autores de PyPy dio en PyCon 2009. Es muy informativo.

La característica más importante es, por supuesto, el comstackdor JIT. En CPython, los archivos se comstackn a bytecode ( .pyc ) u bytecode optimizado ( .pyo ) y luego se interpretan. Con PyPy serán comstackdos a código nativo. PyPy también incluye parches de Python sin stack , incluidas sus características impresionantes (serialización tasklet, hilos de luz, etc.)

En caso de que Python obtenga un JIT real, creo que va a ser tan rápido como cualquier otra implementación.

La ventaja es que es mucho más fácil implementar nuevas funciones. Uno puede ver esto hoy observando la biblioteca. A menudo, los módulos se escriben primero en Python y luego se traducen a C.

compatibilidad multiplataforma