Pregunta

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?

¿Fue útil?

Solución

PyPy es en realidad dos proyectos:

  • Una cadena de herramientas de compilación de intérpretes que le permite escribir intérpretes en RPython (un subconjunto estático de Python) y tener intérpretes multiplataforma compilados 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 compilador incluye un generador JIT experimental (ahora en su quinta encarnación y comienza a funcionar realmente bien): el objetivo es que un PyPy de JIT ejecute 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 apilar, etc.

En realidad, hay muchas razones para que PyPy sea emocionante, y finalmente está comenzando a cumplir todas sus promesas.

Otros consejos

La característica más importante es, por supuesto, el compilador JIT. En CPython, los archivos se compilan a bytecode ( .pyc ) u bytecode optimizado ( .pyo ) y luego se interpretan. Con PyPy serán compilados a código nativo. PyPy también incluye los parches Python sin pila , incluido su impresionante features (serialización de 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top