Uvoľnenie programovacieho jazyka Python 3.8

Po roku a pol vývoja predstavené významné vydanie programovacieho jazyka Python 3.8. Opravy pre vetvu Python 3.8 plánuje budú vydávané počas 18 mesiacov. Kritické zraniteľnosti budú opravované 5 rokov do októbra 2024. Opravy pre vetvu 3.8 budú vychádzať každé dva mesiace, prvé opravným vydaním Python 3.8.1 je naplánované na december.

Medzi pridané novinky:

  • Podpora operácie priradenia vo zložitých výrazoch. Pomocou nového operátora „:=“ je možné vykonávať operácie priradenia hodnôt vo vnútri iných výrazov, napríklad aby sa predišlo dvojitému volaniu funkcií v podmienkových operátoroch a pri definovaní cyklov:

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

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

  • Podpora nová syntaxa zadávania argumentov funkcie. Pri uvedení argumentov počas definovania funkcie je teraz možné uviesť znak „/“, ktorý oddelí argumenty, ktorým môžu byť priradené hodnoty len na základe poradia uvedenia hodnôt pri volaní funkcie, od argumentov, ktorým je možné priradiť hodnoty v ľubovoľnom poradí (syntaxa „premenná=hodnota“). Z praktického hľadiska táto nová možnosť umožňuje v Python funkciách úplne emulovať správanie existujúcich funkcií v jazyku C, ako aj sa vyhnúť viazaniu na konkrétne mená, napríklad ak sa plánuje zmeniť názov parametra v budúcnosti.

    Znak „/“ dopĺňa predtým pridaný znak „*“, ktorý oddeluje premenné, pre ktoré je aplikovateľné iba priradenie vo forme „premenná=hodnota“. Napríklad, vo funkcii „def f(a, b, /, c, d, *, e, f):“ premenné „a“ a „b“ môžu byť priradené iba v poradí uvedenia hodnôt,
    premenné „e“ a „f“, iba prostredníctvom priradenia „premenná=hodnota“, a premenné „c“ a „d“ akýmikoľvek uvedenými spôsobmi:

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

  • Pridané nové C API
    na nastavenie parametrov inicializácie Python, umožňujúce plne kontrolovať všetko konfiguráciu a poskytujúce rozšírené prostriedky na spracovanie chýb. Navrhnuté API zjednodušuje zabudovanie funkčnosti interpretátora Python do iných aplikácií napísaných v jazyku C;
  • Implementované nový protokol Vectorcall na rýchlejšie volania objektov napísaných v jazyku C. V CPython 3.8 je prístup k Vectorcall zatiaľ obmedzený na interné použitie, prevod na verejne dostupné API je plánovaný v CPython 3.9;
  • Boli pridané Runtime Audit Hooks, ktoré poskytujú aplikáciám a rámcom v jazyku Python prístup k nízkoúrovňovým informáciám o priebehu vykonávania skriptu na vykonávanie auditu realizovaných akcií (napríklad je možné sledovať importovanie modulov, otváranie súborov, používanie sledovania, prístup k sieťovým socketom, spúšťanie kódu cez exec, eval a run_mod);
  • V module pickle je zabezpečená podpora protokolu Pickle 5, ktorý sa používa na serializáciu a deserializáciu objektov. Pickle umožňuje optimalizovať prenos veľkých objemov dát medzi procesmi Python v mnohojadrových a mnohovláknových konfiguráciách, čím sa znižuje počet operácií kopírovania pamäte a využívajú sa dodatočné techniky optimalizácie, ako sú špecifické algoritmy kompresie pre konkrétne dáta. Piaty protokol sa vyznačuje pridaním režimu odovzdávania (out-of-band), pričom dáta môžu byť prenášané oddelene od hlavného toku pickle.
  • Štvrtá verzia protokolu Pickle je predvolene aktivovaná, ktorá v porovnaní s predtým predloženou treťou verziou umožňuje dosiahnuť vyšší výkon a zníženie veľkosti prenášaných údajov;
  • V module typing bola predstavená niekoľko nových funkcií:
    • Trieda TypedDict pre asociatívne polia, v ktorých je pre priradené kľúčové údaje explicitne určená informácia o type ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Typ Literal, ktorý umožňuje obmedziť parameter alebo návratovú hodnotu na niekoľko preddefinovaných hodnôt ("Literal['connected', 'disconnected']").
    • Konštrukcia "Final", ktorá umožňuje definovať hodnoty premenných, funkcií, metód a tried, ktoré nemôžu byť zmenené alebo priradené inak ("pi: Final[float] = 3.1415926536").
  • Pridala sa možnosť priradiť cache pre kompilované súbory s bajtkódom, ktoré sa uchovávajú v samostatnej FS štruktúre a oddelene od adresárov s kódom. Cesta na uloženie súborov s bajtkódom sa určuje prostredníctvom premennej PYTHONPYCACHEPREFIX alebo volby "-X pycache_prefix";
  • Realizovaná možnosť vytvorenia ladených zostáv Pythonu, ktoré používajú identický ABI ako stabilné vydanie, čo umožňuje v týchto ladených zostavách načítať rozšírenia napísané v C, skompilované pre stabilné verzie;
  • Vo f-reťazcoch (formátovateľné literály s prefixom 'f') je podporované použitie operátora „=“ (napríklad „f'{expr=}'“), ktorý umožňuje previesť výraz na text na zjednodušenie ladenia. Napríklad:

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

  • Výraz „continue“ je možné použiť vo vnútri bloku finally;
  • Pridaný nový modul multiprocessing.shared_memory, čo umožňuje používať segmenty zdieľanej pamäte v viacprocesových konfiguráciách;
  • Na platforme Windows bola implementácia asyncio prevedená na použitie triedy ProactorEventLoop;
  • Výkon inštrukcie LOAD_GLOBAL sa zvýšil približne o 40 % vďaka novému mechanizmu cachovania objektového kódu.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster