URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 108051
[ Назад ]

Исходное сообщение
"Выпуск Pyston 0.5, реализации языка Python с JIT-компилятором"

Отправлено opennews , 26-Май-16 13:01 
Состоялся (https://blog.pyston.org/2016/05/25/pyston-0-5-released/) пятый выпуск проекта Pyston (http://www.pyston.org), в рамках которого компанией Dropbox, в которой работает Гвидо ван Россум, развивается высокопроизводительная реализация языка Python, созданная с использованием наработок проекта LLVM. Реализация примечательна применением современных технологий JIT-компиляции и нацелена на достижение высокой производительности, близкой к производительности традиционных системных языков, таких как C++. Код  Pyston написан на языке C++ и распространяется (https://github.com/dropbox/pyston) под лицензией Apache.


В отличие от проекта PyPy (https://www.opennet.me/opennews/art.shtml?num=43218), также продвигающего идею применения JIT для ускорения выполнения Python-скриптов, в Pyston используется не трассирующий JIT, базирующийся на компиляции в машинный код часто выполняемых циклов, а применяемый в современных JavaScript-движках JIT на основе трансляции отдельных методов (method-at-a-time), который, по мнению инженеров Dropbox,  является более перспективной технологией. Принцип работы Pyston сводится к разбору кода на языке Python и его трансляции в промежуточное представление LLVM (IR, Intermediate Representation). Далее IR-представление проходит обработку в оптимизаторе LLVM и передаётся для исполнения в JIT-движок LLVM, который преобразует IR-представление в машинный код.

Для получения информации о типах переменных для программ на динамическом языке Python применяется техника вероятностного предсказания типов объектов с последующим уточнением правильности выбора типа в процессе выполнения. Таким образом Pyston постоянно варьирует выполнение между двумя ветками - быстрой, когда данные о предсказанных типах подтверждаются, и медленной, используемой в случае рассогласования данных о типе. Работа может осуществляться в многопоточном режиме, допускающем параллельное выполнение нескольких нитей кода на языке Python и избавленном от глобальной блокировки интерпретатора (GIL, global interpreter lock).

В новой версии сборщик мусора переведён на использование метода подсчёта ссылок (https://ru.wikipedia.org/wiki/%D0%9F%D0%... (refcounting) для автоматического управления высвобождением неиспользуемых объектов. Новый метод пришёл на смену отслеживающему сборщику мусора (https://ru.wikipedia.org/wiki/%D0%A1%D0%.... Refcounting более прост в реализации и позволяет заметно увеличить оперативность высвобождения объектов, но он медленнее и не поддерживает обработку зацикленных ссылок. Причиной смены сборщика мусора является использование refcounting в основной реализации CPython - идея перехода на более эффективный отслеживающий сборщик мусора не оправдала себя из-за возникших проблем с совместимостью с C API. Refcounting же ценой некоторого снижения производительности позволяет существенно расширить поддержку уже написанного кода, в котором используются специфичные для refcounting свойства (предсказуемое немедленное уничтожение объектов).


Другим важным улучшением новой версии является достижение уровня совместимости с CPython, позволяющего выполнить немодифицированный вариант библиотеки NumPy. Кроме того, в Pyston 0.5 обеспечены такие изменения, как поддержка обработки сигналов, интроспекция кадров стека при выходе, проведение чистка генератора, расширение поддерживаемых функций C API, поддержка использования немодифицированных библиотек py.test, lxml и cffi. Что касается производительности, то ценой повышения совместимость стало замедление работы примерно на 10%. При подготовке следующей версии основное внимание будет уделено оптимизации производительности.


URL: https://blog.pyston.org/2016/05/25/pyston-0-5-released/
Новость: http://www.opennet.me/opennews/art.shtml?num=44490


Содержание

Сообщения в этом обсуждении
"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Uri , 26-Май-16 15:03 
> Refcounting ... не поддерживает обработку зацикленных ссылок.

И что теперь делать? Есть в пистоне слабые ссылки?


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено angra , 26-Май-16 15:07 
Вариант "думать при написании кода" вы принципиально не рассматриваете?


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 15:12 
> думать при написании кода

Эй-эй-эй, полегче! Так ведь можно и на нормальные языки типа C человека перевести. Оно вам надо? Пусть и дальше с питоном в песочнице играется.


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено angra , 26-Май-16 15:49 
Снобизм чаще всего присущ ограниченным людям. Он позволяет им чувствовать себя выше только на основе того, что они выбрали что-то "правильное", например С, а главное позволяет свою неспособность выучить другое замаскировать под нежелание.

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 20:33 
> Снобизм чаще всего присущ ограниченным людям. Он позволяет им чувствовать себя выше только на основе того, что они выбрали что-то "правильное", например "думать при написании кода", а главное позволяет свою неспособность выучить другое замаскировать под нежелание.

obvious fix


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 20:42 
Ого, говорящая  энциклопедия!

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 16:44 
> Эй-эй-эй, полегче! Так ведь можно и на нормальные языки типа C

Назвать костыль с кучей подпорок и полями граблей, типа Си, "нормальным языком" — это сильно.

> Оно вам надо? Пусть и дальше с питоном в песочнице
> играется.

Ну возьмите да перепишите свой бубунтософт/портаж и т.д. на Си.
А то в каждой новости о питоне только и можете себя (типа илитных сишников) нахваливать, да плакаться какой не труЪшный этот самый питон и как нужно все сделать "правильно".
А воз и ныне там. Т.е. питонщики хоть как-то работающий софт написали, а от илиты кроме "да мы, да всем, да покажем, вот!!" пока ничего не видно )


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 20:50 
> костыль с кучей подпорок и полями граблей

Можно примеры костыльности C? Никак не отрицаю вашу (пока только вероятную) правоту, но правда интересно. Вроде как самый элегантный и некостыльный язык из наиболее популярных.

> А то в каждой новости о питоне

Никогда в новостях о питоне не видел, чтоб сишники себя нахваливали. Зато часто вижу, как пользователи в них жалуются на кривизну и нерабочесть софта на питоне. Я правильно понимаю, что это и есть ваше "хоть как-то работающий" и вы считаете, что это хорошо?

> от илиты кроме "да мы, да всем, да покажем, вот!!" пока ничего не видно

Давайте вы напишете это из системы, где софта на python хотя бы просто не меньше, чем софта на C/C++, а я тем временем обдумаю свои встречные аргументы?


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Bicycle , 26-Май-16 21:18 
> элегантный


#include <asm/kasan.h>
extern pgd_t early_level4_pgt[PTRS_PER_PGD];
extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD];
static unsigned int __initdata next_early_pgt = 2;
pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX);

