LINUX.ORG.RU

Релиз PyPy 7.0

 ,


1

1

Состоялся релиз PyPy 7.0 — свободной реализации Python для Linux (x86, x86_64, PPC64, s390x, ARMv6 или ARMv7 с VFPv3), macOS (x86_64), OpenBSD, FreeBSD и Windows (x86). Особенностью PyPy является JIT-компиляция, на лету транслирующая некоторые элементы в машинный код, что позволяет очень сильно ускорить приложение.

Что нового:

  • Представлен первый альфа-выпуск PyPy3.6, предоставляющий поддержку Python 3.6.
  • Добавлена возможность подключения обработчиков к сборщику мусора (GC hooks), позволяющих на низком уровне управлять поведением сборщика мусора.
  • Обновлены модули CFFI 1.12 и cppyy 1.4 с реализацией интерфейса для вызова функций, написанных на языках Си и C++.
  • В ветках PyPy 3.5 и PyPy 3.6 появилась поддержка cppyy, который раньше был доступен только в PyPy 2.7.
  • Реализованы специфичные для Python 3.6 функции и объекты Py_ReprEnter, Py_ReprLeave(), PyMarshal_ReadObjectFromString, PyMarshal_WriteObjectToString, PyObject_DelItemString, PyMapping_DelItem, PyMapping_DelItemString, PyEval_GetFrame, PyOS_InputHook, PyErr_FormatFromCause, __set_name__, __init_subclass__.
  • В основную ветку PyPy переведена разработка отладчика revdb с поддержкой отладки с возвратом к более ранним состояниям (reverse debugging).
  • Добавлена поддержка платформы GNU Hurd.
  • Улучшена работа в окружении FreeBSD.
  • Код для перевода внутреннего представления строк на UTF-8 в релиз не вошёл.

>>> Подробности

Ответ на: комментарий от bread

проще делать всё на одном языке, даже если этот язык сложный

«Овладевшие молотком склонны видеть в любой проблеме гвоздь.»

хорошо знает ... на кой ему еще

Лень и поломанный арифмометр.уже были в списке гипотез. Хочется чего-то более уважительного.

DonkeyHot ★★★★★ ()
Ответ на: комментарий от DonkeyHot

Так питон такой же молоток, только пластмассовый. В контексте гуи есть прикольный tcl, но он популярен примерно как лисп. Ну не одобряют ширнармассы идею DSL, что поделать. В индустрии работает другой принцип: безобразно, зато однообразно.

bread ()
Ответ на: комментарий от bread

Так питон такой же молоток, только пластмассовый.

Только вот питон — это не молоток, а целый ящик инструментов. Точнее даже не ящик, а немаленький такой склад. Да, на передних полках этого склада лежат простые деревянные инструменты. Именно с них и начинается решение любой задачи. Не нужно сразу хвататься за карьерный экскаватор, когда надо всего лишь посадить во дворе цветок. Оптимизации делаются позже.

Если простых инструментов хватает — ты ими и решаешь задачу. Если нужны более быстрые или специализированные инструменты ­— на складе есть и такие, в огромном количестве и разнообразии. А в конце этого склада есть cython — генератор порталов в бесконечный мир языка и библиотек на Си.

В контексте гуи есть прикольный tcl, но он популярен примерно как лисп.

Тогда уже не Tcl, а Tk. Потому что в tcl можно и Gtk использовать.

Как оказалось, Tk довольно популярен. В том же питоне он есть в стандартной библиотеке. К сожалению, он сильно отстаёт от других тулкитов. Для обучения и мелких примеров он годится, а как дойдёт до чего-то сложного, то всё равно придётся использовать внешние тулкиты.

pynonymous ()
Ответ на: комментарий от pynonymous

Важна именно связка tcl/tk, без тикля это малоинтересно. Более выразительного средства описания гуи не встречал.

bread ()
Ответ на: комментарий от pynonymous

Только вот питон — это не молоток, а целый ящик инструментов.

Целый ящик молотков. Язык под задачу на питоне плохо получается. Все решается монотонными императивными портянками.

bread ()
Ответ на: комментарий от bread

Важна именно связка tcl/tk, без тикля это малоинтересно. Более выразительного средства описания гуи не встречал.

Между питоном и tcl-ем разница не большая, разве что меинлуп надо запустить явно:

package require Tk

label .l -text "Hello, world!"
button .b -text "OK" -command {exit}
pack .l -expand 1
pack .b

from Tkinter import *

root = Tk()
l = Label(root, text="Hello, world!")
b = Button(root, text="OK", command=exit)
l.pack(expand=True)
b.pack()
root.mainloop()

Местами питон даже проще. Например, Tk на питоне thread-safe — его методы можно вызывать из других потоков. Много вы знаете thread-safe-ных тулкитов?

