The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Выпуск Pyston 0.5, реализации языка Python с JIT-компилятором"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск Pyston 0.5, реализации языка Python с JIT-компилятором"  +/
Сообщение от opennews (??) on 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.ru/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/
Новость: https://www.opennet.ru/opennews/art.shtml?num=44490

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  –3 +/
Сообщение от angra (ok) on 26-Май-16, 15:07 
Вариант "думать при написании кода" вы принципиально не рассматриваете?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  –2 +/
Сообщение от Аноним (??) on 26-Май-16, 15:12 
> думать при написании кода

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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от angra (ok) on 26-Май-16, 15:49 
Снобизм чаще всего присущ ограниченным людям. Он позволяет им чувствовать себя выше только на основе того, что они выбрали что-то "правильное", например С, а главное позволяет свою неспособность выучить другое замаскировать под нежелание.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

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

obvious fix

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

21. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 26-Май-16, 20:42 
Ого, говорящая  энциклопедия!
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

14. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  –1 +/
Сообщение от Аноним (??) on 26-Май-16, 16:44 
> Эй-эй-эй, полегче! Так ведь можно и на нормальные языки типа C

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

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

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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

23. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 26-Май-16, 20:50 
> костыль с кучей подпорок и полями граблей

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

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

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

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

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

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

25. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +1 +/
Сообщение от Bicycle (ok) on 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);

Типун Вам на язык
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

27. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Led (ok) on 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);
>

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

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

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

28. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  –1 +/
Сообщение от Bicycle (ok) on 26-Май-16, 21:30 
Да, есть такое. :) Откровенно говоря, я в Сях дальше численных методов не вылазил, поэтому со своей колокольни я могу назвать Си мощным языком, но отнюдь не элегантным.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

30. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 27-Май-16, 00:05 
> отнюдь не элегантным

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

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

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

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

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

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

29. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 26-Май-16, 22:56 
> Вроде как самый элегантный и некостыльный язык из
> наиболее популярных.

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


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

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


Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

16. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 26-Май-16, 18:41 
Но зачем учить недо-язык? Есть гораздо более интересные и перспективные платформы.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

20. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  –2 +/
Сообщение от Аноним (??) on 26-Май-16, 20:40 
> Есть гораздо более интересные и перспективные платформы.

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

33. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Аноним (??) on 27-Май-16, 13:07 
Java, Scala + Akka, Groovy.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

13. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от Нанобот (ok) on 26-Май-16, 16:44 
>Вариант "думать при написании кода" вы принципиально не рассматриваете?

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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

32. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +2 +/
Сообщение от Очередной аноним on 27-Май-16, 11:24 
так весь этот механизм с автоматическим управлением временем жизни объектов (все эти гэрбэйдж-коллекторы разных типов и систем, подсчет ссылок в их числе) и делается обычно для того, чтобы ты при написании кода думал о бизнес-логике, а не об особенностях управления памятью. А тут вроде есть механизм автоматического освобождения памяти, но помнить о таких досадных утечках (из-за циклических ссылок) ты обязан и должен обруливать сам.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

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

36. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Атата on 27-Май-16, 19:57 
https://docs.python.org/3/library/weakref.html
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

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

26. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  –1 +/
Сообщение от Led (ok) on 26-Май-16, 21:19 
> куча реализованных проектов за плечачи и давит

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

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

35. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от Crazy Alex (ok) on 27-Май-16, 17:53 
Если во главе угла таки бизнес - то команду всегда можно набрать, отталкиваться от конкретных людей, а не от рынка при выборе технологии - глупость.
Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

37. "Выпуск Pyston 0.5, реализации языка Python с JIT-компиляторо..."  +/
Сообщение от chinarulezzz (ok) on 28-Май-16, 04:30 
Незаменимых нет. Можно кодеров набирать студентов, и толкать ынтырпрайз.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру