Завдяки JIT-компілятору, на льоту транслюються деякі елементи в машинний код, PyPy при виконанні деяких операцій в кілька разів обганяє по продуктивності класичну реалізацію Python на мові Сі (CPython). Ціною високої продуктивності та використання JIT-компіляції є більш високе споживання пам'яті-загальне споживання пам'яті в складних і довгостроково працюючих процесах (наприклад, при трансляції PyPy силами самого PyPy) перевищує споживання CPython в півтора-два рази.
Нововведення, додані в PyPy 2.1:
- Повноцінна підтримка генерації коду для архітектури ARM в JIT-компіляторі. Підтримуються системи на базі ARMv6 (Raspberry Pi) і ARMv7 (Beagleboard, Chromebook, Cubieboard тощо) в режимах ABI hard-float (armhf/gnueabihf) і soft-float (armel/gnueabi);
- Підтримка Stacklet для ARM;
- Реалізація бібліотек os.statvfs і os.fstatvfs для Unix-систем;
- Збільшення продуктивності ведення логу;
- Прискорення виконання операцій з множинами в об'єктах;
- При формуванні пакета забезпечена збірка розширення TK з використанням інтерфейсу CFFI;
- Для Numpy покращена підтримка масивів і dtype, додана підтримка субмасивів, проведена робота над помилками;
- Експериментальна підтримка сумісності з Python 3 (CPython 3.2.3), реалізована в окремій гілці PyPy3;
Основні особливості PyPy:
- Підтримка безстекового (Stackless) режиму роботи, що дозволяє використовувати модель actor (erlang-подібне програмування з масою мікропотоків і відсилання сигналів один одному, але при цьому (на відміну від erlang) все відбувається в одному фізичному потоці операційної системи);
- Реалізація режиму ізольованого виконання коду, до якого немає довіри. Від sandbox в CPython даний режим відрізняється повною підтримкою всіх можливостей мови без виділення unsafe-функцій.
- Автоматична генерація і повна прозорість вбудованого JIT-компілятора;
- PyPy успішно проходить стандартний тестовий пакет Python і підтримує більшість із стандартних Python-модулів і фреймворків, таких як ctypes, django (з sqlite), twisted (без підтримки ssl), pylons, pyglet. PyPy може бути використаний для безшовної заміни CPython 2.7;
- Підтримка роботи на архітектурах x86 (IA-32), x86_64 та ARM. Ведеться робота з адаптації для архітектури PowerPC (PPC64), але вона ще не завершена;
- На базі технологій PyPy створені бекенди для генерації в PyPy байткода для LLVM і віртуальних машин .NET/CLI і Java.
- На базі PyPy ведеться розробка реалізацій на мові Python інтерпретаторів Prolog, Smalltalk, Ruby, JavaScript, Io і Scheme.
Немає коментарів:
Дописати коментар