LINUX.ORG.RU

Python 3.14

 

Python 3.14

1

5

Вышел Python 3.14.

Из новшеств:

  • официальная поддержка свободной многопоточности (free-threading, PEP 779);
  • новый модуль compression.zstd для сжатия согласно Zstandard (PEP 784);
  • выражения except и except* теперь могут записываться без скобок (PEP 758);
  • многое другое.

Обзор на YouTube о производительности свежих версий Python.

Обзор изменений в диагностике ошибок на Хабре.

>>> Подробности на pythoninsider.blogspot.com

★☆

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 7)
Ответ на: комментарий от mx__

Ну для начала нужно чтобы изменили заголовки, слова Uvicorn я там нигде не видел.

Я писал, про него выше и вы же, вроде, сказали, что смотрели код:

https://github.com/ermolaev/http_servers_bench/tree/main/python

Там в корне лежит uvicorn_conf.py и uvicorn_worker.py а в main.py from uvicorn import Config, Server.

Я пошёл гуглить все эти имена собственные.

Uvicorn:

  • Uvicorn is an ASGI web server implementation for Python. Until recently Python has lacked a minimal low-level server/application interface for async frameworks. The ASGI specification fills this gap, and means we’re now able to start building a common set of tooling usable across all async frameworks. Uvicorn currently supports HTTP/1.1 and WebSockets.

  • ASGI (Asynchronous Server Gateway Interface) is a spiritual successor to WSGI, intended to provide a standard interface between async-capable Python web servers, frameworks, and applications.

CherryPy:

  • CherryPy is now more than ten years old and it is has proven to be very fast and stable. A reliable, HTTP/1.1-compliant, WSGI thread-pooled webserver.

Т.е. CherryPy это наоборот старый thread-pooled подход, как у рубишной Puma, а вот Uvicorn это вот такой весь из себя модный асинхронный аналог Falcon. Но который почему-то значительно медленнее.

FastAPI же это уже микро-фреймворк, который использует uvicorn под капотом.

Used by FastAPI: uvicorn - for the server that loads and serves your application. This includes uvicorn[standard], which includes some dependencies (e.g. uvloop) needed for high performance serving.

OSBuster ★★
()
Последнее исправление: OSBuster (всего исправлений: 2)
Ответ на: комментарий от mx__

https://leapcell.io/blog/gunicorn-uvicorn-hypercorn-choosing-the-right-python-web-server

Ну по этой ссылке Gunicorn это The WSGI Workhorse, т.е. старичок для WSGI приложений, сразу можно отметать в рамках вопроса или сравнивать только с рубишным Puma, как братом по разуму.

Hypercorn это The Hybrid Powerhouse, т.е. гибрид.

