Был выпущен PyPy 4.0.0, в результате чего появилось крупное обновление для интерпретатора Python и JIT-компилятора. Новая версия добавляет поддержку векторизации SIMD на x86, а также улучшенную функциональность numpy среди других улучшений.
Новый выпуск представляет собой крупное обновление совместимого интерпретатора PyPy python 2.7.10 с компилятором Just In Time. Пакет предоставляет альтернативный способ компиляции и запуска программ на Python. Если вас смущает изменение нумерации, это последующий выпуск PyPy 2.6.1. Разработчики решили перейти на новую схему нумерации PyPy 4.x.x, чтобы избежать путаницы с CPython 2.7 и 3.5. Новая версия реализует Python 2.7.10.
PyPy написан на самом Python, используя ограниченную версию Python под названием RPython, которая была разработана совместно с ним. RPython также используется отдельно от PyPy, и версии других динамических языков были реализованы с использованием RPython, включая версии Prolog, Smalltalk, JavaScript, реализацию Ruby под названием Topaz и реализацию PHP под названием HippyVM.
PyPy намного быстрее, чем CPython, и до тех пор, пока вам не нужны функции Python 3, он предоставляет отличную альтернативу. Если вам нужна поддержка Python 3, существует бета-версия PyPy3, которая реализует Python 3.2.5.
Поддержка векторизации в новой версии добавляет шаг векторизации в оптимизатор трассировки. Этот шаг распознает общие конструкции и по возможности выдает код SIMD. Это должно увеличить скорость численных приложений в библиотеке NumPyPy и для некоторых программ на Python. Поскольку это очень новое дополнение, по умолчанию оно отключено.
Реализация numpy-это еще одна область, которая была улучшена. Написав о новой версии в блоге PyPy, команда PyPy сказала::
«ndarray и числовые типы dtypes очень близки к полнофункциональным; в основном поддерживаются типы dtypes записей, строк и unicode. Мы переопределили numpy linalg, random и fft в качестве модулей cffi-1.0, которые обращаются к тем же базовым библиотекам, которые использует numpy.»
Последнее существенное улучшение-это CFFI (интерфейс внешних функций C для Python), который, по словам разработчиков,:
«возможно, наш самый значительный вклад в экосистему python»
даже несмотря на то, что это относится к Python в более общем плане, а не только к PyPy. Обновленная версия также улучшила управление временем жизни объектов и поддержку __stdcall в Win32 среди других незначительных изменений.