Python este un limbaj de programare interpretat la nivel înalt a cărui filozofie pune accent pe lizibilitatea codului său.
După un an de dezvoltare, a fost publicată noua versiune a limbajului de programare Python 3.11, noua ramură va fi susținută timp de un an și jumătate, după care se vor forma patch-uri cu vulnerabilități pentru încă trei ani și jumătate.
În același timp, a început testarea alfa a ramurii Python 3.12 (conform noului program de dezvoltare, lucrul la o nouă ramură începe cu cinci luni înainte de lansarea ramurii anterioare și ajunge la testarea alfa până la următoarea versiune).
Ramura Python 3.12 va fi în versiuni alfa timp de șapte luni, timp în care vor fi adăugate noi funcții și erorile remediate. După aceea, testarea beta va avea loc timp de trei luni, timp în care adăugarea de noi funcții va fi interzisă și se va acorda toată atenția remedierii erorilor. În ultimele două luni înainte de lansare, filiala se va afla în stadiul de candidat la lansare, moment în care va avea loc stabilizarea finală.
Principalele caracteristici noi ale Python 3.11
În această nouă versiune S-a făcut o muncă semnificativă pentru optimizarea performanței, deoarece noua ramură include modificări aferente cu accelerare și implementare inline a apelurilor de funcții, utilizarea interpreților rapidi ai operațiunilor tipice, precum și optimizările pregătite de proiectele Cinder și HotPy. În funcție de tipul de încărcare, viteza de execuție a codului crește între 10% și 60%. În medie, performanța la trecerea suita de teste pyperformance a crescut cu 25%.
Mecanismul de stocare în cache a fost reproiectat de bytecode, care a redus timpul de pornire a interpretului cu 10-15%. Obiectele cu cod și bytecode sunt acum alocate static de către interpret, ceea ce a făcut posibilă eliminarea pașilor de desfacere a bytecode preluat din cache și conversia obiectelor cu cod pentru a le plasa în memoria heap.
Adăugat suport pentru grupurile de excepție, care oferă programului capacitatea de a ridica și procesa mai multe excepții diferite în același timp. Noile tipuri de excepții ExceptionGroup și BaseExceptionGroup sunt propuse pentru a grupa mai multe excepții împreună, iar expresia „except*” este adăugată pentru a separa excepțiile dintr-un grup.
S-a adăugat un tip special LiteralString atât de singur poate include șiruri literale care sunt compatibile cu tipul LiteralString (adică șiruri goale și șiruri de tip LiteralString, dar nu șiruri arbitrare sau mixte de tip str). Tipul LiteralString poate fi folosit pentru a limita transmiterea de argumente șir la funcții, înlocuirea arbitrară a părților șirurilor unde poate duce la vulnerabilități, de exemplu, la generarea de șiruri pentru interogări SQL sau comenzi shell.
Pe lângă asta, de asemenea este oferită capacitatea de a marca elemente individuale ale dicționarelor (TypedDict) cu indicatori Obligatoriu și Nesolicitat pentru a determina câmpurile obligatorii și opționale (în mod implicit, toate câmpurile declarate sunt obligatorii dacă parametrul total nu este setat la Fals).
S-a adăugat clasa, metoda și decoratorul de funcție @dataclass_transform, când este specificat, verificatorul de tip static tratează obiectul ca și cum ar folosi decoratorul @dataclasses.dataclass.
Dintre celelalte modificări care se remarcă în această nouă versiune:
- S-a adăugat capacitatea de a folosi cuantificatori de grupare atomică ((?>…)) și geloși (posesivi) (*+, ++, ?+, {m,n}+) în expresiile regulate.
- A fost adăugat tipul TypeVarTuple, care permite utilizarea genericelor variabile, spre deosebire de TypeVar, care acoperă nu un tip, ci un număr arbitrar de tipuri.
- Biblioteca standard include modulul tomllib cu funcții pentru a analiza formatul TOML.
- Metoda add_note() a fost adăugată la clasa BaseException, care permite atașarea unei note text la excepție, de exemplu pentru a adăuga informații contextuale care nu erau disponibile în momentul în care a fost lansată excepția.
- A fost adăugat un tip special Self pentru a reprezenta clasa privată curentă. Self poate fi folosit pentru a adnota metode care returnează o instanță a clasei dvs. într-un mod mai simplu decât folosind TypeVar.
- S-au adăugat opțiunea de linie de comandă „-P” și variabila de mediu PYTHONSAFEPATH pentru a dezactiva conexiunea automată a căilor de fișiere potențial nesigure la sys.path.
- Utilitarul py.exe pentru platforma Windows a fost îmbunătățit semnificativ pentru a suporta sintaxa „-V:”. / " pe lângă "- . ».
- Multe macrocomenzi C API au fost convertite în funcții inline obișnuite sau statice
- Modulele uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev și sunau au fost depreciate și vor fi eliminate din Python. Versiunea 3.13.
- S-au eliminat funcțiile PyUnicode_Encode*.
- Clasa TaskGroup a fost adăugată la modulul asyncio odată cu implementarea unui manager de context asincron care așteaptă finalizarea grupului de activități.
- Adăugarea de sarcini la un grup se face folosind metoda create_task().
În cele din urmă dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile în următorul link.