А Uvicorn это The ASGI Specialist, аж с пометкой: `When maximum performance for asynchronous workloads is a priority.

Т.е. автор бенчмарка не схитрил, а честно взял самое быстрое async-решение из всех application-серверов на Python на сегодняшний день. И оно слило почти в два раза. Ну тогда не увидительно, что на Реддите автору никто не возразил и не напихал в панамку за неверную методику.

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

Вопросов по этому вопросу больше нет, всем спасибо.

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

заведомо худший язык лучше прекрасного питона? В в твоём раби до сих пор нету асинхронщины…

Теперь ещё смешнее :)

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

Забавно, но это просто «однофамилец». Это уже a minimalist ASGI/WSGI framework и он работает с вышеперечисленными Uvicorn, Gunicorn и Hypercorn в качестве application-серверов: Falcon apps work with any WSGI or ASGI server.

OSBuster ★★
()
Последнее исправление: OSBuster (всего исправлений: 1)
Ответ на: комментарий от mx__

С именами есть другая забавная история, все эти названия application-серверов на Питоне: Gunicorn, Hypercorn, Uvicorn - это наследование и игра имён основанная на названии Unicorn, уже редко используемом application-сервере на Ruby (Initial release March 11, 2009).

Просто из Вики:

The Gunicorn is a Python Web Server Gateway Interface (WSGI) HTTP server. It is a pre-fork worker model, ported from Ruby’s Unicorn project. Initial release 20 February 2010

Вот такое вот, может для кого-то неявное, наследие.

OSBuster ★★
()
Последнее исправление: OSBuster (всего исправлений: 2)
Ответ на: комментарий от bread

Тут стоит признать, что тырят удачные решения в обе стороны, кто в чём силён.

В Руби есть numo-narray, как подобие питоновского NumPy, включая биндинги к нативным либам, таким как LAPACK, GSL, FFTW, FFTE, Gnuplot.

Есть ruby-polars, которые тоже суть есть биндинги к одноимённой либе на Расте, но подражающая родному питоновскому API для неё. Есть torch-rb, которые тоже биндинги к либе на C++, но подражающие PyTorch.

Unicorn в своё время был прорывным решением, которое моментально затащили себе и Twitter и GitHub, поэтому неудивительно, что в мире Питона захотели себе такое же. Забавно то, что даже потом в других проектах традиция такого наименования продолжилась.

Понимают ли все эти хейтеры из топика, что запуская проект на Flask поверх Uvicorn они отдают тем самым дань уважения к старому веб-серверу на Руби :)

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

А есть в руби какой нибудь веб-фрамеворк который генерит фронтенд на основе самого руби? Ну как в питоне.

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

Не уверен, что я понял вопрос. Всё что касается веба, а не биндингов к какой-нибудь специфической научной либе, есть всё.

Есть классическая генерация страниц через .erb, .haml, .slim шаблоны.

Есть компиляция в WASM, можно хоть Rails c Sqlite3 запускать без сервера, прямо браузером https://web.dev/blog/ruby-on-rails-on-webassembly

Есть траслятор в JS - Opal is a Ruby to JavaScript source-to-source compiler, можно какие-то несложные куски логики на Руби прокидывать на фронт в виде JS https://opalrb.com

Есть фронтовые веб-компоненты по типу React и т.п.:

Можно пример того, что подразумевалось?

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

Есть фронтовые веб-компоненты по типу React и т.п.:

ага

Можно пример того, что подразумевалось?

Нуда, типа к примеру того же рефлекса: https://github.com/reflex-dev/reflex

(там внизу если промотать пример, фронтенд выделен зеленым)

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

Ну вот по по моим ссылкам оно и есть, два основных проекта это Phlex и ViewComponents.

Второй больше завязан на Rails , первый можно использовать, как с Rails так и с любым кодом на чистом Ruby.

OSBuster ★★
()
Последнее исправление: OSBuster (всего исправлений: 1)
Ответ на: комментарий от wandrien

Чтобы не было гирлянды }}}}, следует использовать языки, где разные виды блоков закрываются визуально разными ключевыми словами

И будет у вас столь же нечитаемая гирлянда из esac; fi; done; fi; done.

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

любой программист, который видел больше двух ЯП в своей жизни, может просто взять Lua и писать на нём вообще не ломая себе голову

Особенно индексацией массивов с единицы, ага. Возни от этого возникает гораздо больше, чем от отступов.

Не настраивая никак редактор

Вам всё обидно, что со stack overflow код на питоне тырить неудобно? Зачем ещё нужно какой-то редактор настраивать? Код с отступами хоть в примитивном gedit двадцатилетней давности легко пишется.

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

globals(), locals(),getattr,setattr так что были пути - одна из причин почему всё таки впилили моржа - что путь был, тока путь был пудосольный

как и с теми субинтерпретаторами оказыватся они уже четверть века на уровне cpython api теперь же до синтаксиса хомячкам разжевали

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

FullStackOverFlow

примечательно как насмешка редуцировалась до «уеб на все руки мастер бack&front и даже middle_for_three-tier»

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

Ruby

Скобки и оператор ретурн не обязательны. Очень «интуитивен» и «понятен» для человеческого восприятия, ага

Lua

Аналогично предыдущему плюсом анонимные функции и мешанина из калбеков минус полноценный ООП, не хватает кучи встроенных функций для таблиц и тп. Этот ещё понятнее, учитывая, что позволяет писать макаронины

Ada

Нескончаемый источник шуток типа на этом языке можно призвать дьявола. Обожаем любителями называть переменные в стиле tbutton1


Образчики кала

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

Ну эти недостатки бетона меркнут на примере говна языков выше

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

Примеры языков, дружественных к человеческому, а не машинному, воприятию текста: Ruby, Lua, Ada.

У меня в голове не укладывается как кому-то может нравится такой язык как Lua. Все настолько динамически, что непонятно вообще что на чем стоит и чем является. Как это вообще работает и зачем – загадка.

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

Там всё понятно что где лежит и как всё работает. Нет просто представь что те кто пишут на подобных языках умнее тебя и всё. Просто сам язык даже среди скриптовых примитивен. Это просто эффект утёнка. Он его когда-то выучил и теперь считает идеальным, в пример приводит похожие языки с end’ами в конце блоков

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

да блин

лычки херкам ибо не компрехенде в тесты точки жи фактора

для армейки ещё в начале конца 19го во ПетухоГалии замутили ранжирование по задаче - оно хардовое

а когда булшитджоБ(см антрополога Грэбера Дэвида из пролов) то софты и FullStack(overflow)

просто блин загугль тренды термина stackoverflow (тех термин а название сайта характерное для этоса этих самых) и как оно ширше с появлением сайта

и распространение не просто области фронтофис и бэкофис а именно эндеры

имхо фулстек термин это редукция от фулстековерфлоу как ироничное название умельца который во всём разберётся(ибо есть сайт переполнения стека) ща благо AI-болталкамЕлизам пора обесцениват грок(глагол) и называть успершных_успехов грокерами

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

в младенчестве Lua и Python близнецы ващет

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

Скобки и оператор ретурн не обязательны. Очень «интуитивен» и «понятен» для человеческого восприятия, ага

Это большой бонус для построения декларативных eDSL. Без expression-oriented будет порнография, и лучше даже не пытаться. Что мы и наблюдаем в питоне. Собственно руби единственно и отличает от остального скриптовыводка, что там очень активно используют DSL благодаря синтаксису. Иначе это было бы очередное пхп унылое. Но с точки зрения тупого императивного дятла это может быть сложно и запутанно, не спорю.

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

Вам всё обидно, что со stack overflow код на питоне тырить неудобно?

Я в этой теме всё новые удивительные проекции читаю.

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

DSL

Ruby не является DSL в отличии от SQL или 1С.

Мои первые языки PHP и C++ (этот не помню). Отстутствие усов ({}) у питона мне не мешает.

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

Мои первые языки PHP и C++

Assembler (Intel 8080) и FORTH...

Отстутствие усов ({}) у питона мне не мешает.

«Аналогично, шеф!» ©

За отсутствием «ужика»... ;P ;)) :))))

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

MSX Basic (ох, как хочу иметь ретро Yamaha MSX, но цены на них запредельно выросли за последние 15 лет, а раньше мне негде было хранить такое чудо), Quick Basic на PC, Turbo Pascal, Turbo C.

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

Это я знаю и помню прекрасно: пи многие знаки мне лишни, напрасны.

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

zx_basic

Тоже начинал с него, перепечатывая примеры из книги, боясь опечататься.

А вот про Python впервые узнал, установив российскую игру «Шторм: Солдаты неба» 2002 года. Там в каталоге с установленной игрой были DLL и какие-то игровые скрипты, от версии 2.2 кажется.

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

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

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

Не руби как DSL, а имитация DSL на руби. Это очень широко используется, и дает более удобные API.

Зачем забанился то? Хорошо же сидели.

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

любой вменяемый питон-редактор позволяет фолдить/анфолдить блок и перемещатся к началу блока

и в целом не надо писать функции больше экрана

тем более когда экран это 120 строк как завещал Кен

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

Нет смысла защищать «отступы Питона», всё же Питон, как и Паскаль, возник в качестве учебного языка и алгоритмически значимые отступы в нём введены для привития студентам «правильного» навыка оформления текстов исходного кода на ЛЮБОМ ЯП.

Я вот не сказал бы, что сишные скобочки более читабельны, особенно если смотреть на пару – тройку страниц A4 сишного кода, целиком заполненных исключительно закрывающимися скобками }.

Но скобки дают бОльшую гибкость и меньше геммороя при вставке кода внутрь уже имеющегося. А конец блока можно (и мне кажется, нужно) оформлять в виде:

if (бла-бла-бла)
 {
   for (фыр-фыр-фыр)
    {
      много-много строк
    } /// for (фыр-фыр-фыр)
   ещё много-много строк
 } /// if (бла-бла-бла)

если более вменяемый комментарий писать влом.

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

До сих пор это единственный более-менее убедительный аргумент отступофобов. Ну, хорошо, я могу ещё посчитать тех, кто из сентиментальных чувств не может бросить mcedit, его пользователи в моей выборке все почему-то очень любят на любом языке превращать отступы в случайную мешанину вида ␣␣⇥␣⇥, после чего даже nginx.conf читать очень трудно, несмотря на все его скобочки.

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

А конец блока можно (и мне кажется, нужно) оформлять в виде:

...
} /// if (бла-бла-бла)

Недавно разбирал парочку файлов с длинными #ifdef, кстати, и обнаружил у такого подхода недостаток: никто не может договориться, какое условие писать после else: условие из if (потому что это шапка блока) или !условие (потому что закрываем блок, выпоняемый по другому условию).

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

thriller ★★
()
Последнее исправление: thriller (всего исправлений: 1)
Ответ на: комментарий от mister_VA

вот есть такой дядька - Ульман «начинал» с Хопкрофтом(Formal Languages and Their Relation to Automata 1969) продолжил с Ахо(Principles of Compiler Design много ... в том числе радуга книга Дракона и Data Structures and Algorithm и ) дальше сам поугарал( Computational Aspects of VLSI ) а затем с Гарсиа (Database Systems: The Complete Book)

ну так вот

Скобки это лисп и Алгол-60 ( в фортране скобки только в арифметических выражениях(что было офигенным достижением ибо там не алго Дейкстры через стекование в обратную польскую - а очень эврестично перевод скобочного арифметического выражение с последовательность команд «несколько адресной машины»(кста в APL решели просто забить на приоритеты чем парится)- а в утверждениях(statements) были не парные скобки а заголовок(что в цикле что в других протяжённых конструкциях в строке указание где конец составного утверждения)

так вот ни Паскаль(а Вирт по сути рафинировал один язык начиная с Algol-W через Эйлер(там ваще прикол что цикл определяется(семантически в реализации там очевидно использование обычных jmp) как макра и рекурсию) далее Pcode (Паскаль) модулы и обероны) и Питон ( а это реально язык консоли) не были изначально учебными <- учебными они стали по любопытным политическим соображениям на ряду и «иллюзорной» простотой

парные скобки это упрощение парсинга линейного потока

отступы вообщет по референсу (выше было но хорошее можно и повторить https://docs.python.org/3/reference/lexical_analysis.html) парсяться достаточно простым способом

ваще «структурное» программирование выкристализовалось позже алгол-60 и формирования авторов С - в том же golang принудительный fmt - Кен не слабак что бы просто уступить Пайку и третьему(швейцарцу -ученик Вирта)

и более того codestyle(море их) навязывает регулярность растанновки скобок :(

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

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

Прежде чем отступы читать, не помешало бы научиться в осмысленную дискуссию. Реально в тему захожу поугарать с питон-фанбоев - не то что бы специально, но вы же сами выбираете писать мне смешную чушь.

Что ни уведомление отсюда, то анекдот.

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

Я вот не сказал бы, что сишные скобочки более читабельны

Они показывают визуально, что «здесь что-то есть». Здесь конец некоторого синтаксического объекта. В этом смысле они определённо лучше, чем конец объекта в виде «ничего».

/// for (фыр-фыр-фыр)

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

Если средство разработки не проверяет корректность этих комментариев, то их польза может быть отрицательной: они могут давать неверную информацию.

Синтаксически хороши те языки, где терминаторы разных видов блока визуально различны: Ada, VB и т.п.

Когда я собственный хобби-ЯП разрабатывал, то нашел идеально комфортный для себя синтаксис: https://github.com/wandrien/qod/blob/77746675264115a00490a86505844fb489134339/src/samples/calc_cmdline.qd

10 тысяч строк компилятора написаны в таком синтаксисе, и мне это намного удобнее, чем {сишные {скобочки}}.

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

Синтаксически хороши те языки, где терминаторы разных видов блока визуально различны: Ada, VB и т.п.

Это несколько громоздко и архаично. Редактор может просто показать начало блока в строке статуса. Раз уж питонщики все время козыряют своим редактором, я тоже могу. Такой end как в руби или луа это то, что надо. Он заменяет пару скобочек и делает код чище. Но уже требует специальной поддержки редактора, чтобы автоматом расставлять эти концы, подсвечивать и прыгать по ним и т.п. В виме всё это есть разумеется, работать с руби очень легко и приятно. С питоном в общем тоже легко, но неприятно.

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

Это несколько громоздко и архаично.

Архаично - это не техническое понятие.

громоздко

Зачастую именно в громоздкости суть. Если у тебя длинный цикл, то «визуально тяжелое» его закрытие облегчает чтение кода.

Если там простая проверка «если что-то, то return», то вообще можно и нужно без видимого терминатора обойтись.

Именно поэтому при разработке Qod я столько внимания уделил управляемости синтаксической многословности. Чтобы фрагменты кода, которые по смыслу разные, выглядели по-разному.

подсвечивать и прыгать по ним

Это валидный аргумент. Прыжки по if .. end, while .. end и т.п. требуют соответствующей поддержки со стороны редактора. В то время как прыжки по скобкам есть практически везде.

С другой стороны, зачастую прыжок/подсветка пары я использвал не для того, чтобы «прыгнуть туда и что-то дописать», а просто чтобы понять, к чему это относится. В рефакторинга сложного кода порой бывает максимально неочевидно, что именно закрывает конкретная скобка.

И вот именно эти кейсы «прыгнуть и посмотреть» в случае с многословными терминаторами блока становятся не нужны на практике. В моём опыте так.

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

Это валидный аргумент. Прыжки по if .. end, while .. end и т.п. требуют соответствующей поддержки со стороны редактора. В то время как прыжки по скобкам есть практически везде.

Валидный, но насколько актуальный? Ну то есть есть же уже куча редакторов с поддержкой и куда они/она денутся? Или даже свободный код из их состава.

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

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

Валидный, но насколько актуальный?

не все понимают что отступам это вообще не нужно. Отступы видят глаза а не редактор.

mx__ ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.