È arrivato quel periodo dell'anno...

 ... quando un'altra estate se n'è andata, io mi sento sempre più vecchio e una nuova versione di Python arriva puntuale, subito prima di Halloween. 

E quindi Python 3.10 è tra noi, accompagnato da una specie di logo un po' tamarro (ma ora io dico... c'è rimasto qualcuno che ricorda com'era una volta, senza tanti serpenti?). Nel frattempo Python 3.8 va fuori supporto, e questo significa che adesso ufficialmente non c'è più una versione di Python "viva" che si installa su Windows 7. Il che va benissimo, a essere onesti: Windows 7 è un ferrovecchio, non ha senso usarlo ancora. 

 

E dunque, questo switch...

Che cosa c'è di nuovo in questa versione? Beh, la cosa enorme è ovviamente la nuova sintassi per "switch", come avevo anticipato a proposito della traduzione del Tutorial. Niente da dire, è una feature potenzialmente molto interessante... e anche molto laboriosa e piena di corner case insidiosi. La sua preparazione è stata un parto lungo e travagliato da parte degli sviluppatori, tanto che adesso "switch" è documentato non da una, ma bensì da tre PEP, addirituttura: la PEP 634 spiega di che cosa si tratta, la PEP 635 cerca di giustificare perché è stato fatto in questo modo, e infine la PEP 636 è niente meno che un tutorial che spiega come si usa in pratica tutto l'affare. 

Quando vedete che per una feature ci sono 3 PEP, già capite che c'è stato da discutere (eufemismo). Ma tutta la vicenda è passata attraverso almeno un'altra PEP bocciata e un diluvio di commenti e proposte lungo più di un anno. Si tratta di sicuro della decisione più controversa che è stata presa da quando Guido si è ritirato da BDFL della comunità (e si era ritirato, guarda caso, in gran parte per le conseguenze di un'altra lunghissima discussione, all'epoca era sul walrus operator). 

 

Anche la PEP-tutorial, ci mancava

E qui apro una parentesi. A mia memoria, nessuno aveva mai pensato di usare una PEP solo a scopo di documentazione. Naturalmente quasi tutte le PEP contengono, in qualche modo, della documentazione: ma si tratta di osservazioni molto tecniche, utili al massimo per chi desidera approfondire un argomento e capire le ragioni dietro a certe scelte. Ma addirittura un tutorial in una PEP... è parecchio strano, devo dire. E apre tutta una serie di domande sullo stato effettivo della documentazione di Python che, come ho già avuto modo di notare, talvolta è... problematico.


Quanto al resto, non c'è molto da dire

A parte "switch", le novità (giustamente) non sono moltissime. Un punto curioso da notare è che il nuovo parser PEG per la sintassi di Python, introdotto dietro le quinte nella 3.9, sta cominciando a dare i suoi frutti. 

Mettere a punto un nuovo parser è il progetto principale a cui Guido (con Pablo Salgado) si è dedicato quando si è potuto sgravare dei suoi compiti burocratici di BDFL... e si vede che aveva proprio voglia di lavorarci perché pare che sia un gioiellino. Le conseguenze si faranno vedere per molti anni nel futuro, permettendo alla sintassi di Python di arricchirsi, all'occorrenza, superando diverse ristrettezze che affliggevano il vecchio parser. 

Una prima conseguenza è che adesso è possibile andare a capo nei "with" multipli, se si usano le parentesi: in Python 3.8 questo è un errore di sintassi:

with (open("blabla") as f1, 
open("blabla") as f2):
pass

 In Python 3.9 già funziona ma non è documentato, e adesso in Python 3.10 è diventato ufficiale.

 

Oh mamma, non è che arriva Python 4?!

Ma forse l'aspetto più curioso di questa nuova versione riguarda una... non-aggiunta, in realtà. La PEP 563, sulla valutazione ritardata delle type annotation, è stata... ritardata (con gioco di parole inevitabile) forse alla 3.11, forse anche dopo. Di per sé la feature proposta è molto utile e anche molto richiesta, tanto in effetti esiste già, addirittura dalla 3.7, ma solo come un'opzione attivabile con "from __future__ import annotations". 

Era stato deciso di rendere definitiva questa feature, ma poi ci si è resi conto che avrebbe rotto troppo codice esistente in giro... e insomma non si sa più bene come procedere. Il fatto è che questa valutazione ritardata è parecchio non-retrocompatibile, in effetti: al punto che all'epoca si era deciso che sarebbe stata introdotta in via definitiva solo in (rullo di tamburi) Python 4. 

Ma nel frattempo non sembra proprio che ci sia un grande appetito per (squillo di trombe) Python 4, dopo tutto il pasticcio epico che era già successo all'epoca di Python 3. Quindi non ci sono piani precisi per una quarta versione del linguaggio, se non l'assicurazione generica che questa volta le modifiche saranno molto, molto più indolori. E però intanto delle feature non-retrocompatibili come la PEP 563 restano nel limbo, e qualcosa bisognerà pur decidere, prima o poi. Staremo a vedere. Nel frattempo, qui trovate le ragioni della non-release della feature, se volete approfondire.


Io la mia parte l'ho fatta, comunque

Nel mio piccolo, sono lieto di confermare che l'aggiornamento della traduzione del Tutorial è sempre puntuale: adesso la versione per Python 3.10 è quella di default, e tutte le versioni sono in sincrono con gli originali. 

Ho anche pubblicato una nuova versione (la 3) del mio libro Python in Windows, aggiornando tutti i riferimenti a Python 3.10, controllando i cambiamenti, cambiando le figure e così via. Ho anche inserito alcune piccole correzioni e qualche nota nuova, grazie anche alle segnalazioni dei lettori (che ci sono! grazie! e mi segnalano i problemi! grazie due volte!). 

Vi invito a scaricare la versione aggiornata, se lo avete già comprato... o a comprarlo, se non lo avete ancora fatto (ehm... non costa poi molto, dai). 

 

(Nel frattempo sto lavorando a una cosa nuova... ma ho ancora paura di parlarne. Forse tra qualche mese. Vedremo.)


Commenti

Post più popolari