Хорошая вещь, чтобы быть в курсе, когда речь идет о проекте PyPy в том, что она направлена на самом деле обеспечивают два конечные результаты: первый является JIT компилятор генератор. Да, генератор, что означает, что они реализуют структуру для написания реализаций высокодинамичных языков программирования, таких как Python. Второй - это фактический тест этой структуры, и это реализация интерпретатора PyPy Python .
Теперь есть несколько ответов, почему PyPy является настолько особенным: разработка проекта работает с 2004 года, начата как исследовательский проект, а не из компании, повторно использует 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
Таким образом, вы можете получить почти 10x ускорение только с помощью PyPy по некоторым подсчетам!
Так как проект PyPy медленно созревает и предлагает некоторые преимущества, он привлекает больше интереса со стороны людей, пытающихся решить проблемы скорости в своем коде. Альтернативой PyPy является проглатывание без рекламы (проект Google), целью которого является ускорение реализации CPython с использованием возможностей JIT LLVM, но прогресс в проглатывании запаса замедлился, потому что разработчику необходимо было иметь дело с ошибками в LLVM.
Итак, чтобы подвести итог, я полагаю, что PyPy считается будущим Python, потому что он отделяет спецификацию языка от реализации VM. Особенности, введенные, например. Stackless Python, затем может быть реализован в PyPy с очень небольшими дополнительными усилиями, поскольку он просто изменяет спецификацию языка, и вы сохраняете общий код одинаковым. Меньше кода, меньше ошибок, меньше слияния, меньше усилий.
И, написав, например, новую реализацию оболочки bash в RPython, вы можете бесплатно получить компилятор JIT и ускорить многие сценарии оболочки Linux, не изучая при этом каких-либо тяжелых знаний JIT.
Что волнует? – fmark
На самом деле слово «провокационное», которое, я считаю, является «мангиш» для «провокационного». – martineau
Должен признаться, что я немного испорчен –