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