CPython notes
981 subscribers
9 photos
61 links
Download Telegram
Channel created
3.12 valid syntax
type Alias[T: ([T for T in (T, [1])[1]], T)] = [T for T in T.__name__]
К сообщению выше, стоит сказать что 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Даешь цветные трейсбеки!
https://github.com/python/cpython/pull/112732
Meta* как и обещала выделила людей для реализации NoGIL, и они уже начинают свою работу:

https://github.com/python/cpython/issues/112175#issuecomment-1901015579

*Компания Meta признана экстремистской организацией и запрещена в России
Интересная ситуация складывается. Бывший мейнтейнер decimal'a (некоторое время назад, из-за некоторых событий он перестал коммитить в CPython) создал ишью: https://github.com/python/cpython/issues/114682
Пока не очень ясно из-за чего такая сильная регрессия, буду держать вас в курсе дела. Думаю, в случае с decimal это достаточно большая проблема
CPython notes
Начинается https://github.com/python/cpython/issues/113464 Еще и стишок! https://github.com/python/cpython/pull/113465
Смержили JIT. Не смотрите что PR закрыт, из-за бага гитхаба пр смержен, но почему-то не закрылся после мержа (ещё и в истории коммитов почему-то целых два мержа)
Пока что доступно лишь с флагом --enable-experimental-jit при сборке интерпретатора. По моим скромным оценкам, тесты все же исполнялись чуть дольше, чем без JIT'a. Ну, по этой причине оно и находится пока что в "экспериментальном режиме". Нужно еще подождать до полной стабилизации
Смержили новый REPL!
https://github.com/python/cpython/pull/111567
В общем-то, реализация из PyPy.
Я, так как довольно часто пользуюсь реплом, доволен.
PEP 649 – Отложенное вычисление аннотаций с использованием дескрипторов - отложен... 🥁
Отложен до 3.14, не успели реализовать.
(Шутка украдена у Виктора Стиннера)
Вышла первая бета 3.13, соответсвенно, произошел feature-freeze для 3.13 (более не будет новых фич, только баг и секьюрити фиксы).
Так что, с этого момента начинается разработка 3.14 (aka πthon)