Python 3.12
Python 3.12 – óbta wersja języka programowania Python, będąca kolejnym krokiem rozwoju gałęzi Python 3. Oficjalnie wydana w 2023 roku, wprowadza szereg usprawnień językowych, optymalizacji wydajnościowych oraz rozbudowę standardowej biblioteki. Wersja ta jest dostępna w implementacji CPython od numeru 3.12.0 aż po najnowsze poprawki bezpieczeństwa.
Historia i cykl wydawniczy
Rozwój Pythona 3.12 rozpoczął się w 2022 roku w ramach projektu PEP (Python Enhancement Proposals). Główne propozycje zmian zostały przyjęte w PEP 664 – „Release Schedule for Python 3.12”. Pierwsza stabilna wersja 3.12.0 trafiła do publicznego użytku 3 października 2023 roku.
| Wersja | Data wydania | Typ |
|---|---|---|
| 3.12.0 | 3 października 2023 | stable |
| 3.12.1 | 27 kwietnia 2024 | security/bug‑fix |
| 3.12.2 | 23 października 2024 | maintenance |
Główne nowości
- Nowa składnia
match2.0 – rozszerzenie strukturalnego dopasowania wprowadzone w PEP 634 otrzymało dodatkowe możliwości, m.in. dopasowanie dolistidictprzy użyciu znaków podkreślenia (_). - Typy Union w adnotacjach – od wersji 3.12 można używać operatora
|bezpośrednio w adnotacjach typów (`int | None`), co upraszcza zapis PEP 484. - Wbudowany
tomllib– parser plików TOML dostępny od razu w bibliotece standardowej, zgodny z TOML v1.0. - Szybsze działanie interpretera – optymalizacje w bytecode’ie (nowy opcode
RESUME) oraz lepsza współpraca z GC, co w praktyce skraca czas wykonywania typowych skryptów o 5‑10 %. - Nowy moduł
zoneinfo2.0 – pełne wsparcie stref czasowych zgodne z bazą danych IANA. - Ulepszenia w
asyncio– wprowadzonoTaskGrouporaz lepszą integrację ztrioianyio. - Rozbudowane wsparcie dla platformy WebAssembly – nowa wersja CPython ma wbudowane możliwości kompilacji do WASM.
Zgodność i migracja
Python 3.12 zachowuje pełną kompatybilność wsteczną względem wersji 3.11, jednak niektóre przestarzałe funkcje zostały usunięte:
- Moduł
distutilszostał całkowicie wycofany; rekomenduje się setuptools lub Poetry. - Opcja
-X oldparsernie jest już dostępna. - Metoda
asyncio.Task.current_task()została uznana za przestarzałą – zamiast niej stosuje sięasyncio.current_task().
Wydajność i optymalizacje
W CPython 3.12 wprowadzono trzy kluczowe zmiany wpływające na szybkość wykonywania kodu:
- Bytecode 2.0 – nowy format instrukcji umożliwia krótsze i bardziej zoptymalizowane odczyty.
- Zero‑cost exception handling – obsługa wyjątków nie wymaga już niepotrzebnych alokacji w przypadku niepowodzenia.
- Fast‑path dla wbudowanych typów – operacje na
list,dictisetsą realizowane przy mniejszej liczbie wywołań C‑API.
Rozwój biblioteki standardowej
Standardowa biblioteka w wersji 3.12 została rozbudowana o nowe moduły i aktualizacje istniejących:
statistics– wprowadzono funkcjęmedian_grouped.pathlib– dodano metodęread_text(encoding='utf‑8')z automatycznym wykrywaniem kodowania.json– wsparcie dla encoderów obsługującychdatetimeiDecimal.urllib– nowy podmodułurllib.proxy‑ obsługa nowoczesnych protokołów proxy.
Ekosystem i przyjęcie
W ciągu pierwszych sześciu miesięcy po premierze Python 3.12 został przyjęty przez najważniejsze projekty open‑source:
- Django 5.0 – wymaga minimum 3.10, ale rekomenduje 3.12 ze względu na poprawki w
asyncio. - NumPy 2.0 – w pełni kompatybilny, wykorzystuje nowe API
numpy.typing. - Pandas 2.2 – przyspieszone parsowanie CSV dzięki optymalizacjom w
io.
Patrząc w przyszłość
W planach zespołu Python Developer znajduje się dalsze usprawnianie kompilatora CPython oraz rozwój alternatywnych implementacji, takich jak PyPy i RustPython. Najważniejsze kierunki rozwoju to:
- Wprowadzenie optymalizacji w czasie rzeczywistym (JIT) do głównego interpretera.
- Rozszerzenie PEP 681 – automatyczna generacja stubów typów.
- Lepsza integracja z LLVM w kontekście
cffiictypes.