Python je interpretirani programski jezik visoke razine čija filozofija naglašava čitljivost koda.
Nakon godinu dana razvoja, objavljena je nova verzija programskog jezika Python 3.11, nova grana bit će podržana godinu i pol, nakon čega će se još tri i pol godine formirati zakrpe s ranjivostima.
Istovremeno je započ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).
Ogranak Python 3.12 bit će u alfa izdanjima sedam mjeseci, tijekom kojih će se dodavati nove značajke i ispravljati greške. Nakon toga trajat će tri mjeseca beta testiranja, tijekom kojih će dodavanje novih značajki biti zabranjeno, a puna pozornost posvetit će se ispravcima grešaka. Posljednja dva mjeseca prije lansiranja, ogranak će biti u fazi kandidata za lansiranje, kada će se dogoditi konačna stabilizacija.
Glavne nove značajke Pythona 3.11
U ovoj novoj verziji Obavljen je značajan rad na optimizaciji performansi, jer nova grana uključuje povezane promjene uz ubrzanje i inline implementaciju poziva funkcija, korištenje brzih interpretatora tipičnih operacija, kao i optimizacije koje su pripremili projekti Cinder i HotPy. Ovisno o vrsti opterećenja, brzina izvršavanja koda raste između 10% i 60%. U prosjeku, performanse pri prolasku testa pyperformance porasle su za 25%.
Mehanizam predmemoriranja je redizajniran bajt koda, što je smanjilo vrijeme pokretanja tumača za 10-15%. Objekte s kodom i bajt-kodom sada statički dodjeljuje tumač, što je omogućilo eliminaciju koraka razotkrivanja bajt-koda dohvaćenog iz predmemorije i pretvaranja objekata s kodom kako bi se smjestili u hrpu memorije.
Dodano podrška za skupine izuzetaka, što programu daje mogućnost podizanja i obrade nekoliko različitih iznimaka u isto vrijeme. Nove vrste iznimaka ExceptionGroup i BaseExceptionGroup predlažu se za grupiranje više iznimaka zajedno, a izraz "except* "dodan je za odvajanje iznimaka iz grupe.
Dodan je poseban tip LiteralString tako sam može uključivati literalne nizove koji su kompatibilni s tipom LiteralString (to jest, goli nizovi i nizovi tipa LiteralString, ali ne proizvoljni ili miješani nizovi tipa str). Tip LiteralString može se koristiti za ograničavanje prosljeđivanja argumenata niza funkcijama, proizvoljnu zamjenu dijelova niza gdje može dovesti do ranjivosti, na primjer, prilikom generiranja nizova za SQL upite ili naredbe ljuske.
Uz to, također omogućena je mogućnost označavanja pojedinih elemenata rječnika (TypedDict) s oznakama Obavezno i Nepotrebno za određivanje obaveznih i neobaveznih polja (prema zadanim postavkama sva deklarirana polja su obavezna ako ukupni parametar nije postavljen na Lažna).
Dodana @dataclass_transform klasa, metoda i dekorater funkcija, kada je navedeno, provjera statičkog tipa tretira objekt kao da koristi @dataclasses.dataclass dekorater.
Od ostalih promjena koje se ističu u ovoj novoj verziji:
- Dodana je mogućnost korištenja atomskog grupiranja ((?>…)) i ljubomornih (posesivnih) kvantifikatora (*+, ++, ?+, {m,n}+) u regularnim izrazima.
- Dodan je tip TypeVarTuple koji omogućuje korištenje varijabilnih generičkih oblika, za razliku od TypeVar koji ne pokriva jedan tip, već proizvoljan broj tipova.
- Standardna biblioteka uključuje tomllib modul s funkcijama za analizu TOML formata.
- Metoda add_note() dodana je klasi BaseException, koja omogućuje da se tekstualna bilješka priloži iznimci, na primjer za dodavanje kontekstualnih informacija koje nisu bile dostupne u trenutku kada je iznimka izbačena.
- Poseban tip Self je dodan da predstavlja trenutnu privatnu klasu. Self se može koristiti za označavanje metoda koje vraćaju instancu vaše klase na jednostavniji način od korištenja TypeVar.
- Dodana opcija naredbenog retka "-P" i varijabla okruženja PYTHONSAFEPATH za onemogućavanje automatskog povezivanja potencijalno nesigurnih putova datoteka na sys.path.
- Uslužni program py.exe za Windows platformu značajno je poboljšan kako bi podržao sintaksu "-V:". / " pored "- . ».
- Mnoge C API makronaredbe pretvorene su u regularne ili statičke ugrađene funkcije
- Moduli uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev i sunau su zastarjeli i bit će uklonjeni iz Pythona. 3.13 izdanje.
- Uklonjene PyUnicode_Encode* funkcije.
- Klasa TaskGroup dodana je modulu asyncio s implementacijom upravitelja asinkronog konteksta koji čeka da grupa zadataka završi.
- Dodavanje zadataka u grupu vrši se metodom create_task().
Konačno ako vas zanima više o tome, detalje možete provjeriti u sljedeći link.