вторник, 15 мая 2012 г.

Что такое Nuitka (Перевод)

На самом деле в этом вопросе есть два аспекта:

  1. Что она представляет из себя сейчас?
  2. Чем она должна быть?

Сейчас

На данный момент Nuitka – хорошая замена интерпретатору Python, способная скомпилировать всё, что предлагает CPython 2.6 и 2.7. Она переводит Python в программу С++, которая потом использует “libpython” для выполнения так же, как и CPython, делая это совместимым образом.

Более того, иногда она оказывается быстрее чем CPython, хотя ещё и не всё до конца оптимизированно. 258% на pystone – неплохо для начала (версия 0.3.11).

Будущее

В будущем Nuitka сможет сама определять типы, анализируя программу целиком и используя результат этого анализа для ускорения вычислений. Причём это будет делаться по возможности не через libpython а непосредственно с родными типами данных для С++.

Кроме того, будет возможно интегрировать связи на основе ctypes (ctypes based bindings)  без потери скорости (скомпилированная программа будет вызывать библиотеку С++ напрямую в С++)

И, наконец, Вы сможете использовать модуль hints для того, чтобы указать Nuitka те типы данных, о которых она не может догадаться сама.

 

Теперь и Потом или План

Вот наш путь с вехами:

1: Функциональный паритет с Python, понимание всех конструкций языка и полностью совместимое поведение.
2: Создание наиболее эффективного родного кода для этого. То есть быстро обрабатывать базовые объекты Python.
3: Постоянное усовершенствование – определение того, что может быть скомпилированно и создание более эффективного кода.
4: Автоматическое определение типов данных и работа с ними.
5: Добавить интерфейс для кода на C, так что Nuitka сможет работать с “ctypes” binding как и со связями, написанными на C.
6: Добавить модуль hints, который научит компилятор определять типы данных, используемые программистом.

Где мы сейчас?

Пункт 1 достигнут для Python 2.6 и 2.7, хотя, конечно, ещё остаётся 3.x. Для меня лично 3.x не стоит в числе приоритетов, но всё же надо сделать, чтобы Nuitka работала и на нём. Так что добровольцы приветсвуются!

Со вторым пунктом мы почти закончили, что делает Nuitka почти в два раза быстрее. Хотя вряд ли мы добёмся тут больших успехов, тем не менее наша задача сделать её настолько быстрой, насколько это возможно.

Пункт 3 – работа идёт, что-то улучшается, но мы ещё в начале пути. Так что тут можно многого ещё достичь при правильном определении типов.

Пункт 4 – были предприняты первые шаги. Результаты обнадёживают, но требуется ещё много работы.

Пункты 5 и 6 ещё только стоят в планах.

Самую последнюю версию можно найти тут

Источник

Комментариев нет:

Отправить комментарий