1. Structural Pattern Matching (match/case)
1. Poprawa wydajności '3.11' działa średnio o 10-60% szybciej niż '3.10', z tego wynika 1,25-krotne przyspieszenie w standardowych testach wydajności. 2. Nowe funkcje językowe PEP 654: Wprowadzenie grup wyjątków i nowej składni except*, umożliwiającej obsługę wielu niezależnych wyjątków jednocześnie. PEP 678: Możliwość wzbogacania wyjątków o dodatkowe informacje za pomocą metody add_note(). 3. Nowe moduły w bibliotece standardowej PEP 680: Dodanie modułu tomllib, umożliwiającego natywne parsowanie plików TOML. 4. Ulepszenia interpretera PEP 657: Bardziej precyzyjne lokalizacje błędów w tracebackach, wskazujące dokładne wyrażenia powodujące błąd, co ułatwia debugowanie. 5. Udoskonalenia systemu typów PEP 646: Wprowadzenie wariadycznych typów ogólnych (Variadic Generics). PEP 655: Możliwość oznaczania poszczególnych elementów TypedDict jako wymaganych lub opcjonalnych. PEP 673: Wprowadzenie typu Self dla bardziej precyzyjnego definiowania metod zwracających instancje własnej klasy. PEP 675: Wprowadzenie typu LiteralString dla bezpieczniejszego operowania na literałach tekstowych. PEP 681: Transformacje klas danych (Data Class Transforms) ułatwiające tworzenie klas danych. 6. Ważne deprecjacje i usunięcia PEP 594: Deprecjacja wielu przestarzałych modułów w bibliotece standardowej, planowanych do usunięcia w Pythonie 3.13. PEP 624: Usunięcie API enkodera Py_UNICODE. PEP 670: Konwersja makr na statyczne funkcje inline dla spójności i optymalizacji.
Nowości językowe i interpreter
F-strings z mniejszymi ograniczeniami – dzięki PEP 701 f-stringi mogą zawierać znaki cudzysłowu odpowiadających delimitatorom, znaki ucieczki (\),
komentarze i wyrażenia wielolinijkowe
Nowa składnia dla typów generycznych – PEP 695 wprowadza szybszy i bardziej czytelny zapis: def first[T](items: list[T]) -> T:
Dekorator @override – PEP 698 dodaje możliwość oznaczenia metod nadpisujących w klasach, co ułatwia debugowanie i refaktoryzację
Buffer protocol w Pythonie – PEP 688 zastępuje archaiczne rozwiązania, pozwalając na bezpośredni dostęp do bufferów w Pythonie
Debugger / Profilowanie – PEP 669 wprowadza nowe API do monitorowania i profilowania działania kodu
Per-interpreter GIL – PEP 684 pozwala na niezależne blokady globalne interpretera (GIL) dla sub-interpreterów (drzwi do lepszej równoległości)
Stabilizacja Taskgroup (dodanych na początku w 3.11).
Poprawa komunikatów błędów
Sugestie przy literówkach – np. "Did you mean: 'pi'?" przy błędnym imporcie (import py from math)
Sugerowanie importu – brakujący moduł? Python zasugeruje: „Did you forget to import 'sys'?”
Sugestie dla AttributeError – np. NameError: name 'blech' is not defined. Did you mean: 'self.blech'?
Poprawione błędy składniowe przy imporcie – np. import x from y zostanie zasugerowane jako from y import x
Wydajność i optymalizacje
Szybsze comprehensions – wyrażenia list/dict/set są teraz inline’owane, co przyspiesza ich działanie nawet do 2×
Zwiększona ogólna wydajność – liczne usprawnienia („quickening”, PEP 709, BOLT optimizer) dają ~5% wzrost prędkości wykonania
Biblioteka standardowa i C-API
Usunięcie przestarzałych modułów – distutils, asynchat, asyncore, imp, smtpd, oraz komponentów takich jak gzip, hashlib, ssl, xml.etree.ElementTree
Zmiany w C-API – usunięto wstr z obiektów Unicode (PEP 623), co zmniejsza użycie pamięci
Zmiany w sqlite3 – pojawiły się metody setconfig() i getconfig(), np. do włączania/wyłączania obsługi kluczy obcych
Bezpieczeństwo – HMAC/SHA implementacje zostały zastąpione przez kod z formalną weryfikacją (HACL*) tam, gdzie OpenSSL jest niedostępny
Inne zmiany językowe i syntaktyczne
Null-byte w kodzie → teraz generuje SyntaxError, co zwiększa bezpieczeństwo
Nieprawidłowe sekwencje ucieczki → teraz dają SyntaxWarning zamiast DeprecationWarning, wyraźniej ostrzegając przed błędami
Ostrzeżenia przy dużych escape’ach oktalnych – również generują SyntaxWarning
Python 3.13 – najważniejsze zmiany (wydany 7 października 2024):
Interpreter i REPL
Całkowicie nowy interaktywny interpreter (REPL) oparty na kodzie PyPy: kolorowe prompt’y i tracebacki, edycja wieloliniowa,
tryby F1–F3 (pomoc, historia, paste mode).
Śledzenie zmian w module locals(), ułatwiające narzędziom debugowania
Równoległość i wydajność
Eksperymentalny tryb free-threaded (bez GIL), wymagający specjalnego wykonawcy (python3.13t)
Wsparcie dla eksperymentalnego JIT (Just-In-Time) – nie jest włączony domyślnie
Typowanie
Domyślne wartości dla parametrów typów (TypeVar, ParamSpec, TypeVarTuple) (PEP 696)
Dekorator warnings.deprecated() (PEP 702), „ReadOnly” w TypedDict (PEP 705) oraz TypeIs do zawężania typów (PEP 742)
Standardowa biblioteka i usunięcia
Usunięcie wielu przestarzałych modułów („dead batteries”, PEP 594)
plus lib2to3, tkinter.tix, locale.resetlocale(), typing.io, typing.re, oraz inne
Nowe funkcje: PythonFinalizationError w obsłudze finalizacji, możliwości deprecacji w argparse,
nowy backend dbm.sqlite3, funkcje w os, CLI dla random, copy.replace() i inne
Docstringi tracą wiodące wcięcia, oszczędzając pamięć i zmniejszając .pyc
Wrażenia społeczności
Nowy REPL doceniany jako znaczące usprawnienie:
„Block-level editing… Smart pasting… history mode…”
Przykład speed-upu: bez-GIL na laptopie z 4 rdzeniami 3,7× szybszy
JIT na razie wolniejszy niż zwykły interpreter – raczej ekspertyment niż użyteczne narzędzie
Według oficjalnej dokumentacji i aktualnych źródeł:
PEP 779 – Free-threaded Python:
oficjalne wsparcie dla builda bez GIL (Global Interpreter Lock). Nadal opcjonalny, ale teraz uznany oficjalnie
Nowy interpreter ("tail-call-compiled"):
zamiast jednego dużego switch-a w C, interpreter rozdzielony na wiele małych funkcji, co poprawia wydajność
— nawet do ~30 % szybszy na pewnych konfiguracjach
PEP 649 + 749 – Odkładane (deferred) oceny adnotacji: adnotacje są przechowywane i ocenia się je dopiero przy potrzebie,
co przyspiesza ładowanie modułów
PEP 750 – Template strings (t-strings):
nowa składnia t"..." umożliwia tworzenie szablonów z późnym wypełnieniem – bardziej elastycznych niż f-stringi
PEP 734 –
Wsparcie dla wielu interpreterów bez subprocess: można tworzyć subinterpreter w tym samym procesie i komunikować się między nimi
Nowe narzędzia standardowe i ulepszenia:
compression.zstd – wsparcie dla formatu Zstandard
Zero-overhead debugger interface – pozwala bezpiecznie przyłączyć się do działającego procesu bez wpływu na wydajność
Lepsze komunikaty o błędach, kolory w REPL i CLI narzędziach (unittest, argparse, json, calendar),
inspekcja UUID 6–8, szybsze generowanie UUID 3–5 (40% szybciej), nowe API C (PEP 741)
Domyślna metoda multiprocessing zmienia się z fork na forkserver poza macOS/Windows
Obsługa instalatorów Windows z nowym "install managerem" (z poziomu Microsoft Store)
Wnioski
Python 3.14 to połączenie działania wydajnościowego i jakościowego — oferuje opcje (free-threading, JIT, szybki interpreter),
a także udoskonala pracę dewelopera (lepsze błędy, REPL, debugowanie).
W porównaniu z wersjami 3.11–3.13, widać kontynuację trendu:
po solidnych fundamentach (3.11),
styl i typowanie (3.12),
ergonomia i eksperymenty (3.13),
teraz skok technologiczny oraz jeszcze lepsza użyteczność (3.14).
Dla firm rozważających migrację:
warto już teraz testować 3.14, zwłaszcza jeśli zależy Wam na równoległości, diagnostyce w produkcji,
lub lepszej wydajności z minimalnymi zmianami kodu.