Il rilascio del linguaggio di programmazione Python 3.8

Dopo un anno e mezzo di sviluppo presentato una versione significativa del linguaggio di programmazione Python 3.8. Aggiornamenti correttivi per la serie Python 3.8 è previsto saranno rilasciati nel corso di 18 mesi. Le vulnerabilità critiche saranno corrette per 5 anni fino a ottobre 2024. Gli aggiornamenti correttivi per la serie 3.8 saranno rilasciati ogni due mesi, con il primo aggiornamento corretto Python 3.8.1 previsto per dicembre.

Tra le aggiunte novità:

  • Supporto operazioni di assegnazione all'interno di espressioni complesse. Con il nuovo operatore «:=» è possibile eseguire operazioni di assegnazione di valori all'interno di altre espressioni, ad esempio per evitare chiamate doppie di funzioni in strutture condizionali e durante la definizione di cicli:

    if (n := len(a)) > 10:

    while (block := f.read(256)) != »:

  • Supporto una nuova sintassi per la definizione degli argomenti delle funzioni. Quando si elencano gli argomenti durante la definizione della funzione, ora è possibile specificare il segnale «/», che consente di separare gli argomenti i cui valori possono essere assegnati solo in base all'ordine in cui vengono elencati durante la chiamata della funzione, dagli argomenti che possono essere assegnati in ordine arbitrario (sintassi «variabile=valore»). Da un punto di vista pratico, la nuova possibilità consente, nelle funzioni in Python, di emulare completamente il comportamento delle funzioni esistenti in C, evitando anche vincoli a nomi specifici, nel caso in cui il nome di un parametro debba essere cambiato in futuro.

    Il segnale «/» si aggiunge al segnale «*» precedentemente introdotto, che separa le variabili per le quali è consentita solo l'assegnazione nella forma «variabile=valore». Ad esempio, nella funzione «def f(a, b, /, c, d, *, e, f):» le variabili «a» e «b» possono essere assegnate solo nell'ordine in cui vengono elencati i valori,
    le variabili «e» e «f», solo tramite l'assegnazione «variabile=valore», e le variabili «c» e «d» in uno dei modi indicati:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, c=30, d=40, e=50, f=60)

  • Aggiunto una nuova API C
    per la configurazione dei parametri di inizializzazione di Python, che consente il controllo completo di tutta la configurazione e fornisce mezzi avanzati per la gestione degli errori. L'API proposta semplifica l'integrazione della funzionalità dell'interprete Python in altre applicazioni scritte in C;
  • Realizzato un nuovo protocollo Vectorcall per un accesso più veloce agli oggetti scritti in C. In CPython 3.8, l'accesso a Vectorcall è attualmente limitato all'uso interno, con la transizione a un'API pubblicamente disponibile prevista in CPython 3.9;
  • Aggiunti le chiamate ai Runtime Audit Hooks, che forniscono alle applicazioni e ai framework in Python l'accesso a informazioni a basso livello sullo stato di esecuzione dello script per condurre audit delle azioni eseguite (ad esempio, è possibile tenere traccia dell'importazione di moduli, dell'apertura di file, dell'uso della tracciatura, delle chiamate a socket di rete, dell'esecuzione di codice tramite exec, eval e run_mod);
  • Nel modulo pickle è garantita supporto del protocollo Pickle 5, utilizzato per serializzare e deserializzare oggetti. Pickle consente di ottimizzare il trasferimento di grandi volumi di dati tra processi Python in configurazioni multicore e multi-nodo, riducendo il numero di operazioni di copia della memoria e applicando tecniche di ottimizzazione aggiuntive, come l'uso di algoritmi di compressione specifici per determinati dati. La quinta versione del protocollo è nota per l'aggiunta della modalità di trasferimento separato (out-of-band), in cui i dati possono essere trasferiti separatamente dal flusso principale di pickle.
  • Per impostazione predefinita, è attivata la quarta versione del protocollo Pickle, che rispetto alla terza versione precedentemente proposta come predefinita consente di ottenere prestazioni superiori e una riduzione della dimensione dei dati trasmessi;
  • Nel modulo typing sono state introdotte diverse nuove funzionalità:
    • Classe TypedDict per array associativi, nei quali per i dati associati alle chiavi è specificata esplicitamente l'informazione sul tipo ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tipo Literal, consente di limitare un parametro o un valore di ritorno a determinati valori predefiniti ("Literal['connected', 'disconnected']").
    • La costruzione "Final" consente di definire valori di variabili, funzioni, metodi e classi che non possono essere modificati o riassegnati ("pi: Final[float] = 3.1415926536").
  • È stata aggiunta la possibilità di assegnare una cache ai file compilati in bytecode, memorizzati in una directory separata e distinta dalle cartelle contenenti codice. Il percorso per il salvataggio dei file di bytecode è specificato tramite la variabile PYTHONPYCACHEPREFIX o l'opzione "-X pycache_prefix";
  • supporto per l'interfaccia la possibilità di creare build di debug di Python che utilizzano un ABI identico a quello di rilascio, il che consente di caricare estensioni scritte in C che sono state compilate per versioni stabili.
  • Nelle stringhe f (letterali formattabili con prefisso 'f') è supportato l'operatore '=' (ad esempio, 'f'{expr=''}'), che consente di convertire un'espressione in testo per semplificare il debug. Ad esempio:

    ››› user = 'eric_idle'
    ››› member_since = date(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    «user='eric_idle' member_since=datetime.date(1975, 7, 31)»

  • L'espressione «continua» è consentita all'interno del blocco finalmente;
  • È stato aggiunto un nuovo modulo multiprocessing.shared_memory, che consente di utilizzare segmenti di memoria condivisa in configurazioni multi-processo;
  • Su piattaforma Windows, l'implementazione di asyncio è stata tradotta per utilizzare la classe ProactorEventLoop;
  • Le prestazioni dell'istruzione LOAD_GLOBAL sono aumentate di circa il 40% grazie all'uso di un nuovo meccanismo di caching del codice oggetto.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster