PyPy не является форком CPython, поэтому его нельзя объединить напрямую с CPython.
Теоретически сообщество Python может повсеместно принять PyPy, PyPy может стать эталонной реализацией, а CPython может быть прекращен. Тем не менее, PyPy имеет свои недостатки:
- CPython легко интегрируется с модулями Python, написанными на C, и это традиционно способ, которым приложения Python выполняют задачи, интенсивно использующие ЦП (см., Например, проект SciPy).
- Сам этап компиляции PyPy JIT стоит процессорного времени - только благодаря повторному запуску скомпилированного кода он становится быстрее в целом. Это означает, что время запуска может быть выше, и, следовательно, PyPy не обязательно эффективен для выполнения связующего кода или тривиальных сценариев.
- Поведение PyPy и CPython не одинаково во всех отношениях, особенно когда речь идет о «деталях реализации» (поведение, которое не определено языком, но все еще важно на практическом уровне).
- CPython работает на большем количестве архитектур, чем PyPy, и был успешно адаптирован для работы во встроенных архитектурах способами, которые могут быть непрактичными для PyPy.
- Схема подсчета ссылок CPython для управления памятью, вероятно, оказывает более предсказуемое влияние на производительность, чем различные системы GC PyPy, хотя это не обязательно верно для всех стратегий «чистого GC».
- PyPy еще не полностью поддерживает Python 3.x, хотя это активный рабочий элемент.
PyPy - отличный проект, но скорость выполнения задач с интенсивным использованием процессора - это еще не все, и во многих приложениях это меньше всего проблем. Например, Django может работать на PyPy, что ускоряет создание шаблонов, но драйверы базы данных CPython работают быстрее, чем PyPy; в конце концов, какая реализация будет более эффективной, зависит от того, где узкое место в данном приложении.
Другой пример: вы могли бы подумать, что PyPy отлично подойдет для игр, но большинство стратегий GC, подобных тем, которые используются в PyPy, вызывают заметное дрожание. Для CPython большая часть загружаемых процессором игр загружается в библиотеку PyGame, которой PyPy не может воспользоваться, поскольку PyGame в основном реализован как расширение C (хотя см. Pygame-cffi). Я все еще думаю, что PyPy может быть отличной платформой для игр, но я никогда не видел, чтобы это использовалось.
PyPy и CPython имеют принципиально разные подходы к фундаментальным вопросам проектирования и делают разные компромиссы, поэтому ни один из них не «лучше», чем другой в каждом случае.