Lansarea limbajului de programare Python 3.8

După un an și jumătate de dezvoltare la sfârșitul anului 2019. Pe lângă protocoalele ActivityPub și diaspora, Hubzilla se federează în cadrul rețelei prin propriul său protocol o lansare semnificativă a limbajului de programare Python 3.8. Actualizările corective pentru ramura Python 3.8 se preconizează vor fi lansate timp de 18 luni. Vulnerabilitățile critice vor fi corectate până în octombrie 2024. Actualizările corective pentru ramura 3.8 vor apărea la fiecare două luni, prima lansare corectivă Python 3.8.1 fiind planificată pentru decembrie.

Printre îmbunătățirile adăugate inovații:

  • Asistență operațiunile de atribuire în interiorul expresiilor complexe. Cu ajutorul noului operator „:=”, a apărut posibilitatea de a efectua operațiuni de atribuire a valorilor în interiorul altor expresii, de exemplu, pentru a evita apelurile redundante ale funcțiilor în instrucțiunile condiționale și în definirea buclelor:

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

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

  • Asistență noul syntaxă de definire a argumentelor funcției. La enumerarea argumentelor în timpul definirii funcției, acum se poate specifica indicatorul „/”, care permite separarea argumentelor ale căror valori pot fi atribuite exclusiv pe baza ordinii enumerării valorilor în timpul apelului funcției, de argumentele care permit atribuirea în orice ordine (sintaxa „variabilă=valoare”). Din punct de vedere practic, noua caracteristică permite funcțiilor Python să emuleze complet comportamentul funcțiilor existente în limbajul C, precum și să evite legăturile la nume specifice, de exemplu, dacă se preconizează modificarea numelui parametrului în viitor.

    Indicatorul „/” completează indicatorul anterior „*”, care separă variabilele pentru care se aplică doar atribuirea sub formă „variabilă=valoare”. De exemplu, în funcția „def f(a, b, /, c, d, *, e, f):” variabilele „a” și „b” pot fi atribuite doar în ordinea enumerării valorilor,
    variabilele „e” și „f”, doar prin atribuirea „variabilă=valoare”, iar variabilele „c” și „d” în oricare dintre modurile specificate:

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

  • Adăugat noul API C
    pentru configurarea parametrilor de inițializare Python, care oferă un control complet asupra întregului configurație și oferă mijloace avansate de gestionare a erorilor. API-ul propus simplifică integrarea funcționalității interpretului Python în alte aplicații scrise în limbajul C;
  • Implementat noul protocol Vectorcall pentru acces mai rapid la obiectele scrise în limbajul C. În CPython 3.8, accesul la Vectorcall este deocamdată limitat la utilizarea internă, conversia la API-uri publice fiind planificată pentru CPython 3.9.
  • Adăugate apeluri Runtime Audit Hooks, care oferă aplicațiilor și cadrelor de lucru în limbajul Python acces la informații de nivel scăzut despre execuția scriptului pentru a efectua audite ale acțiunilor realizate (de exemplu, se poate urmări importul modulelor, deschiderea fișierelor, utilizarea trasării, accesarea socket-urilor de rețea, executarea codului prin exec, eval și run_mod);
  • În modulul pickle s-a asigurat suport pentru protocolul Pickle 5, utilizat pentru serializarea și deserializarea obiectelor. Pickle permite optimizarea transferului unor volume mari de date între procesele Python în configurații multi-core și multi-node, reducând numărul de operațiuni de copiere a memoriei și aplicând tehnici suplimentare de optimizare, cum ar fi utilizarea algoritmilor de comprimate specifici pentru anumite date. A cincea versiune a protocolului se remarcă prin adăugarea modului de transmitere separată (out-of-band), în care datele pot fi transmise separat de fluxul principal pickle.
  • Versiunea a patra a protocolului Pickle este activată implicit, ceea ce permite o performanță mai bună și o reducere a dimensiunii datelor transmise, comparativ cu versiunea a treia propusă anterior ca fiind implicit;
  • În modulul typing au fost introduse câteva noi funcționalități:
    • Clasă TypedDict pentru array-uri asociative, în care informația despre tipul datelor asociate cheilor este specificată explicit ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tip Literal, care permite limitarea unui parametru sau a unei valori returnate la câteva valori predeterminate ("Literal['connected', 'disconnected']").
    • Construcția "Final" permite definirea valorilor variabilelor, funcțiilor, metodelor și claselor care nu pot fi modificate sau reasignate ("pi: Final[float] = 3.1415926536").
  • A fost adăugată posibilitatea asignării unui cache pentru fișierele compilate cu bytecode, păstrat într-o structură de sistem de fișiere separată de directoarele cu cod. Calea pentru salvarea fișierelor cu bytecode este specificată prin variabila PYTHONPYCACHEPREFIX sau opțiunea „-X pycache_prefix”;
  • Implementată posibilitatea de a crea build-uri de depanare Python, care utilizează ABI identic cu versiunea de release, ce permite în build-urile de depanare încărcarea extensiilor scrise în C, compilate pentru versiunile stabile;
  • În f-stringuri (literaluri formatate cu prefixul ‘f’) este suportat operatorul «=» (de exemplu, «f'{expr=}'»), care permite transformarea expresiei într-un text pentru a facilita depanarea. De exemplu:

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

  • Expresia «continue» este permisă în interiorul blocului finally;
  • A fost adăugat un nou modul multiprocessing.shared_memory, care permite utilizarea segmentelor de memorie partajată în configurații multi-procesare;
  • Pe platforma Windows, implementarea asyncio a fost modificată pentru a utiliza clasa ProactorEventLoop;
  • Performanța instrucțiunii LOAD_GLOBAL a crescut cu aproximativ 40% datorită utilizării unui nou mecanism de caching al codului obiect.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster