Por lo que he visto y leído en blogs, PyPy es un proyecto muy ambicioso. ¿Cuáles son algunas 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 c-extensiones sin el GIL, o se trata más de un ejercicio técnico sobre lo que se puede hacer?¿Qué tiene PyPy para ofrecer sobre CPython, Jython e IronPython?
Respuesta
PyPy es en realidad dos proyectos:
- Un intérprete compilador toolchain que le permite escribir intérpretes en RPython (un subconjunto estático de Python) y compilar intérpretes multiplataforma d independiente, para la JVM, para .NET (etc)
- Una implementación de Python en RPython
Estos dos proyectos permiten muchas cosas.
- El mantenimiento de Python en Python es mucho más fácil de mantener en C
- Desde una única base de código se puede generar intérpretes de Python que se ejecutan en la máquina virtual Java, .NET y autónomo - en lugar de tener múltiples implementaciones ligeramente incompatibles
- Parte de la cadena de herramientas del compilador JIT incluye un generador experimental (ahora en su quinta encarnación y empezar a trabajar muy bien) - el objetivo es un JITed PyPy para funcionar mucho más rápido que CPython
- es mu ch más fácil de experimentar con características fundamentales del lenguaje - como la eliminación de la GIL, una mejor recolección de basura, sin pérdida de velocidad integración y así sucesivamente
por lo que hay realmente un montón de razones para PyPy a ser emocionante, y finalmente está comenzando a vivir hasta todas sus promesas.
Agregaría uno a esta excelente lista: no es necesario obtener nuevas versiones de sus bibliotecas de Python (es decir, extensiones C) cada vez que se mueve a una nueva versión .X. Qué gran victoria será. – Brandon
¿Cómo PyPy mejorará la situación con las extensiones C? De hecho, las extensiones C son uno de los principales inconvenientes (actualmente) con PyPy: no funcionan en absoluto a menos que sean específicamente portados. – fuzzyman
Con la velocidad adicional del PyPy JIT (particularmente si pueden aplicarlo de manera efectiva al código 'ctypes'), debe haber muchas menos extensiones de C en la mezcla en primer lugar. – ncoghlan
La característica más importante es, por supuesto, el compilador JIT. En CPython, los archivos se compilan en bytecode (.pyc
) u optimizado bytecode (.pyo
) y luego se interpretan. Con PyPy se compilarán con código nativo. PyPy también incluye Stackless Python parches, incluyendo sus impresionantes features (serialización tasklet, hilos de luz, etc.)
En caso de que Python consigue un verdadero JIT Creo que va a ser tan rápido como cualquier otra aplicación.
La ventaja es que es mucho más fácil implementar nuevas funciones. Uno puede ver esto hoy al observar la biblioteca. A menudo, los módulos están escritos en Python primero y luego traducidos a C
compatibilidad entre plataformas
Sí
Este es un link a la presentación uno de los autores PyPy dio en PyCon 2009. Es muy informativo.
Consulte también el torrente de conversaciones de EuroPython 2012, algunas de las cuales se realizaron en PyPy (y stackless, que ahora es parte de PyPy) –
- 1. CPython vs. Jython vs. IronPython para desarrollo de GUI multiplataforma
- 2. ¿Los scripts CPython, IronPython, Jython son compatibles entre sí?
- 3. ¿Cuáles son algunas estrategias para escribir código python que funciona en CPython, Jython e IronPython
- 4. compatibilidad entre CPython e IronPython cPickle
- 5. PyPy: ¿cómo puede vencer a CPython?
- 6. IronPython ScriptRuntime equivalente a CPython PYTHONPATH
- 7. ¿Qué tiene WPF que ofrecer aún en Silverlight 4?
- 8. IronPython para pruebas unitarias sobre C#
- 9. PyPy - SWIG - QuickFix mix
- 10. Haciendo el caso de IronRuby e IronPython
- 11. Groovy ventajas sobre Jython o Jruby?
- 12. ¿Qué se puede hacer en Cpython que no se puede hacer en IronPython?
- 13. instalando zeromq bajo pypy
- 14. Integración de C#, F #, IronPython e IronRuby
- 15. ¿Qué ocurre cuando importamos un módulo en ironpython?
- 16. Stackless en PyPy y PyPy + greenlet - diferencias
- 17. ¿Cuál es la diferencia entre Python vs Jython vs IronPython vs wxPython?
- 18. Compatibilidad con IronPython 3
- 19. ¿Cuál es la forma más sencilla de ofrecer/consumir servicios web en jython?
- 20. Unicode, expresiones regulares y PyPy
- 21. ¿Por qué CPython no usa `sphinx.autodoc` para la biblioteca estándar?
- 22. Cómo usar IPython con IronPython
- 23. ¿Por qué PyPy se traduce tan lento?
- 24. CPython es un intérprete de bytecode?
- 25. PyPy: ¿De qué se trata todo esto?
- 26. ¿De qué "clase" de Python para empezar?
- 27. Python/jython coexistiendo en virtualenv
- 28. ¿Puedo detectar si mi código se está ejecutando en cPython o Jython?
- 29. Biblioteca de GUI para PyPy
- 30. ¿Qué generador de analizadores usa CPython?
FWIW ya puede usar c-extensions en CPython sin GIL. Es el código Python normal (cuando se ejecuta con hilos) lo que realmente sufre de GIL. – fuzzyman