3.12 valid syntax
type Alias[T: ([T for T in (T, [1])[1]], T)] = [T for T in T.__name__]
К сообщению выше, стоит сказать что
Все это пришло вместе с pep-695.
Если смотреть с точки зрения лаконичности, этот пеп имеет смысл.
В основном, теперь просто не надо создавать тайпвары.
Окей, но не стоит забывать что у тайпваров можно было указать ко/контравариантность. А что с вариантностью в новом синтаксисе? Кстати, вот он -
тоже и для функций
И к сожалению (как минимум, моему) фичи вида +T -T ~T не доступны. То есть, в таком виде не укажешь вариантность типа.
В итоге, мы имеем <Автовариантность>. На чьи плечи она ложится? На плечи тайпчекеров.
Почему так сделали? Потому что тему вариантности посчитали достаточно сложной и запутанной.
Выводы делайте сами.
По перфомансу с точки зрения создания класса/функции с таким синтаксисом (именно создания класса/функции, а не создания инстанса/вызова функции).
Перфоманс в этом плане, конечно, упал. Байткод у классов/функций которые написаны в "новом стиле" чуть ли не в 2 раза длиннее. Но, так как создание класса/функции у нас происходит один раз, не то что бы это как-то влияло на общую картину(я думаю, что в кодогенерации, результат которой исполняется на лету, никто не использует тайпхинты)
А
type
теперь у нас soft-keyword
.Все это пришло вместе с pep-695.
Если смотреть с точки зрения лаконичности, этот пеп имеет смысл.
В основном, теперь просто не надо создавать тайпвары.
Окей, но не стоит забывать что у тайпваров можно было указать ко/контравариантность. А что с вариантностью в новом синтаксисе? Кстати, вот он -
class Foo[T: int]:
def method(self, arg: T) -> T:
return arg
тоже и для функций
def foo[T: int](arg: T) -> T:
return arg
И к сожалению (как минимум, моему) фичи вида +T -T ~T не доступны. То есть, в таком виде не укажешь вариантность типа.
В итоге, мы имеем <Автовариантность>. На чьи плечи она ложится? На плечи тайпчекеров.
Почему так сделали? Потому что тему вариантности посчитали достаточно сложной и запутанной.
Выводы делайте сами.
По перфомансу с точки зрения создания класса/функции с таким синтаксисом (именно создания класса/функции, а не создания инстанса/вызова функции).
Перфоманс в этом плане, конечно, упал. Байткод у классов/функций которые написаны в "новом стиле" чуть ли не в 2 раза длиннее. Но, так как создание класса/функции у нас происходит один раз, не то что бы это как-то влияло на общую картину(я думаю, что в кодогенерации, результат которой исполняется на лету, никто не использует тайпхинты)
А
type
как soft-keyword
просто замена TypeAlias
. Не считаю это тем изменением которое было необходимо.Теперь я участник Python Triage Team.
https://github.com/python/core-workflow/issues/509
https://github.com/python/core-workflow/issues/509
Идея нового алгоритма сборщика мусора (скорее всего, будет реализована):
https://github.com/faster-cpython/ideas/issues/613
В итоге +3-4% по перфомансу
https://github.com/faster-cpython/ideas/issues/613
В итоге +3-4% по перфомансу
GitHub
Incremental cycle GC · Issue #613 · faster-cpython/ideas
The cycle GC takes about 10% of the runtime on our benchmark suite. This is already far too high, and with NoGIL it will get much worse. Currently, we perform an entire heap scan every N collection...
Руководящий совет языка принимает PEP 703 (nogil):
https://discuss.python.org/t/pep-703-making-the-global-interpreter-lock-optional-in-cpython-acceptance/37075
Стоит отметить, что изменения все таки могут быть отменены, если что-то пойдет не так.
https://discuss.python.org/t/pep-703-making-the-global-interpreter-lock-optional-in-cpython-acceptance/37075
Стоит отметить, что изменения все таки могут быть отменены, если что-то пойдет не так.
Discussions on Python.org
PEP 703 (Making the Global Interpreter Lock Optional in CPython) acceptance
(Posted for the whole Steering Council.) As we’ve announced before, the Steering Council has decided to accept PEP 703 (Making the Global Interpreter Lock Optional in CPython) . We want to make it clear why, and under what expectations we’re doing so. It…
Начинается
https://github.com/python/cpython/issues/113464
Еще и стишок! https://github.com/python/cpython/pull/113465
https://github.com/python/cpython/issues/113464
Еще и стишок! https://github.com/python/cpython/pull/113465
GitHub
JIT Compilation · Issue #113464 · python/cpython
It's probably about time to start thinking seriously about just-in-time compilation. To kick things off, here's my talk from this year's sprint about "copy-and-patch", which I...
Meta* как и обещала выделила людей для реализации NoGIL, и они уже начинают свою работу:
https://github.com/python/cpython/issues/112175#issuecomment-1901015579
*Компания Meta признана экстремистской организацией и запрещена в России
https://github.com/python/cpython/issues/112175#issuecomment-1901015579
*Компания Meta признана экстремистской организацией и запрещена в России
Небольшой новый синтаксический PEP: https://peps.python.org/pep-0736/
Вообще, наверное, полезно. С каждым днём мы все больше и больше похожи на раст
Вообще, наверное, полезно. С каждым днём мы все больше и больше похожи на раст
Python Enhancement Proposals (PEPs)
PEP 736 – Shorthand syntax for keyword arguments at invocation | peps.python.org
This PEP proposes to introduce syntactic sugar f(x=) for the common pattern where a keyword argument has the same name as that of the variable corresponding to its value f(x=x).
Интересная ситуация складывается. Бывший мейнтейнер decimal'a (некоторое время назад, из-за некоторых событий он перестал коммитить в CPython) создал ишью: https://github.com/python/cpython/issues/114682
Пока не очень ясно из-за чего такая сильная регрессия, буду держать вас в курсе дела. Думаю, в случае с decimal это достаточно большая проблема
Пока не очень ясно из-за чего такая сильная регрессия, буду держать вас в курсе дела. Думаю, в случае с decimal это достаточно большая проблема
CPython notes
Начинается https://github.com/python/cpython/issues/113464 Еще и стишок! https://github.com/python/cpython/pull/113465
Смержили JIT. Не смотрите что PR закрыт, из-за бага гитхаба пр смержен, но почему-то не закрылся после мержа (ещё и в истории коммитов почему-то целых два мержа)
Пока что доступно лишь с флагом
Пока что доступно лишь с флагом
--enable-experimental-jit
при сборке интерпретатора. По моим скромным оценкам, тесты все же исполнялись чуть дольше, чем без JIT'a. Ну, по этой причине оно и находится пока что в "экспериментальном режиме". Нужно еще подождать до полной стабилизацииRelated topic про Jython и его будущее: https://github.com/python/cpython/issues/116349#issuecomment-1983401167
GitHub
Consider deprecating `platform.java_ver` because it is only helpful for Jython · Issue #116349 · python/cpython
Feature or enhancement What do you think about deprecating platform.java_ver? It is never used on CPython, it is a helper for Jython only, which is basically stuck on 2.7 for the last 10 years. I t...
Смержили новый REPL!
https://github.com/python/cpython/pull/111567
В общем-то, реализация из PyPy.
Я, так как довольно часто пользуюсь реплом, доволен.
https://github.com/python/cpython/pull/111567
В общем-то, реализация из PyPy.
Я, так как довольно часто пользуюсь реплом, доволен.
GitHub
gh-111201: A new Python REPL by pablogsal · Pull Request #111567 · python/cpython
Issue: gh-111201
PEP 649 – Отложенное вычисление аннотаций с использованием дескрипторов - отложен... 🥁
Отложен до 3.14, не успели реализовать.
(Шутка украдена у Виктора Стиннера)
Отложен до 3.14, не успели реализовать.
(Шутка украдена у Виктора Стиннера)
Вышла первая бета 3.13, соответсвенно, произошел feature-freeze для 3.13 (более не будет новых фич, только баг и секьюрити фиксы).
Так что, с этого момента начинается разработка 3.14 (aka πthon)
Так что, с этого момента начинается разработка 3.14 (aka πthon)