Ответ 1
Хорошо знать, когда речь идет о проекте PyPy, заключается в том, что он нацелен на фактическое предоставление двух результатов: во-первых, это генератор компилятора JIT. Да, генератор, что означает, что они реализуют структуру для написания реализаций высокодинамичных языков программирования, таких как Python. Второй - фактический тест этой структуры и является реализацией интерпретатора PyPy Python.
Теперь есть несколько ответов, почему PyPy является настолько особенным: разработка проекта выполняется с 2004 года, начатая как исследовательский проект, а не из компании, reimplements Python в Python, реализует JIT-компилятор в Python и может переводить RPython (Код Python с некоторыми ограничениями для того, чтобы инфраструктура могла перевести этот код на C) на скомпилированный двоичный файл.
Текущая версия PyPy 99% совместима с CPython версии 2.5 и может запускать Django, Twisted и многие другие программы Python. Раньше существовало ограничение на невозможность запуска существующих расширений CPython C, но это также рассматривается с помощью модуля cpyext в PyPy. Совместимость C API возможна и в некоторой степени уже реализована. JIT также очень реальна, см. Это сравнение pystone.
С 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
С 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
Таким образом, вы можете получить почти 10-кратное ускорение, просто используя PyPy для некоторых вычислений!
Итак, поскольку проект PyPy медленно созревает и дает некоторые преимущества, он привлекает больше интереса со стороны людей, пытающихся решить проблемы скорости в своем коде. Альтернатива PyPy - это проглатывание (проект Google), целью которого является ускорение реализации CPython с использованием возможностей LLVM JIT, но прогресс в проглатывании неплатежей замедлился, потому что разработчику необходимо было иметь дело с ошибками в LLVM.
Итак, чтобы подвести итог, я полагаю, что PyPy считается будущим Python, поскольку он отделяет спецификацию языка от реализации VM. Особенности, введенные, например. Stackless Python, затем может быть реализован в PyPy с очень небольшими дополнительными усилиями, поскольку он просто изменяет спецификацию языка, и вы сохраняете общий код одинаковым. Меньше кода, меньше ошибок, меньше слияния, меньше усилий.
И, написав, например, новую реализацию оболочки bash в RPython, вы можете бесплатно получить компилятор JIT и ускорить многие сценарии оболочки Linux, не изучая при этом каких-либо тяжелых знаний JIT.