22 Ноября 2024, 12:43

Python

Автор turbo, 03 Августа 2008, 18:02

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Zhek@Ch

21 Ноября 2011, 21:44 #20 Последнее редактирование: 21 Ноября 2011, 21:46 от Zhek@Ch
[size="3"]Релиз PyPy 1.7, реализации Python, написанной на языке Python [/size]

Вышел релиз проекта PyPy 1.7, в рамках которого разрабатывается реализации языка Python, написанная на языке Python (используется статически типизированное подмножество RPython, Restricted Python). Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си (CPython). В новом выпуске, помимо исправления ошибок, особое внимание было уделено расширению класса кода на Python, получающего большое ускорение при использовании PyPy. В среднем PyPy 1.7 на 30% быстрее PyPy 1.6 а на некоторых тестах -- до 20 раз.


Новая версия PyPy опережает CPython 2.7.2 по производительности в среднем в 4.8 раза. Ценой высокой производительности и использования JIT-компиляции является более высокое потребление памяти - общее потребление памяти в сложных и длительно работающих процессах (например, при трансляции PyPy силами самого PyPy) превышает потребление CPython в полтора-два раза.

Основные изменения:

  • Многочисленные улучшения производительности;
  • Исправления ошибок и улучшение совместимости с CPython;
  • Улучшение поддержки Windows;
  • Опция беcстекового (Stackless) исполнения теперь включена по умолчанию. К сожалению, программы, использующие бесстековость, пока не получат реального увеличения производительности, потому, что любой цикл, использующий бесстековые возможности, собьёт JIT-компилятор;
  • Версия библиотеки для организации научных расчетов NumPy для PyPy переименована в numpypy (следует использовать "import numpypy as numpy"). Большой прогресс достигнут со времён PyPy 1.6, особо следует отметить реализацию dtypes. Тем не менее, полная поддержка API библиотеки NumPy пока не реализована;
  • Новый кодировщик JSON, который опережает CPython в некоторых случаях до 2 раз и более чем в 20 раз -- старый, используемый в версии 1.6;
  • Значительно улучшено управление памятью в некоторых внутренних модулях. Это должно подействовать на любые приложения, использующие, например, криптографию;
  • Есть некоторый прогресс в расширении поддержки бинарных расширений CPython (написанных с использованием C API) через cpyext.
Вещи, работа над которыми ещё ведётся и которые ожидаются в 1.8:

  • Специализация списков. Есть ветка, реализующая списки элементов одного типа (целых, чисел с плавающей точкой, строк) так же компактно, как array.array. Это значительно увеличит производительность и уменьшит расход памяти;
  • Продолжаются работы над NumPy, скоро ожидаются многомерные массивы;
  • Два новых бэкэнда JIT, для процессоров PowerPC и ARM.
Некоторые особенности PyPy:

  • Поддержка бесстекового (Stackless) режима работы, позволяющего использовать модель actor (erlang-подобное программирование с массой микропотоков и отсыланием сигналов друг другу, но при этом (в отличии от erlang) всё происходит в одном физическом потоке ОС);
  • Реализация режима изолированного выполнения кода, к которому нет доверия. От sandbox в CPython данный режим отличается полной поддержкой всех возможностей языка без выделения unsafe-функций.
  • Автоматическая генерация и полная прозрачность встроенного JIT-компилятора;
  • PyPy успешно проходит стандартный тестовый пакет Python и поддерживает большинство из стандартных Python-модулей и фреймворков, таких как ctypes, django (с sqlite), twisted (без поддержки ssl), pylons, pyglet. PyPy может быть использован для бесшовной замены CPython 2.6 и CPython 2.7;
  • Поддержка работы на архитектурах x86 (IA-32) и x86_64. Ведется работа по адаптации для архитектур ARM и PowerPC , но она ещё не завершена;
  • На базе технологий PyPy созданы бэкенды для генерации в PyPy байткода для LLVM и виртуальных машин .NET/CLI и Java.
  • На базе PyPy ведется разработка реализаций на языке Python интерпретаторов Prolog, Smalltalk, Javascript, Io и Scheme.

Zhek@Ch

25 Ноября 2011, 22:22 #21 Последнее редактирование: 25 Ноября 2011, 22:25 от Zhek@Ch
[size="3"]Python OS Project - новая операционная система на языке Python [/size]

Анонсирован проект Python OS Project (POP), созданный с целью разработки операционной системы, компоненты которой написаны полностью на языке Python. POP основан на ядре Linux (в данный момент используется ядро версии 2.6.32) и окружении GNU, которое постепенно перерабатывается на языке Python. Многие составные части пользовательского окружения уже переписаны. Код проекта пока недоступен (дополнение: загрузить iso-образ можно здесь) - ведётся работа по выбору открытой лицензии и созданию публичного репозитория. В качестве причин разработки называется работа ради удовольствия (Just For Fun) и желание сделать интересную и легко изменяемую систему.

В настоящее время на языке Python переписаны такие приложения, как инсталлятор, пакетный менеджер, система инициализации, файловый менеджер, типовые системные утилиты (ls, cp, rm, vat, zcat и т.п.), эмулятор терминала (POPemu на базе termemulator), вспомогательные утилиты (wget, top), интерфейс к mplayer, mpd и moc, PDF-просмотрщик. В состав также входит оконный менеджер Qtile, http-сервер POPweb (основан на Cherrypy), Jabber/ICQ клиент POPim, графический редактор Mirageiv, BitTorrent-клиент Deluge, текстовый редактор Snaked и СУБД Buzhug. В планах разработка web-браузера на языке Python, офисного пакета, X-сервера и в конечном итоге создание ядра системы на языке Python.


Дополнительно можно упомянуть, что создание операционных систем на интерпретируемых языках неоднократно предпринималось в прошлом. Например, наиболее известными из ныне живущих проектов по созданию ОС на Python являются Pycorn OS и Cleese. В отличие от проекта POP, данные операционные системы ориентированы в первую очередь на создании ядра системы на языке Python, включая драйверы, сетевой стек и реализацию файловых систем. В рамках проекта Cleese развивается концепция создания интерпретаора байткода Python, способного работать непосредственно на "голой" системе, выступая в роли микро-ядра для запуска написанных на языке Python компонентов ядра ОС. В рамках проекта Perlix развивается пользовательское окружение на языке Perl, работающее поверх ядра Linux. Обилие проектов по созданию операционных систем базируется языке Java, среди них: JNode, JOS, JX, Sanos, SavaJe и JavaOS.