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 pubblicata la nuova versione del linguaggio di programmazione Python 3.11, il nuovo ramo sarà supportato per un anno e mezzo, dopodiché si formeranno patch con vulnerabilità per altri tre anni e mezzo.

Allo stesso tempo, sono iniziati i test alpha del ramo Python 3.12 (secondo il nuovo programma di sviluppo, i lavori su un nuovo ramo iniziano cinque mesi prima del rilascio del ramo precedente e raggiungono l'alpha testing entro la 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

In questa nuova versione È stato svolto un lavoro significativo per ottimizzare le prestazioni, poiché la nuova filiale include modifiche correlate con accelerazione e distribuzione in linea di chiamate di funzione, l'utilizzo di interpreti veloci di operazioni tipiche, nonché le ottimizzazioni preparate dai progetti Cinder e HotPy. A seconda del tipo di carico, la velocità di esecuzione del codice aumenta tra il 10% e il 60%. In media, le prestazioni superando la suite di test pyperformance sono aumentate del 25%.

Il meccanismo di memorizzazione nella cache è stato riprogettato di bytecode, che ha ridotto il tempo di avvio dell'interprete del 10-15%. Gli oggetti con codice e bytecode vengono ora allocati staticamente dall'interprete, il che ha permesso di eliminare i passaggi di disfacimento del bytecode prelevato dalla cache e di convertire gli oggetti con il codice per inserirli nella memoria heap.

Aggiunto supporto per gruppi di eccezioni, che offre al programma la possibilità di sollevare ed elaborare diverse eccezioni contemporaneamente. Vengono proposti nuovi tipi di eccezione ExceptionGroup e BaseExceptionGroup per raggruppare più eccezioni insieme e l'espressione "exception*" viene aggiunta per separare le eccezioni da un gruppo.

Aggiunto un tipo speciale di LiteralString solo questo può includere stringhe letterali compatibili con il tipo LiteralString (ovvero, stringhe nude e stringhe di tipo LiteralString, ma non stringhe arbitrarie o miste di tipo str). Il tipo LiteralString può essere utilizzato per limitare il passaggio di argomenti stringa alle funzioni, la sostituzione arbitraria di parti di stringhe dove può portare a vulnerabilità, ad esempio, durante la generazione di stringhe per query SQL o comandi della shell.

Oltre a questo, anche viene fornita la possibilità di contrassegnare i singoli elementi dei dizionari (TypedDict) con i flag Required e Not Required per determinare i campi obbligatori e facoltativi (per impostazione predefinita, tutti i campi dichiarati sono obbligatori se il parametro total non è impostato su Impostore).

Aggiunto @dataclass_transform decoratore di classi, metodi e funzioni, quando specificato, il controllo del tipo statico 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 sei interessato a saperne di più, puoi controllare i dettagli in il seguente collegamento. 


Il contenuto dell'articolo aderisce ai nostri principi di etica editoriale. Per segnalare un errore fare clic su qui.

Puoi essere il primo a lasciare un commento

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.