The OpenNET Project / Index page

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

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

"Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от opennews (??) on 06-Июл-11, 22:53 
Представлен (http://shed-skin.blogspot.com/2011/06/shed-skin-08-programmi...) релиз проекта Shed Skin 0.8 (http://code.google.com/p/shedskin/), в рамках которого развивается экспериментальный компилятор Python-скриптов в представление на языке C++. Поддерживается генерация как обособленных исполняемых программ, так и модулей, которые после компиляции можно импортировать в Python-проекты с целью оптимизации производительности. В новой версии Shed Skin добавлена (http://code.google.com/p/shedskin/wiki/releasenotes?ts=13084...)  поддержка новых модулей (array, struct), решены проблемы с работой на 64-разрядных системах, добавлены новые оптимизации и исправлены ошибки. Код Shed Skin распространяется в рамках лицензии GPLv3.

Для компилируемых скриптов обязательным требованием (http://shedskin.googlecode.com/files/shedskin-documentation-...) является использование статической типизации (в процессе работы скрипта тип переменной не должен изменять...

URL: http://shed-skin.blogspot.com/2011/06/shed-skin-08-programmi...
Новость: http://www.opennet.me/opennews/art.shtml?num=31099

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

Оглавление

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


1. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 06-Июл-11, 22:53 
> Для компилируемых скриптов обязательным требованием является использование статической типизации

потому что компилятор дурачок и не умеет по другому. проанализировать код, вывести типы и наделать где надо параметризованых функций он не может. велосипед с квадратными колёсами.

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

2. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 06-Июл-11, 23:05 
Таких компиляторов просто нет, нельзя анализировать динамический код и заменять его типизированными вставками. По крайней мере для ЯП типа питона.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 06-Июл-11, 23:16 
> Таких компиляторов просто нет, нельзя анализировать динамический код и заменять его типизированными
> вставками. По крайней мере для ЯП типа питона.

автор Stalin'а очень удивлён: он, оказывается, сделал то, что сделать нельзя.

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

31. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 07-Июл-11, 21:26 
питон значительно отличается от хаскеля, нет в яп достаточной интроспецкии в сишные потраха. Даже ципкл в питоне формально нельзя развернуть в статический код.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

33. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от chinarulezzz (ok) on 08-Июл-11, 01:13 
бред щас сказал. К тому же Stalin - схема. Хотя какая разница, да.
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

34. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 08-Июл-11, 08:47 
ну конечно. Разверни вот такой код детерминированно в статик

from math import fabs

print reduce(lambda x,y: x + fabs(y), xrange(10))

и подумай зачем, например, в некоторых PL/SQL есть атрибуты у храминок типа IMMUTABLE,
STABLE, VOLATILE. Зачем похожие вещи есть в inline ассемблерах, в сях/поюсах const и т.п.

> К тому же Stalin - схема. Хотя какая разница, да.

в общем то да, в данном случае разница не велика. всё одинаково далеко от питона

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

36. "Релиз Python-компилятора Shed Skin 0.8"  –2 +/
Сообщение от anonymous (??) on 08-Июл-11, 11:05 
> ну конечно. Разверни вот такой код детерминированно в статик

и что? очевидно, что это работа с числами.

> всё одинаково далеко от питона

гвидобейсик такой гвидобейсик.

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

38. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 08-Июл-11, 13:30 
> и что? очевидно, что это работа с числами.

Тебе с твоим человечьим мозгом может быть, и то не очевидно, ты просто догадываешься глядя на знакомые литералы чисел. А с формально логической точки зрения (т.е. как на этот код смотрит потенциальный компилятор или анализатор питонокода) здесь вообще чисел нет и этот код ни во что больше не разворачивается. А именно в цикле участвует мутабельный объект (итератор) и волатильная функция (fabs - вызов сишной ф-ии).

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

39. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 08-Июл-11, 14:16 
даже такому альтернативно развитому, как ты должно быть ясно, что библиотечные функции аннотированы. что такое xrange — компилятор знает. что такое reduce — компилятор знает. итого — это спокойно компилятором разворачивается в простой цикл с инлайнингом fabs. задачка для школьника десятого класса. мой JIT умеет разворачивать намного более закрученые штуки, к тому же в динамике. а тут вообще халява — весь код изначально компилятору скормили.
Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

40. "Релиз Python-компилятора Shed Skin 0.8"  –1 +/
Сообщение от anonymous (??) on 08-Июл-11, 14:17 
ах, да: конечно, JIT не для гвидобейсика: недоязыки меня не интересуют.
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

41. "Релиз Python-компилятора Shed Skin 0.8"  +1 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 08-Июл-11, 20:19 
компилятор не знает что такое fabs(), _не_ знает что такое reduce(). Да и в контексте питона под xrange может быть что угодно. Прежде чем нести такую чушь ознакомтесь с немного с мат. частью. Я кончно понимаю что у вас всё на одно лицо, но тем не менее везде есть существенные различия.
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

43. "Релиз Python-компилятора Shed Skin 0.8"  –1 +/
Сообщение от anonymous (??) on 09-Июл-11, 10:04 
> компилятор не знает что такое fabs(), _не_ знает что такое reduce().

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

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

12. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 07-Июл-11, 01:33 
Анализировать динамический код и выводить по возможности типы переменных умеет любая современная IDE, посмотри что ли на продукты JetBrains.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

29. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от pro100master (ok) on 07-Июл-11, 20:58 
не в обиду, но - не умеет. Вернее умеет, но только то, что задана в её внутренностях. Реально, где она рулит - джава. Надо понимать за счет рефлексии и реверса - это для неё нативно.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

30. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 07-Июл-11, 21:21 
это всё "эвристический" вероятностный анализ. Для формального детерминированного выполнения он совсем не подходит, а для разбора в первом приближении вполне.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

25. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 07-Июл-11, 18:16 
> потому что компилятор дурачок

Вообще, господин Тюринг выдвинул довольно интересную теорию: одна программа никогда не сможет полностью проанализировать работу другой программы. Поэтому кой-кто прямо так и хочет попрыгать по этим граблям и попытаться сделать то, чего достичь невозможно даже теоретически :)

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

27. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 07-Июл-11, 18:21 
> Вообще, господин Тюринг выдвинул довольно интересную теорию: одна программа никогда не
> сможет полностью проанализировать работу другой программы.

и поэтому анализаторы вообще не нужны, ага.

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

4. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от tavaaver on 06-Июл-11, 23:22 
Странно, что в тесте Sudoku компилятор оказался в 31 раза быстрее CPython и в 4 раза быстрее PyPy.
Если прочитать это предложение в обратную сторону, то получится, что на PyPy этот тест выполняется в разы быстрее, чем на CPython.

Это не очень логично — CPython изначально должен быть быстрее всех остальных интерпретаторов, кроме Jython (поскольку там JIT).

Или я чего-то не понимаю? Может в PyPy оптимизации какие хитрые есть?
Кто-нибудь из знатоков Питона может объяснить?

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

5. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от tavaaver on 06-Июл-11, 23:24 
Я ошибся — в 25 раз быстрее, чем в CPython.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Stax (ok) on 06-Июл-11, 23:37 
В PyPy есть JIT. Собственно, для этого он и делался, чтобы быть быстрее CPython.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

14. "Неа"  –1 +/
Сообщение от bw email(ok) on 07-Июл-11, 06:03 
Не для этого он делался.
Это площадка для экспериментов, на Python (PyPy) писать проще чем на C (CPython). И JIT здесь можно считать очередным экспериментом, который появился достаточно быстро (ну в CPython его ещё нет и будет ли) именно благодаря выбранному языку реализации.

..bw

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

15. "Неа"  +/
Сообщение от Имя on 07-Июл-11, 08:01 
>Не для этого он делался.

Для этого.

>Это площадка для экспериментов, на Python (PyPy) писать проще чем на C (CPython).

Он не на Python а на RPython написан.

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

7. "Релиз Python-компилятора Shed Skin 0.8"  +1 +/
Сообщение от Аноним (??) on 06-Июл-11, 23:33 
CPython самый медленный так как интерпретатор, а PyPy - быстрый так как использует JIT-компиляцию.

"Благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код, минуя фазу интерпретации байткода в виртуальной машине, PyPy при выполнении некоторых операций в несколько раз обгоняет по производительности классическую реализацию Python на языке Си - при выполнении 20 тестов производительности PyPy в среднем опережает CPython в 3.6 раз."
http://www.opennet.me/opennews/art.shtml?num=30422

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

6. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от szh (ok) on 06-Июл-11, 23:29 
вот здесь: http://snowplow.org/martin/rebench/ хороший Regular expression speed comparison для perl, python, ruby

У меня python 2.6.5 проигрывает по скорости perl 5.10.1 от 2х до 8 раз (в одном тесте в 20) (Ubuntu 10.04).
IronPython 2.6 проигрывает обычному python в ~10 раз.
PyPy 1.2.0 проигрывает обычному python от 2 до 20 раз.

Интересно как в этой штуке.

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

8. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 06-Июл-11, 23:33 
> У меня python 2.6.5 проигрывает по скорости perl 5.10.1 от 2х до
> 4х раз (в одном тесте в 20) (Ubuntu 10.04). IronPython 2.6
> проигрывает обычному python в ~10 раз.

в синтетических тестах? слабый показатель. мой доморощеный скриптовый язык, например, в синтетических тестах перл обгоняет. а на самом деле -- тормозит.

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

10. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от szh (ok) on 06-Июл-11, 23:40 
Это тесты на регекспы. Там хорошо обыграны разные комбинации.

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

11. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 06-Июл-11, 23:43 
> Это тесты на регекспы.

что вообще имеет мало отношения к скорости языка. вон, на многих часто используемых (и умно составленых) регэкспах tre раскатывает катком и перл, и pcre. если я заменю pcre на tre — я ведь не ускорю язык этим.

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

13. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от szh (ok) on 07-Июл-11, 01:46 
у меня некоторый функционал большую часть времени занимается split'ами и регекспами, так что если ускорятся регекспы, то скорость программы ускорится ощутимо.

попробовал http://cpansearch.perl.org/src/DGL/re-engine-RE2-0.08/README

RE2 от в 2 раза медленнее, до в 4 раза быстрее

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

16. "Релиз Python-компилятора Shed Skin 0.8"  +2 +/
Сообщение от Имя on 07-Июл-11, 08:04 
> Это тесты на регекспы. Там хорошо обыграны разные комбинации.

У Яндекса какая-то библиотека есть которая делает перл как стоячий обгоняя его в 35 раз на регекспах. К языку синтетические тесты не имеют отношения.

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

17. "Релиз Python-компилятора Shed Skin 0.8"  +1 +/
Сообщение от iNode on 07-Июл-11, 09:17 
https://github.com/dprokoptsev/pire
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

19. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Имя on 07-Июл-11, 11:19 
Да, спасибо оно.
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

21. "Релиз Python-компилятора Shed Skin 0.8"  –1 +/
Сообщение от anonymous (??) on 07-Июл-11, 13:35 
> У Яндекса какая-то библиотека есть которая делает перл как стоячий обгоняя его
> в 35 раз на регекспах. К языку синтетические тесты не имеют
> отношения.

«Pire does not have any Perlish conditional regexps, lookaheads & backtrackings, greedy/nongreedy matches; neither has it any capturing facilities.»

кастраты не интересны.

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

22. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Имя on 07-Июл-11, 14:08 
>«Pire does not have any Perlish conditional regexps, lookaheads & backtrackings, greedy/nongreedy matches; neither has it any capturing facilities.»

А прочитать README.RU не судьба

>кастраты не интересны.

Анонимы не интересны.

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

32. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от szh (ok) on 07-Июл-11, 21:57 
> У Яндекса какая-то библиотека есть которая делает перл как стоячий обгоняя его в 35 раз на регекспах. К языку синтетические тесты не имеют отношения.

Эта библиотека почти ничего из функционала регекспов не умеет, только самое простое. Не умеет даже greedy/nongreedy matches, так что не важно во сколько раз, когда неюзабельно.

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

26. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 07-Июл-11, 18:18 
> в синтетических тестах? слабый показатель.

Нихрена себе синтетика - регэкспы. Они и в реальных программах там и тут :)

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

28. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 07-Июл-11, 18:22 
> Нихрена себе синтетика - регэкспы. Они и в реальных программах там и
> тут :)

ты не в курсе, что тесты регэкспов тоже бывают синтетические?

алсо, в большинстве случаев как раз полномасштабный движок регэкспов не нужен, часто достаточно того subset, например, что в Lua вмонтирован (взял просто первый попавшийся под руку пример).

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

24. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Макс (??) on 07-Июл-11, 16:14 
1.2 это ооочень старая версия - практически без всяких оптимизаций.  В 1.3 или 1.4 они  как-раз подкрутили регулярки, если мне память не изменяет.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

47. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonym on 12-Июл-11, 15:55 
perl там тоже древний, в 5.14 сильно их ускорили
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

18. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 07-Июл-11, 10:01 
А почему для perl никто компиляторы не пишет? Неуловимый Джо?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Релиз Python-компилятора Shed Skin 0.8"  +1 +/
Сообщение от anonymous (??) on 07-Июл-11, 13:34 
> А почему для perl никто компиляторы не пишет? Неуловимый Джо?

пишут, parrot. кучу лет уже пишут. ну, это ж перлисты — они ещё долго писать будут.

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

35. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 08-Июл-11, 08:59 
А транслятор в C или С++ не существует?
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

37. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 08-Июл-11, 11:23 
> А транслятор в C или С++ не существует?

а зачем? O_O

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

42. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 09-Июл-11, 08:31 
Дык для PHP вон HipHop сделали, а для Perl ничего?
Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

44. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonymous (??) on 09-Июл-11, 10:11 
> Дык для PHP вон HipHop сделали, а для Perl ничего?

livejournal работает и без хипхопа.

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

46. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonym on 11-Июл-11, 20:15 
> А транслятор в C или С++ не существует?

Кстати да. Зачем?
Критичные участки кожа можно переписать на C\C++ и подключить через XS.

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

48. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от Аноним (??) on 15-Июл-11, 14:05 
Вспоминается история Rambler почты, когда выкинули perl и переписали всё на Си.
Было 80 серверов, стало 5. Это я к чему, имеет ли смысл писать проекты с высокой нагрузкой на перл или сразу начинать с Си?
Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

45. "Релиз Python-компилятора Shed Skin 0.8"  +/
Сообщение от anonym on 11-Июл-11, 20:13 
parrot - он для всего, в первую очередь для perl6, а потом уже питон, перл5, руби и т.п.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

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

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




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

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