🚀Python 3.11.0: главные новинки для разработчика
24 октября 2022 г. вышла новая версия Python 3.11.0 со следующими ключевыми фичами и исправлениями ошибок:
• исправлено умножение списка на целое число (список *= int), что приводило к целочисленному переполнению, когда новая выделенная длина близка к максимальному размеру;
• изменен код метода запуска forkserver - в Linux модуль многопроцессорности теперь снова использует сокеты домена unix, поддерживаемых файловой системой, чтобы работать с процессом forkserver вместо пространства имен абстрактных сокетов Linux. Абстрактные сокеты не имеют разрешений и могут позволить любому пользователю в системе в том же сетевом пространстве имен (часто всей системе) вводить код в многопроцессорный процесс forkserver. Это существенная уязвимость типа превышение привилегий и устранено в новой версии Python.
• исправлена проблема, из-за которой несколько объектов фрейма могли поддерживаться одним и тем же фреймом интерпретатора, что могло привести к повреждению памяти и серьезным сбоям интерпретатора;
• исправлено возможное повреждение данных или сбои при доступе к элементу f_back вновь созданного генератора или фреймов сопрограммы;
• исправлен сбой, возникающий при вызове PyEval_GetFrame(), когда самый верхний фрейм Python находится в частично инициализированном состоянии;
• исправлен синтаксический анализ командной строки: параметр reject -X int_max_str_digits без значения недействителен, когда для переменной среды PYTHONINTMAXSTRDIGITS установлено допустимое значение;
• исправлено неопределенное поведение в _testcapimodule.c;
• обновлены связанные копии pip и setuptools до версий 22.3 и 65.5.0 соответственно;
• ранее объявленный устаревшим метод asyncio.Task.cancel("message") теперь снова работает и не считается устаревшим;
• семафоры работают быстрее, что важно для многозадачных программ;
• исправлен флаг для использования границы CONFORM, что позволяет объединять флаги с непоследовательными значениями;
• в Windows, когда набор тестов Python запускается с параметром -jN, для временного файла stdout вместо UTF-8 теперь используется кодировка ANSI;
• исправлена ошибка, из-за которой многопроцессорность из виртуальной среды порождала дочерние процессы в Windows, когда это было не нужно;
• исправлена обработка программой запуска py.exe параметра -V:<company>/, когда в переменных среды или файлах конфигурации были установлены предпочтения по умолчанию;
• SDK macOS 13 включает поддержку системных вызовов mkfifoat и mknodat. Ранее использование параметра dir_fd с os.mkfifo() или os.mknod() приводило к segfault, если cpython собран с помощью SDK macOS 13, но работал в более ранней версии macOS.
https://www.python.org/downloads/release/python-3110/
https://docs.python.org/release/3.11.0/whatsnew/changelog.html#python-3-11-0-final
Post #354
1.3K