Что PyPy может предложить по сравнению с CPython, Jython и IronPython?

Из того, что я видел и читал в блогах, PyPy - очень амбициозный проект. Каковы некоторые преимущества, которые он принесет таблице над своими братьями и сестрами (CPython, Jython и IronPython)? Это скорость, кросс-платформенная совместимость (в том числе мобильные платформы), возможность использования c-расширений без GIL, или это более техническое упражнение в отношении того, что можно сделать?

Ответы

Ответ 1

PyPy - это действительно два проекта:

  • Инструментальная программа-интерпретатор интерпретатора, позволяющая писать интерпретаторы в RPython (статическое подмножество Python) и иметь межплатформенные интерпретаторы, скомпилированные отдельно для JVM для .NET(и т.д.)
  • Реализация Python в RPython

Эти два проекта позволяют многое.

  • Поддержание Python в Python намного проще, чем его сохранение в C
  • Из одной базы кода вы можете создавать интерпретаторы Python, которые запускаются на JVM,.NET и автономно, вместо того, чтобы иметь несколько несовместимых реализаций
  • Часть инструментальной цепочки компилятора включает экспериментальный генератор JIT (теперь в пятом воплощении и начинает работать очень хорошо) - цель заключается в том, что JITed PyPy работает намного быстрее, чем CPython
  • Намного проще экспериментировать с основными языковыми функциями - например, удалять GIL, улучшать сборку мусора, интегрировать стеки и т.д.

Таким образом, PyPy действительно имеет множество причин быть захватывающим, и, наконец, он начинает соответствовать всем его promises.

Ответ 2

Это ссылка , которую представил один из авторов PyPy в PyCon 2009. Это очень информативно.

Ответ 3

Наиболее важной особенностью является, конечно же, JIT-компилятор. В файлах CPython компилируются в байт-код (.pyc) или оптимизированный байт-код (.pyo), а затем интерпретируются. С PyPy они будут скомпилированы в собственный код. PyPy также включает в себя патч без патча Python, включая впечатляющие функции (сериализация селектора, световые потоки и т.д.)

Ответ 4

Если Python получает реальный JIT, я думаю, что это будет так же быстро, как любая другая реализация.

Преимущество заключается в том, что гораздо проще реализовать новые функции. Это можно увидеть сегодня, наблюдая за библиотекой. Часто модули сначала записываются на Python, а затем переводятся на C.

Ответ 5

кросс-платформенная совместимость

Да