Liberazione di a lingua di prugrammazione Python 3.8

Dopu un annu è mezu di sviluppu prisentatu liberazione di lingua di prugrammazione maiò pitone 3.8. L'aghjurnamenti currettivi per a branche Python 3.8 hè prevista liberazione in 18 mesi. E vulnerabilità critiche saranu riparate per 5 anni finu à uttrovi 2024. L'aghjurnamenti currettivi per u ramu 3.8 seranu liberati ogni dui mesi, cù a prima liberazione correttiva di Python 3.8.1 prevista per dicembre.

Trà l'aghjunghje innovazioni:

  • sustegnu operazioni di assignazione in espressioni cumplessi. Cù u novu operatore ":=", hè pussibule eseguisce operazioni di assignazione di valore in altre espressioni, per esempiu, per evità e chjama di doppia funzione in dichjarazioni cundiziunali è quandu definisce i loops:

    se (n := len(a)) > 10:
    ...

    while (bloccu := f.read(256)) != ":
    ...

  • sustegnu nova sintassi per specificà argumenti di funzione. Quandu enumerate l'argumenti durante una definizione di funzione, pudete avà specificà un "/" per separà l'argumenti chì ponu esse attribuiti solu i valori basatu annantu à l'ordine in quale i valori sò enumerati durante a chjama di a funzione, da l'argumenti chì ponu esse assignati. in ogni ordine (variabile = sintassi di valore) ). In u latu praticu, a nova funzione permette à e funzioni in Python per emulà cumplettamente u cumpurtamentu di e funzioni esistenti in C, è ancu per evità di ubligatoriu à nomi specifichi, per esempiu, se u nome di u paràmetru hè previstu per esse cambiatu in u futuru.

    A bandiera "/" cumplementa a bandiera "*" aghjunta prima, siparandu e variàbili per quale solu una assignazione in a forma "variable = valore" hè applicabile. Per esempiu, in a funzione "def f(a, b, /, c, d, *, e, f):" i variàbili "a" è "b" ponu esse attribuiti solu in l'ordine chì i valori sò listati. ,
    variabili "e" è "f", solu per via di l'assignazione "variable=value", è variabili "c" è "d" in una di e seguenti manere:

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

  • Aggiuntu nova C API
    per cunfigurà i paràmetri di inizializazione di Python, chì permettenu un cuntrollu cumpletu di tuttu cunfigurazione è furnisce facilità avanzate di gestione di l'errore. L'API pruposta facilita l'incorporazione di a funziunalità di l'interprete Python in altre applicazioni C;

  • Implementatu novu protocolu Vectorcall per un accessu più veloce à l'uggetti scritti in lingua C. In CPython 3.8, l'accessu à Vectorcall hè sempre limitatu à l'usu internu di u trasferimentu à a categuria di l'API publicamente accessibili hè pianificatu in CPython 3.9;
  • Aggiuntu chjama à Runtime Audit Hooks, chì furnisce l'applicazioni è i quadri in Python cù accessu à l'infurmazioni di pocu livellu nantu à u prugressu di u script per audità l'azzioni realizati (per esempiu, pudete seguità l'importazione di moduli, apre i schedari, usendu una traccia, accede à i sockets di a rete, esegue u codice attraversu exec, eval è run_mod);
  • In u modulu cugliera assicuratu supportu per u protocolu Pickle 5, utilizatu per serializà è deserializing objects. Pickle permette di ottimisà u trasferimentu di grande quantità di dati trà i prucessi di Python in cunfigurazioni multi-core è multi-node riducendu u nùmeru di operazioni di copia di memoria è applicà tecniche di ottimisazione supplementari cum'è l'usu di algoritmi di compressione specifichi di dati. A quinta versione di u protokollu hè notevule per l'aghjunzione di un modu di trasmissione fora di banda, in quale e dati ponu esse trasmessi separatamente da u flussu principale di pickle.
  • Per automaticamente, a quarta versione di u protokollu Pickle hè attivatu, chì, cumparatu cù a terza versione pruposta prima, permette un rendimentu più altu è una riduzione di a dimensione di e dati trasmessi;
  • In u modulu typing Diversi funziunalità novi sò introdutte:
    • Class TypedDict per arrays associative in quale l'infurmazione di tipu hè esplicitamente specificata per i dati assuciati cù e chjave ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Type Literal, chì permette di limità un paràmetru o di rinvià u valore à uni pochi di valori predefiniti ("Literal['connected', 'disconnected']").
    • Disegnu "Vergogna à", chì permette di definisce i valori di variàbili, funzioni, metudi è classi chì ùn ponu micca esse cambiati o riassignati ("pi: Finale[float] = 3.1415926536").
  • Aghjunghje a capacità di assignà una cache per i schedari compilati cù bytecode, salvatu in un arbulu FS separatu è separatu da i cartulari cù u codice. U percorsu per salvà i schedari cù bytecode hè stabilitu via una variàbile PYTHONPYCACHEPREFIX o l'opzione "-X pycache_prefix";
  • Implementatu l'abilità di creà debug builds di Python chì utilizanu un ABI identicu à a liberazione, chì permette di carricà estensioni scritte in lingua SI, compilate per versioni stabili, in debug builds;
  • F-strings (litterali furmati prefissati cù 'f') furniscenu supportu per l'operatore = (per esempiu, "f'{expr=}'"), chì vi permette di cunvertisce una espressione in testu per un debugging più faciule. Per esempiu:

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

  • espressione "continuà» permessu di esse usatu in un bloccu infini;
  • Un novu modulu aghjuntu multiprocessing.memoria_shared, chì permette l'usu di segmenti di memoria spartuti in cunfigurazioni multiprocessu;
  • Nantu à a piattaforma Windows, l'implementazione asyncio hè stata spustata per utilizà a classa ProactorEventLoop;
  • A prestazione di l'istruzzioni LOAD_GLOBAL hè stata aumentata di circa 40% per via di l'usu di un novu mecanismu di cache di codice d'ughjettu.

Source: opennet.ru

Add a comment