Вийшов новий стабільний реліз популярної програми Python.
Python – високорівнева мова програмування загального призначення, орієнтована на підвищення продуктивності розробника та читання коду. Основні риси – динамічна типізація, автоматичне керування пам'яттю, повна інтроспекція, механізм обробки винятків, підтримка багатопоточних обчислень, високорівневі структури даних.
Python – стабільна та поширена мова. Він використовується в багатьох проектах та в різних якостях: як основна мова програмування або для створення розширень та інтеграції додатків. Основні сфери застосування: веб-розробка, машинне навчання та аналіз даних, автоматизація та системне адміністрування. Наразі Python посідає третє місце у рейтингу. ТІОБ.
Основні зміни:
Новий високопродуктивний синтаксичний аналізатор на основі граматик PEG.
У новій версії поточний парсер Python на основі граматик LL(1)(КС-граматика) замінений на новий високопродуктивний та стабільний синтаксичний аналізатор на базі PEG (РВ-граматика). Аналізатори для мов, представлених КС-граматиками, такі як LR-аналізатори, вимагають особливого кроку лексичного аналізу, який розбиває вхідні дані відповідно до пробілів, пунктуацій тощо. Це необхідно, оскільки ці аналізатори використовують попередній аналіз обробки деяких КС-граматик в лінійний час. РВ-граматики не вимагають окремого кроку лексичного аналізу, а правила йому можуть бути закладені разом з іншими правилами граматики.
Нові оператори та функції
У вбудований клас dict додано два нових оператори, | для злиття словників та |= для оновлення.
До класу str додано дві нові функції: str.removeprefix(префікс) та str.removesuffix(суфікс).
Підказка типу для вбудованих типів колекцій
У цьому релізі включено підтримку синтаксису генераторів у всіх стандартних колекціях, доступних в даний час.
def read_blog_tags(tags: list[str]) -> None:
for tag in tags:
print("Tag Name", tag)
інші зміни
-
PEP 573 Доступ до стану модуля за допомогою методів розширення C
-
PEP 593 Гнучкі функції та змінні анотації
-
PEP 602 Python переходить на щорічні стабільні релізи
-
PEP 614 Пом'якшувальні граматичні обмеження на декоратори
-
PEP 615 Підтримка бази даних IANA за часовими поясами у стандартній бібліотеці
-
BPO 38379 збирання сміття не блокується на відновлених об'єктах
-
BPO 38692 os.pidfd_open, для керування процесами без перегонів та сигналів;
-
BPO 39926 підтримка Unicode оновлено до версії 13.0.0
-
BPO 1635741, при багаторазовій ініціалізації Python в тому самому процесі, більше не відбувається витік пам'яті
-
Колекції Python (range, tuple, set, frozenset, list, dict) прискорені за допомогою векторного виклику PEP 590
-
Деякі модулі Python (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, ресурс, time, _weakref) тепер використовують багатофазну ініціалізацію, як визначено в PEP 489
-
Ряд стандартних модулів бібліотек (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) тепер використовують стабільний ABI, визначений PEP 384.
Джерело: linux.org.ru