Релиз PyPy 1.2, реализации Python, написанной на языке Python

12.03.2010 22:49

Увидел свет релиз PyPy 1.2, реализации языка Python, написанная на языке Python. Главное улучшение новой версии - появление JIT-компилятора, позволяющего при выполнении некоторых операций в несколько раз обогнать по производительности реализацию Python на языке Си (JIT работает значительно быстрее за счет преобразования байткода на лету в машинные инструкции, вместо его интерпретации виртуальной машиной), в то время как без использования JIT, CPython обгоняет PyPy в 2-3 раза. По заявлению разработчиков PyPy еще не готов для промышленной эксплуатации, но уже значительно приблизился к этой отметке.

К сожалению, ценой высокой производительности является повышенное потребление памяти, тем не менее в PyPy предпринята попытка удержания расходуемой памяти в жестких рамках, что выгодно отличает PyPy от проекта psyco (реализация JIT-компилятора для Python), требующего для своей работы значительного увеличения размера потребляемой памяти. В PyPy также поддерживается бесстековый (Stackless) режим работы, позволяющий добиться массового параллельного выполнения микро-нитей (micro-threads). Для выполнения кода к которому нет доверия реализован режим изолированного выполнения, отличающегося от sandbox в CPython полной поддержкой всех возможностей языка, без выделения unsafe-функций.

Дополнительно на базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java. Отдельно на базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, JavaScript, Io и Scheme.