Типун Вам на язык

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Led , 26-Май-16 21:20 
>> элегантный
>
 
> #include <asm/kasan.h>
> extern pgd_t early_level4_pgt[PTRS_PER_PGD];
> extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD];
> static unsigned int __initdata next_early_pgt = 2;
> pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX);
>

> Типун Вам на язык

Шо, пионэр, не распарсил?


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Bicycle , 26-Май-16 21:30 
Да, есть такое. :) Откровенно говоря, я в Сях дальше численных методов не вылазил, поэтому со своей колокольни я могу назвать Си мощным языком, но отнюдь не элегантным.

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 27-Май-16 00:05 
> отнюдь не элегантным

А как бы выглядел тот фрагмент, чтобы вы сочли его элегантным?

В вашем примере по сути три типа строк:

#include <включаемый_файл>
тип переменная[длина_массива];
тип переменная = значение;

Я слабо представляю, как приведённый фрагмент кода можно сделать лучше.

Может быть, вас смущают всякие pmd, pgd, pgt, PTRS, NX? Так в C принято создавать словарь предметной области и сокращать наиболее длинные термины, типа ptr вместо pointer или RO вместо READONLY, и со временем понимаешь, что это удобно.


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 22:56 
> Вроде как самый элегантный и некостыльный язык из
> наиболее популярных.

А слаще морковки ничего нет?


