Nadchodzi nowa stabilna wersja Pythona 3.12 i oto jej nowe funkcje

Logo Pythona

Python to język programowania wysokiego poziomu.

Po roku rozwoju, Ogłoszono wydanie wersji stabilnej a także początek fazy testów alfa języka programowania Python 3.12 i Python 3.13 (odpowiednio). Wspomniano, że ta nowa gałąź Pythona 3.12 będzie wspierana przez półtora roku, po czym przez kolejne trzy i pół roku będą generowane poprawki eliminujące luki.

Zaprezentowana nowa wersja Pythona 3.12 zawiera ulepszenia w zakresie elastyczność analizy f-string. Z tą poprawą teraz wiele ograniczeń można pominąć, ponieważ na przykład możesz teraz zawierać dowolne prawidłowe wyrażenie w Pythonie, w tym wyrażenia wielowierszowe, komentarze, ukośniki odwrotne i sekwencje specjalne Unicode. Dodatkowo, wewnętrzne ciągi znaków umożliwiają teraz ponowne użycie tych samych cudzysłowów, tj. wewnątrz można teraz ponownie użyć podwójnych cudzysłowów bez konieczności zmiany na pojedyncze cudzysłowy.

Na przykład:

f"""{f'''{f'{f"{1+1}"}'}'''}""

Można teraz dowolnie zagnieżdżać:

f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"

Kolejną wyróżniającą się zmianą jest obsługa izolowanych podinterpretatorów i oddzielnych blokad globalnych, które mają na celu zwiększenie efektywności wykorzystania zasobów w systemach wielordzeniowych, ponieważ dla różnych interpreterów w ramach procesu CPython umożliwia jednoczesne działanie kilku interpreterów w procesie. W obecnej postaci ta funkcja jest obecnie dostępna tylko za pośrednictwem C-API (obsługa Python API pojawi się w następnej głównej gałęzi).

Poza tym podkreśla się, żeZwiększono zawartość informacyjną komunikatów o błędach poszerzono także zakres wyjątków, oferując zalecenia mające na celu wyeliminowanie błędów typograficznych. Na przykład wyświetlane są teraz sugestie dotyczące importowania zapomnianych standardowych modułów bibliotecznych i sugestie dotyczące przedrostka „self”.

Dodano możliwość użycia protokołu buforowego w kodzie Pythona. Klasy udostępniające metodę „__buffer__()” mogą być teraz używane jako typy operujące bezpośrednio na danych binarnych w pamięci.

Moduł sys.monitoring jest proponowany do debugowania i profilowania, umożliwiając monitorowanie zdarzeń w CPython, takich jak wywołania, zwroty funkcji, wykonanie dowolnych linii kodu, wyjątki i przejścia przy minimalnym nakładzie pracy.

Interpreter implementuje obsługę podsystemu wydajności jądra Linuksa, który umożliwia określenie nazw funkcji Pythona podczas profilowania przy użyciu narzędzia wydajnościowego (poprzednio w śladach określano tylko nazwy funkcji C).

Jeśli chodzi o poprawę wydajności, wspomniano o tym kontynuacja optymalizacji, z którym Uzyskano całkowity wzrost wydajności szacowany na 5%., również został dodany eksperymentalne wsparcie dla optymalizatora binarnego BOLT do procesu kompilacji, zwiększając wydajność o 1-5%, podczas gdy wydajność pakietu asyncio znacznie się poprawiła (niektóre testy wykazują przyspieszenie o 75%).

Zaimplementowano wbudowane rozszerzanie wyrażeń listowych, co przyspiesza pracę ze wyrażeniami listowymi nawet dwukrotnie (w przypadku kodu aktywnie korzystającego ze wyrażeń listowych testy wykazały ogólny wzrost wydajności o 11%).

Aby poprawić bezpieczeństwo, zintegrowane implementacje Algorytmy SHA1, SHA3, SHA2-384, SHA2-512 i MD5 w hashlib zostały zastąpione z formalnie zweryfikowanymi opcjami z projektu HACL* (wbudowane implementacje stosowane są tylko w przypadku braku OpenSSL).

z inne zmiany które wyróżniają się:

  • Moduł posiada rozszerzoną obsługę systemu Windows.
  • Python implementuje ochronę przed przepełnieniem stosu.
    Przyspieszono tworzenie klasy asyncio.Task.
  • Rozmiar obiektów Unicode został zmniejszony o 8 do 16 bajtów.
  • Przyspieszono operacje na wyrażeniach regularnych re.sub(), re.subn() i re.Pattern.
  • Uruchamianie kontroli isinstance() dla niektórych protokołów zostało przyspieszone od 2 do 20 razy.
  • Znacząco (w niektórych testach aż do 64%) przyspieszono funkcje tokenize.tokenize() i tokenize.generate_tokens().
  • Przyspieszono ładowanie atrybutów i wywoływanie metody super().
  • Dla klas i funkcji ogólnych zaproponowano nową, bardziej zwartą składnię adnotacji typów.
  • Moduł przeglądarki internetowej nie obsługuje już starszych przeglądarek, w tym Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, Firebird i Firefox do wersji 36.
  • W ramach przygotowań do przyszłych optymalizacji zmieniono wewnętrzną reprezentację liczb całkowitych.

Na koniec, jak już wspomniano, rozpoczęły się testy alfa Pythona 3.13, w których pojawił się tryb kompilacji CPython bez globalnej blokady interpretera (GIL, globalna blokada tłumacza).

Gałąź Python 3.13 będzie w fazie alfa przez siedem miesięcy, podczas którego będą dodawane nowe funkcje i naprawiane błędy zgodnie z nowym harmonogramem rozwoju, prace nad nową gałęzią rozpoczynają się na pięć miesięcy przed wydaniem poprzedniej gałęzi i do czasu, gdy kolejna wersja osiągnie fazę testową alfa.

Następnie wersje beta będą testowane przez trzy miesiące, podczas których dodawanie nowych funkcji będzie zabronione, a cała uwaga zostanie skupiona na naprawianiu błędów. Przez ostatnie dwa miesiące przed wydaniem gałąź będzie w fazie Release Candidate, gdzie nastąpi ostateczna stabilizacja.

Wreszcie tak chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły w następujący link.