субота, 28 грудня 2013 р.

Випуск PyPy 2.1

Представлено реліз PyPy 2.1, реалізації мови Python, що написана мовою Python (використовується статично типізована підмножина RPython, Restricted Python). Одночасно доступна для тестування бета-версія PyPy3 2.1 з підтримкою Python 3. Версія PyPy 2.1 примітна забезпеченням офіційної підтримки процесорів ARM в JIT-компіляторі. Крім того, до коду внесено чергові оптимізації — новий випуск в середньому на 10% швидше минулої версії PyPy і в 6.12 разів швидше класичного CPython 2.7.3.

Завдяки 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.

Немає коментарів:

Дописати коментар