Что PyPy может предложить по сравнению с CPython, Jython и IronPython? - PullRequest
28 голосов
/ 06 марта 2009

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

Ответы [ 4 ]

38 голосов
/ 06 марта 2009

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

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

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

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

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

4 голосов
/ 06 марта 2009

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

0 голосов
/ 06 марта 2009

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

Да

0 голосов
/ 06 марта 2009

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

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

...