>  Я правильно понимаю, что это и есть ваше
> "хоть как-то работающий" и вы считаете, что это хорошо?

Почему-то народ пользуется софтом, который вполне себе справляется с задачей, а не очередным мифическим "Будет самый-самый! Вы все обзавидуетесь! Осталось только написать!"



"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 18:41 
Но зачем учить недо-язык? Есть гораздо более интересные и перспективные платформы.

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 20:40 
> Есть гораздо более интересные и перспективные платформы.

Назовите хотя бы три?


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 20:44 
>> Есть гораздо более интересные и перспективные платформы.
> Назовите хотя бы три?

Эээ... COBOL, LISP и Smalltalk?


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Led , 26-Май-16 21:17 
>> Есть гораздо более интересные и перспективные платформы.
> Назовите хотя бы три?

Не-бейсик, не-гвидобейсик, не-жавоскрипт, не-жаво. 4 достаточно?


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 27-Май-16 13:07 
Java, Scala + Akka, Groovy.

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Нанобот , 26-Май-16 16:44 
>Вариант "думать при написании кода" вы принципиально не рассматриваете?

пробовал, не помогает. точнее помогает на коде уровня "hello world", дальше эффективность данной методики снижается, при чём чем больше кода, тем ниже эффективность


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Очередной аноним , 27-Май-16 11:24 
так весь этот механизм с автоматическим управлением временем жизни объектов (все эти гэрбэйдж-коллекторы разных типов и систем, подсчет ссылок в их числе) и делается обычно для того, чтобы ты при написании кода думал о бизнес-логике, а не об особенностях управления памятью. А тут вроде есть механизм автоматического освобождения памяти, но помнить о таких досадных утечках (из-за циклических ссылок) ты обязан и должен обруливать сам.

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено userd , 26-Май-16 15:38 
Если Вы соберёте pyston, то сами ответите на вопросы; а если нам свой отзыв напишете - будет совсем хорошо. Мне вот собирать pyston лень.

А если почитать blog.pyston.org, то можно найти, что weakrefs есть, а сборку мусора в pyston 0.5 сделали как в CPython.


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Stax , 26-Май-16 19:17 
1) есть
2) Сферический refcounting в воздухе сам по себе не поддерживает, но питон-то поддерживает. Там специальный код для очистки cyclic counters (тормозной, правда, но тем не менее). И в пистоне он также работает.

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Атата , 27-Май-16 19:57 
https://docs.python.org/3/library/weakref.html

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 26-Май-16 19:24 
Крутые анонимусы всегад синят на python скорее всего куча реализованных проектов за плечачи и давит на них их низкая производительность и ущербность. У нас в компании реалзован один из крупнейших проектов в Беларуси по контролю кассового оборудования, считайте страну маленкой или большой - но все должно работать практически в realtime, сохранение данных от сотен тысяч устройств, аналитика, и другие прикладные задачи. Стек такой python + ceph + postgres. Или есть какие то основания у анонимуса что мы ошиблись в выборе технологий?

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Led , 26-Май-16 21:19 
> куча реализованных проектов за плечачи и давит

Неграмотной школоте на "плечачи" давят рукава шорт.


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Аноним , 27-Май-16 04:24 
А по существу сказать нечего. :)

// другой Аноним


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Вареник , 27-Май-16 15:30 
>> Стек такой python + ceph + postgres

Это ни о чем не говорит. На любом распространенном языке/платформе можно написать нормально и написать криво. Можно сделать нормальную архитектуру, можно "лапшу" из заплаток. Можно покрыть тестами, можно не тестировать.

Какой язык лучше знают ключевые сотрудники команды - тот и лучше.


"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено Crazy Alex , 27-Май-16 17:53 
Если во главе угла таки бизнес - то команду всегда можно набрать, отталкиваться от конкретных людей, а не от рынка при выборе технологии - глупость.

"Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."
Отправлено chinarulezzz , 28-Май-16 04:30 
Незаменимых нет. Можно кодеров набирать студентов, и толкать ынтырпрайз.