Возвращаюсь из трудовых будней🫡 В октябре свершилось долгожданное событие, про которое нельзя не сказать - официально вышла новая версия Python 3.14!
Главные изменения, которые особенно важны для DS-ML и не только:
🐍 Долой GIL!
Более «официальным» стал вариант сборки Python без глобальной блокировки интерпретатора. Эта фича появилась как чисто экспериментальная в Python 3.13, в новой же версии её доработали. Однако в однопоточном режиме код с отключенным GIL всё ещё работает на 5-10% медленнее - поэтому имеет смысл отключать его только в определённых участках кода или пользоваться старыми добрыми joblib и concurrent.
🐍 Экспериментальный JIT-компилятор.
Появилась опция автоматической JIT (just-in-time) компиляции, которая ускоряет повторяющиеся участки кода - можно активировать режим через переменную окружения PYTHON_JIT=1. Как можно воспользоваться подобной опцией в более ранних версиях - есть в этом
посте.
🐍 Мультиинтерпретаторы и asyncio.
В продолжение темы ускорения кода и параллелизма, появилась возможность запускать несколько интерпретаторов в одном процессе - воспользоваться можно через concurrent.interpreters. Из минусов - опция пока не до конца оптимизирована и может потреблять много памяти. А ещё появились новые улучшения в asyncio и отладке асинхронного кода.
🐍 Template strings (t-strings).
Это новый вид строковых шаблонов, похожий на f-строки, но с расширенными возможностями. Самое главное - можно самим задать, как именно будут подставляются значения. Если f-строки просто вставляют текст, то новые шаблоны позволяют, например, автоматически экранировать данные для SQL или форматировать их по своим правилам.
🐍 Отложенная оценка аннотаций.
Аннотации типов теперь не вычисляются сразу при импорте модуля - это ускоряет их и убирает часть проблем с круговыми зависимостями. Однако стоит иметь в виду, что код, который раньше зависел от немедленной оценки аннотаций, может работать иначе.
🐍 Улучшенные сообщения об ошибках.
Ошибки стали объясняться понятнее, особенно в типовых опечатках и неверных типах. А ещё интерпретатор теперь умеет подсказывать:)
В целом, нововведения довольно крутые, но с некоторыми моментами лучше быть аккуратнее. Ещё важно иметь в виду, что NumPy, Pandas и другие библиотеки могут не сразу выпустить стабильные версии под новый Python.
Продолжаем следить за развитием