Po roku a pol vývoja významné vydanie programovacieho jazyka Opravné aktualizácie pre vetvu Python 3.8 Vydávané počas 18 mesiacov. Kritické zraniteľnosti budú opravované päť rokov, končiac v októbri 2024. Opravné aktualizácie pre vetvu 3.8 budú vydávané každé dva mesiace, pričom prvé opravné vydanie Pythonu 3.8.1 je naplánované na december.
Medzi pridanými :
- Priraďovacie operácie v rámci zložitých výrazov. Nový operátor ":=" umožňuje vykonávať priradenia hodnôt v rámci iných výrazov, napríklad aby sa predišlo dvojitému volaniu funkcií v podmienených príkazoch a pri definovaní cyklov:
if (n := len(a)) > 10:
...zatiaľ čo (blok := f.read(256)) != ":
... - Nová syntax na zadávanie argumentov funkcií. Pri uvádzaní argumentov počas definície funkcie môžete teraz použiť znak „/“. Tým sa rozlišujú argumenty, ktorých hodnoty je možné priradiť iba na základe poradia, v akom boli uvedené počas volania funkcie, od argumentov, ktoré je možné priradiť v ľubovoľnom poradí (syntax „premenná=hodnota“). V praxi táto nová funkcia umožňuje funkciám Pythonu plne emulovať správanie existujúcich funkcií C a zároveň sa vyhnúť ich viazaniu na konkrétne názvy, napríklad ak sa plánuje v budúcnosti zmeniť názov parametra.
Príznak „/“ dopĺňa predtým pridaný príznak „*“, ktorý oddeľuje premenné, pre ktoré je možné použiť iba priradenie vo forme „premenná=hodnota“. Napríklad vo funkcii „def f(a, b, /, c, d, *, e, f):“ je možné premenné „a“ a „b“ priradiť iba v poradí, v akom sú uvedené ich hodnoty.
premenné „e“ a „f“ iba priradením „premenná=hodnota“ a premenné „c“ a „d“ ktorýmkoľvek z nasledujúcich spôsobov:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, s=30, d=40, e=50, f=60) - nové API jazyka C
nakonfigurovať inicializačné parametre Pythonu, čo vám umožní mať plnú kontrolu nad celým a poskytuje pokročilé možnosti spracovania chýb. Navrhované API zjednodušuje vkladanie funkcionality interpreta Pythonu do iných aplikácií v jazyku C; - Nový protokol Vectorcall pre rýchlejší prístup k objektom napísaným v jazyku C. V CPython 3.8 je prístup k Vectorcallu momentálne obmedzený na interné použitie; jeho prechod na verejne dostupné API je plánovaný pre CPython 3.9;
- Runtime Audit Hooks, ktoré poskytujú aplikáciám a frameworkom Pythonu prístup k nízkoúrovňovým informáciám o vykonávaní skriptu na audit vykonaných akcií (napríklad môžete sledovať import modulov, otváranie súborov, používanie trasovania, prístupy k sieťovým socketom a vykonávanie kódu prostredníctvom exec, eval a run_mod);
- V module Podpora protokolu Pickle 5, ktorý sa používa na serializáciu a deserializáciu objektov. Pickle optimalizuje prenos veľkého množstva dát medzi procesmi Pythonu vo viacjadrových a viacuzlových konfiguráciách znížením počtu operácií kopírovania pamäte a použitím ďalších optimalizačných techník, ako sú napríklad algoritmy kompresie špecifických dát. Verzia 5 protokolu je pozoruhodná pridaním režimu mimo pásma, ktorý umožňuje prenos dát oddelene od hlavného prúdu Pickle.
- Štandardne je aktivovaná štvrtá verzia protokolu Pickle, ktorá v porovnaní s treťou verziou, ktorá bola predtým štandardne ponúkaná, umožňuje vyšší výkon a zníženie veľkosti prenášaných údajov;
- V module Bolo zavedených niekoľko nových funkcií:
- Trieda pre asociatívne polia, kde dáta spojené s kľúčmi majú explicitné informácie o type („TypedDict('Point2D', x=int, y=int, label=str)“).
- Typ , čo umožňuje obmedziť parameter alebo návratovú hodnotu na niekoľko preddefinovaných hodnôt („Literal['connected', 'disconnected']“).
- Stavebníctvo "", ktorá umožňuje definovať hodnoty premenných, funkcií, metód a tried, ktoré nie je možné zmeniť ani prepriradiť ("pi: Final[float] = 3.1415926536").
- Pridaná možnosť zadať vyrovnávaciu pamäť pre skompilované súbory bajtkódu, uloženú v samostatnom strome súborového systému a oddelenú od adresárov s kódom. Cesta pre ukladanie súborov bajtkódu je určená pomocou premennej. alebo možnosť „-X pycache_prefix“;
- možnosť vytvárať ladiace zostavy Pythonu, ktoré používajú rovnaké ABI ako vydané vydania, čo umožňuje načítanie rozšírení jazyka C kompilovaných pre stabilné vydania do ladiacich zostáv;
- f-reťazce (formátované literály s predponou 'f') teraz podporujú operátor "=" (napr. "f'{expr=}'"), ktorý umožňuje previesť výraz na text pre jednoduchšie ladenie. Napríklad:
››› používateľ = 'eric_idle'
››› člen_od = dátum(1975, 7, 31)
››› f'{user=} {member_since=}'
„používateľ='eric_idle' member_since=datetime.date(1975, 7, 31)“ - Výraz „"povolené použitie vo vnútri bloku" ;
- Pridaný nový modul , čo umožňuje použitie zdieľaných pamäťových segmentov v konfiguráciách s viacerými procesmi;
- Na platforme Windows bola implementácia asyncio presunutá na použitie triedy ;
- Výkon inštrukcie LOAD_GLOBAL sa zvýšil približne o 40 % vďaka použitiu nového mechanizmu ukladania objektového kódu do vyrovnávacej pamäte.
Zdroj: opennet.ru
