Python 3.11 stiže s poboljšanjima performansi, redizajn keširanja i još mnogo toga

piton

Python je interpretirani programski jezik visokog nivoa čija filozofija naglašava čitljivost njegovog koda.

Nakon godinu dana razvoja, objavljena je nova verzija programskog jezika Python 3.11, nova grana će biti podržana godinu i po dana, nakon čega će se formirati zakrpe sa ranjivostima još tri i po godine.

Istovremeno je počelo alfa testiranje grane Python 3.12 (prema novom rasporedu razvoja, rad na novoj grani počinje pet mjeseci prije izlaska prethodne grane i dostiže alfa testiranje do sljedeće verzije).

Grana Python 3.12 će biti u alfa izdanjima sedam mjeseci, tokom kojih će biti dodane nove funkcije i ispravljene greške. Nakon toga, beta testiranje će se odvijati tri mjeseca, tokom kojih će dodavanje novih funkcija biti zabranjeno i puna pažnja će se posvetiti ispravkama grešaka. Posljednja dva mjeseca prije pokretanja, podružnica će biti u fazi kandidata za pokretanje, u kojoj će se tački dogoditi konačna stabilizacija.

Glavne nove karakteristike Pythona 3.11

U ovoj novoj verziji Urađen je značajan posao na optimizaciji performansi, jer nova grana uključuje povezane promjene sa ubrzanjem i inline implementacijom poziva funkcija, korištenje brzih interpretatora tipičnih operacija, kao i optimizacije koje su pripremili projekti Cinder i HotPy. U zavisnosti od vrste opterećenja, brzina izvršavanja koda se povećava između 10% i 60%. U prosjeku, performanse pri polaganju pyperformance test paketa porasle su za 25%.

Mehanizam keširanja je redizajniran bajtkoda, što je smanjilo vrijeme pokretanja tumača za 10-15%. Objekti sa kodom i bajtkodom sada su statički alocirani od strane interpretatora, što je omogućilo eliminaciju koraka otkrivanja bajtkoda koji se preuzima iz keš memorije i pretvaranja objekata sa kodom kako bi se smjestili u memoriju hrpe.

Dodano podrška za grupe izuzetaka, što programu daje mogućnost podizanja i obrade nekoliko različitih izuzetaka u isto vrijeme. Predloženi su novi tipovi izuzetaka ExceptionGroup i BaseExceptionGroup da grupišu više izuzetaka zajedno, a izraz "osim*" se dodaje odvojenim izuzecima iz grupe.

Dodan poseban tip LiteralString tako sam može uključiti literalne nizove koji su kompatibilni s tipom LiteralString (to jest, goli nizovi i nizovi tipa LiteralString, ali ne proizvoljni ili mješoviti stringovi tipa str). Tip LiteralString se može koristiti za ograničavanje prosljeđivanja argumenata stringova funkcijama, proizvoljne zamjene dijelova stringova gdje može dovesti do ranjivosti, na primjer, prilikom generiranja stringova za SQL upite ili naredbe ljuske.

Pored toga, takođe obezbeđena je mogućnost obeležavanja pojedinih elemenata rečnika (TypedDict) sa oznakama Required i Not Required za određivanje obaveznih i opcionih polja (podrazumevano, sva deklarisana polja su obavezna ako ukupni parametar nije postavljen na Lažna).

Dodan @dataclass_transform klasu, metodu i dekorater funkcije, kada je specificirano, provjeravač statičkog tipa tretira objekt kao da koristi @dataclasses.dataclass dekorator.

Od ostalih promjena koje se ističu u ovoj novoj verziji:

  • Dodata mogućnost upotrebe atomskog grupisanja ((?>…)) i ljubomornih (posesivnih) kvantifikatora (*+, ++, ?+, {m,n}+) u regularnim izrazima.
  • Dodan je tip TypeVarTuple, koji omogućava korištenje varijabilnih generika, za razliku od TypeVar, koji ne pokriva jedan tip, već proizvoljan broj tipova.
  • Standardna biblioteka uključuje modul tomllib sa funkcijama za raščlanjivanje TOML formata.
  • Metoda add_note() dodana je klasi BaseException, koja omogućava da se tekstualna napomena priloži izuzetku, na primjer da se dodaju kontekstualne informacije koje nisu bile dostupne u vrijeme kada je izuzetak izbačen.
  • Dodan je poseban tip Self koji predstavlja trenutnu privatnu klasu. Self se može koristiti za označavanje metoda koje vraćaju instancu vaše klase na jednostavniji način nego korištenje TypeVar.
  • Dodata opcija komandne linije "-P" i varijabla okruženja PYTHONSAFEPATH za onemogućavanje automatskog povezivanja potencijalno nesigurnih putanja datoteka na sys.path.
  • Uslužni program py.exe za Windows platformu je značajno poboljšan kako bi podržao "-V:" sintaksu. / " pored "- . ».
  • Mnogi C API makroi su pretvoreni u regularne ili statičke inline funkcije
  • Uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev i sunau moduli su zastarjeli i bit će uklonjeni iz P-a. 3.13 izdanje.
  • Uklonjene funkcije PyUnicode_Encode*.
  • Klasa TaskGroup je dodana asyncio modulu sa implementacijom asinhronog upravitelja konteksta koji čeka da se grupa zadataka završi.
  • Dodavanje zadataka u grupu vrši se pomoću metode create_task().

Konačno ako ste zainteresirani da saznate više o tome, detalje možete provjeriti u sljedeći link. 


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.