PyPy — достаточно совместимый Python интерпретатор, является почти полной заменой CPython 2.7.1, а благодаря трассирующему JIT-компилятору превосходит его по скорости.
Главными особенностями этого релиза стали скорость и стабильность. В среднем тесты производительности показывают, что PyPy 1.6 стал на 20-30% быстрее предыдущей версии, которая уже оставляла далеко позади CPython.
Это стало возможным вследствие комплексных изменений, улучшены Garbage Collector (GC), время разогрева JIT и проводимые им оптимизации, качество генерируемого машкода и реализация собственно интерпретатора.
В этой версии:
- улучшено поведение GC на очень больших объектах и массивах;
- ускорен ctypes: теперь вызовы оптимизируются JIT и до 60 раз быстрее чем в PyPy 1.5 и в 10 раз быстрее чем в CPython;
- простые генераторы теперь разворачиваются в цикл по месту вызова, что дает прирост производительности в 3.5 раза, остальные генераторы были тоже оптимизированы и теперь быстрее на 10-20%, чем в PyPy 1.5;
- поддержка плавающих одинарной точности в JIT, например array('f');
- улучшен формат хранения словарей в зависимости от их содержимого, что дало прирост скорости и уменьшение расхода памяти, например, для словарей, у которых ключи только строки или целые; размеры остальных словарей также были уменьшены, благодаря исправленным ошибкам;
- в поставку включен JitViewer — веб-инструмент, помогающий узнать какие части приложения были затронуты JIT, вплоть до ассемблера;
- расширен список поддерживаемых C-модулей;
- появились многобайтные кодировки;
- первоначальная поддержка NumPy (теперь он очень быстр), интегрированная с JIT; к сожалению, API пока не полный и не каждое приложение сможет работать.