buena cosa a tener en cuenta cuando se habla del proyecto PyPy es que su objetivo es proporcionar en realidad dos entregas: En primer lugar es generador de compilador JIT . Sí, generador, lo que significa que están implementando un marco para escribir implementaciones de lenguajes de programación altamente dinámicos, como Python. El segundo es la prueba real de este marco, y es la implementación del intérprete PyPy Python .
Ahora, hay respuestas múltiples por las que PyPy es tan especial: el desarrollo del proyecto se ejecuta desde 2004, comenzó como un proyecto de investigación en lugar de una empresa, vuelve a implementar Python en Python, implementa un compilador JIT en Python y puede traducir RPython (código de Python con algunas limitaciones para que el marco pueda traducir ese código a C) al compilado binario.
La versión actual de PyPy es 99% compatible con CPython versión 2.5, y puede ejecutar Django, Twisted y muchos otros programas de Python. Solía haber una limitación de no poder ejecutar las extensiones existentes de CPython C, pero eso también se está abordando con el módulo cpyext en PyPy. La compatibilidad con C API es posible y hasta cierto punto ya está implementada. JIT también es muy real, mira esta comparación de Pystone.
Con CPython:
Python 2.5.5 (r255:77872, Apr 21 2010, 08:44:16)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import pystone
>>> pystone.main(1000000)
Pystone(1.1) time for 1000000 passes = 12.28
This machine benchmarks at 81433.2 pystones/second
Con PyPy:
Python 2.5.2 (75632, Jun 28 2010, 14:03:25)
[PyPy 1.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``A radioactive cat has 18
half-lives.''
>>>> from test import pystone
>>>> pystone.main(1000000)
Pystone(1.1) time for 1000000 passes = 1.50009
This machine benchmarks at 666625 pystones/second
para que pueda obtener un aumento de velocidad de casi 10 veces sólo mediante el uso PyPy en algunos cálculos!
Por lo tanto, como el proyecto PyPy está madurando lentamente y ofrece algunas ventajas, está atrayendo más el interés de las personas que tratan de abordar los problemas de velocidad en su código. Una alternativa a PyPy es unladden swallow (un proyecto de Google) que tiene como objetivo acelerar la implementación de CPython utilizando las capacidades JIT de LLVM, pero el progreso en unladden swallow se ralentizó porque el desarrollador tuvo que lidiar con errores en LLVM.
Por lo tanto, para resumir, supongo que PyPy se considera el futuro de Python porque separa la especificación del lenguaje de la implementación de VM. Características introducidas en, por ej. sin apilar Python, podría implementarse en PyPy con muy poco esfuerzo adicional, ya que solo está alterando la especificación del lenguaje y mantiene el mismo código compartido. Menos código, menos errores, menos fusión, menos esfuerzo.
Y al escribir, por ejemplo, una nueva implementación de shell bash en RPython, puede obtener un compilador JIT de forma gratuita y acelerar muchos guiones de shell linux sin aprender realmente ningún conocimiento pesado de JIT.
¿Qué se preocupa? – fmark
En realidad, la palabra es "provocativa", que creo que es Manglish para "provocativo". – martineau
Debo admitir que estoy un poco confuso –