Python 3.11 arriva con miglioramenti delle prestazioni, riprogettazione della memorizzazione nella cache e altro ancora

Python

Python è un linguaggio di programmazione interpretato di alto livello la cui filosofia enfatizza la leggibilità del suo codice.

Dopo un anno di sviluppo, è stata rilasciata la nuova versione del linguaggio di programmazione Python, la 3.11 . Il nuovo ramo sarà supportato per un anno e mezzo, dopodiché verranno rilasciate patch per altri tre anni e mezzo per risolvere le vulnerabilità.

Contemporaneamente, è iniziata la fase di test alfa del ramo Python 3.12 (secondo il nuovo programma di sviluppo, il lavoro su un nuovo ramo inizia cinque mesi prima del rilascio del ramo precedente e raggiunge la fase di test alfa al momento della versione successiva).

Il ramo Python 3.12 sarà nelle versioni alpha per sette mesi, durante i quali verranno aggiunte nuove funzionalità e corretti i bug. Dopodiché, i beta test si svolgeranno per tre mesi, durante i quali sarà vietata l'aggiunta di nuove funzionalità e verrà data piena attenzione alla risoluzione dei bug. Negli ultimi due mesi prima del lancio, la filiale sarà nella fase di candidato al lancio, a quel punto avrà luogo la stabilizzazione finale.

Principali novità di Python 3.11

Questa nuova versione include un lavoro significativo per ottimizzare le prestazioni . Il nuovo ramo incorpora modifiche relative all'accelerazione e al deployment inline delle chiamate di funzione , all'uso di interpreti veloci per le operazioni tipiche e alle ottimizzazioni sviluppate dai progetti Cinder e HotPy. A seconda del carico di lavoro, la velocità di esecuzione del codice aumenta tra il 10% e il 60%. In media, le prestazioni sulla suite di test pyperformance sono aumentate del 25%.

Il meccanismo di caching del bytecode è stato riprogettato , riducendo i tempi di avvio dell'interprete del 10-15%. Gli oggetti contenenti bytecode vengono ora allocati staticamente dall'interprete, eliminando le fasi di decodifica del bytecode recuperato dalla cache e di conversione degli oggetti contenenti bytecode per il posizionamento dinamico in memoria.

È stato aggiunto il supporto per i gruppi di eccezioni , consentendo al programma di generare ed elaborare simultaneamente diverse eccezioni. Sono stati proposti nuovi tipi di eccezione, ExceptionGroup e BaseExceptionGroup, per raggruppare e combinare più eccezioni, ed è stata aggiunta l'espressione "except*" per separare le eccezioni all'interno di un gruppo.

È stato aggiunto uno speciale tipo LiteralString che può includere solo stringhe letterali compatibili con il tipo LiteralString (ovvero, stringhe semplici e stringhe di tipo LiteralString, ma non stringhe arbitrarie o combinate di tipo str). Il tipo LiteralString può essere utilizzato per limitare il passaggio di argomenti stringa alle funzioni, impedendo la sostituzione arbitraria di parti di stringhe dove potrebbero sorgere vulnerabilità, ad esempio, durante la generazione di stringhe per query SQL o comandi shell.

Inoltre, è prevista la possibilità di contrassegnare i singoli elementi dei dizionari tipizzati (TypedDict) con i marcatori "Obbligatorio" e "Non obbligatorio" per determinare i campi obbligatori e facoltativi (per impostazione predefinita, tutti i campi dichiarati sono obbligatori se il parametro totale non è impostato su False).

È stato aggiunto il decoratore di classi, metodi e funzioni @dataclass_transform ; quando specificato, il controllo statico dei tipi tratta l'oggetto come se utilizzasse il decoratore @dataclasses.dataclass.

Tra le altre modifiche che si distinguono in questa nuova versione:

  • Aggiunta la possibilità di utilizzare il raggruppamento atomico ((?>…)) e i quantificatori gelosi (possessivi) (*+, ++, ?+, {m,n}+) nelle espressioni regolari.
  • È stato aggiunto il tipo TypeVarTuple, che consente l'uso di generici variabili, a differenza di TypeVar, che copre non un tipo, ma un numero arbitrario di tipi.
  • La libreria standard include il modulo tomllib con funzioni per analizzare il formato TOML.
  • Il metodo add_note() è stato aggiunto alla classe BaseException, che consente di allegare una nota di testo all'eccezione, ad esempio per aggiungere informazioni contestuali che non erano disponibili al momento in cui è stata generata l'eccezione.
  • È stato aggiunto un tipo speciale Self per rappresentare l'attuale classe privata. Self può essere utilizzato per annotare metodi che restituiscono un'istanza della classe in un modo più semplice rispetto all'utilizzo di TypeVar.
  • Aggiunta l'opzione della riga di comando "-P" e la variabile di ambiente PYTHONSAFEPATH per disabilitare la connessione automatica di percorsi di file potenzialmente non sicuri a sys.path.
  • L'utilità py.exe per la piattaforma Windows è stata notevolmente migliorata per supportare la sintassi "-V:". / " inoltre "- . ».
  • Molte macro API C sono state convertite in funzioni inline regolari o statiche
  • I moduli uu, cgi, pipe, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev e sunau sono stati deprecati e verranno rimossi da Python. 3.13 rilascio.
  • Rimosse le funzioni PyUnicode_Encode*.
  • La classe TaskGroup è stata aggiunta al modulo asyncio con l'implementazione di un gestore di contesto asincrono che attende il completamento del gruppo di attività.
  • L'aggiunta di attività a un gruppo viene eseguita utilizzando il metodo create_task().

Infine, se siete interessati ad approfondire l'argomento , potete trovare maggiori dettagli al seguente link.


Aggiungi come fonte preferita in Google