pynonymous ()
Ответ на: комментарий от bread

Целый ящик молотков. Язык под задачу на питоне плохо получается. Все решается монотонными императивными портянками.

В питоне куча разных инструментов. Те самые «батарейки» — готовые модули на все случаи жизни. А монотонные императивные портянки — это на java. В питоне всё намного компактнее.

Вы неправильно смотрите на питон. Это просто язык более высокого «уровня».

Как есть швейцарский армейский нож, им можно сделать что угодно, даже яму выкопать, просто копать придётся долго. Есть ящик инструментов, он занимает больше места, но в нём есть лопата, которой намного быстрее выкопать яму. Можно ей и карьер выкопать, но копать придётся долго. А есть ангар со спец.техникой, в котором стоит карьерный самосвал...

В языках так же. Есть язык ассемблер — идеальный контроль расхода памяти, производительности, времени выполнения каждой инструкции... Но писать на нём большие программы долго.

Так появился Си. На Си сложнее контролировать расход памяти и процессора, на нём не напишешь шеллкод, да и вообще маленький бинарники на нём делать сложно. Но одна строка на си заменяет 10 строк ассемблера, а значит можно теми же усилиями написать в 10 раз более сложную программу. Увы, слишком сложные программы на Си всё равно писать тяжело.

Так появился С++. Расход памяти и процессора на нём можно лишь угадывать, а про мелкие бинарники можно забыть вообще. Но стандартная библиотека С++ позволяет одной строкой заменить 10 строк на си. А множество внешних библиотек позволяют теми же усилиями писать в десятки раз более сложные программы... Или, как вариант, тратить на те же программы на порядок меньше времени.

И так далее... Процесс не остановился!

Питон — просто очередное звено в этой цепи, где одна строка на питоне заменяет 10 строк на С++, а множество библиотек позволяют тратить на те же программы на порядок меньше времени.

И это тоже не конец. Возможно, в будущем появится новый язык, одна строка которого заменит 10 строк на питоне...

Так зачем же останавливаться в своём развитии? Не нужно зацикливаться на швейцарском ноже. Изучайте новые языки, и используйте их, они экономят время.

pynonymous ()
Ответ на: комментарий от bread

питон такой же молоток

Однозначно. Но питонщики имеют шанс заметить, что что-то пошло не так - когда прога медленно работает, и проект ещё можно спасти.

В индустрии работает другой принцип: безобразно, зато однообразно

А должны были бы прибыль считать. Для демонстрации: положим: «скрипач» наскриптовывает одну медленную «функцию» за 1 «дедлайн», а «насильник» за то же время на си - 1 быструю. В базарный день, программы из 1 «горячей» и 1 «одноразовой» ф-ии идут быстрые по 100500 ватеверов, а медленные по 500, ибо никому не нужны, Очевидно, за 2 дедлайна первый заработает 500 а второй 100500, Однако, если они скооперируются, и первый напишет обе «одноразовые», а второй обе «горячие» ф-ии, они вместе заработают на 100000 больше, что почти невозможно поделить не обоюдовыгодно.

Думаю, можно подвигать цифры, и обнаружить, что выгода не положительна только при равных ценах(т.е. скорость никому не нужна).

Кстати, мне рассказали почти уважительную причину писать всё быстрым. Если твоя задача работает на 10000 компутерах, 1% производительности позволяет сэкономить на железе одну зарплату «оптимизатора». Не уверен, как это отражается на стоимости сопровождения и сроках, но это уже можно считать.

контексте гуи есть прикольный tcl

он прикольный не только в контексте гуи. IMO он провалился потому, что его писаки неправильно реализовали интерфейс и списков/словарей. '[lindex [expr $a+$b] $list]'(в деталях не уверен) никак не может соревноваться c 'list[a+b]'

DonkeyHot ★★★★★ ()
Последнее исправление: DonkeyHot (всего исправлений: 3)
Ответ на: комментарий от pynonymous

Возможно, в будущем появится новый язык, одна строка которого заменит 10 строк на питоне...

Так уже есть хацкель.

DNA_Seq ★★☆☆☆ ()
Ответ на: комментарий от DNA_Seq

А чтобы это не было пустым звуком Вы же свой любимый пример покажете?

anonymous ()
Ответ на: комментарий от DNA_Seq

Слышали, и активно пользуются =) Просто не во всех сценариях хорошо получается.

Archer73 ()
Ответ на: комментарий от DonkeyHot

IMO он провалился потому, что его писаки неправильно реализовали интерфейс и списков/словарей

Нет, это читаки не смогли в гомоиконность. Примерно как с лиспом, хотя тикль сильно мимикрирует под C-like, но недостаточно сильно.

bread ()
Ответ на: комментарий от bread

это читаки не смогли в гомоиконность

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

DonkeyHot ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.