Pusstovā pusi gadu izstrādes significants izlaidums programmēšanas valodā . Korrektūras atjauninājumi Python 3.8 versijai tiks izlaisti 18 mēnešu laikā. Kritiskās ievainojamības tiks novērstas 5 gadus līdz 2024. gada oktobrim. Korrektūras atjauninājumi 3.8 versijai tiks izlaisti reizi divos mēnešos, pirmais korekciju izlaidums Python 3.8.1 plānots decembrī.
Starp pievienotajiem :
- ierakstiem sarežģītās izteiksmes. Ar jaunā operatora «:=» palīdzību ir iespējams veikt vērtību piešķiršanas operācijas iekšējās izteiksmēs, piemēram, lai izvairītos no funkciju dubultas izsaukšanas nosacījuma operatoros un ciklu definēšanā:
if (n := len(a)) > 10:
…while (block := f.read(256)) != »:
… - jauna sintakse funkcijas argumentu definēšanai. Definējot funkcijas, tagad var norādīt apzīmējumu «/», kas ļauj atdalīt argumentus, kuriem var piešķirt vērtības tikai atbilstoši to secībai funkcijas izsaukumā, no argumentiem, kuriem var piešķirt vērtības jebkurā secībā (sintakse «mainīgais=vērtība»). Praksē jaunā iespēja ļauj Python valodā pilnībā emulēt C valodā esošo funkciju uzvedību un izvairīties no piesaistes konkrētiem nosaukumiem, piemēram, ja parametra nosaukums ir plānots mainīt nākotnē.
Apzīmējums «/» papildina iepriekš pievienoto apzīmējumu «*», kas atdala mainīgos, kuriem piemērojama tikai piešķiršana formā «mainīgais=vērtība». Piemēram, funkcijā «def f(a, b, /, c, d, *, e, f):» mainīgie «a» un «b» var tikt piešķirti tikai secībā.
mainīgie «e» un «f», tikai caur piešķiršanu «mainīgais=vērtība», bet mainīgie «c» un «d» var tikt piešķirti jebkurā no norādītajām metodēm:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - jaunais C API
parametru inicializācijas iestatījumu konfigurēšanai Python, kas ļauj pilnīgi kontrolēt visu un nodrošina paplašinātas kļūdu apstrādes iespējas. Ieteiktais API atvieglo Python tulka funkcionalitātes iekļaušanu citās C valodā rakstītās lietojumprogrammās; - jauns Vectorcall protokols ātrākai piekļuvei objektam, kas rakstīts C valodā. CPython 3.8 piekļuve Vectorcall pagaidām ir ierobežota ar iekšējo lietojumu, pāreja uz publiski pieejamiem API ir plānota CPython 3.9.
- Runtime Audit Hooks izsaukumi, kas ļauj Python valodas lietojumprogrammām un ietvariem piekļūt zemas līmeņa informācijai par skriptu izpildi, lai veiktu veiktās darbības auditu (piemēram, ir iespējams izsekot moduļu importēšanu, failu atvēršanu, izsekošanas izmantošanu, piekļuvi tīkla soketiem, koda palaišana ar exec, eval un run_mod);
- Modulī Pickle 5 protokola atbalsts, kas tiek izmantots objektu serializācijai un deserializācijai. Pickle ļauj optimizēt lielu datu apjomu pārsūtīšanu starp Python procesiem daudzkodolu un daudzpunktu konfigurācijās, samazinot atmiņas kopēšanas darbību skaitu un izmantojot papildu optimizācijas tehnikas, piemēram, konkrētiem datiem raksturīgu saspiešanas algoritmu izmantošanu. Piektā protokola versija ir ievērojama ar out-of-band pārraides režīma pievienošanu, kurā dati var tikt nosūtīti atsevišķi no galvenā pickle plūsmas.
- Pēc noklusējuma ir aktivizēta ceturtā Pickle protokola versija, kas salīdzinājumā ar iepriekš piedāvāto trešo versiju nodrošina augstāku veiktspēju un samazinātus pārsūtīto datu apjomus;
- Modulī tika ieviestas vairākas jaunas iespējas:
- Klas asociatīviem masīviem, kuros saistītajiem ar atslēgām datiem skaidri tiek norādīta veida informācija ("TypedDict('Point2D', x=int, y=int, label=str)").
- Tips , kas ļauj ierobežot parametru vai atgriezeniskās vērtības ar vairākiem noteiktiem vērtībām ("Literal['connected', 'disconnected']").
- Struktūra "" sniedz iespēju noteikt mainīgo, funkciju, metožu un klašu vērtības, kuras nevar mainīt vai pārdalīt ("pi: Final[float] = 3.1415926536").
- Ieviesta iespēja piešķirt kešatmiņu kompilētiem bajtkoda failiem, kas tiek saglabāti atsevišķā FS kokā un atsevišķi no koda katalogiem. Ceļu failu saglabāšanai ar bajtkodu nosaka, izmantojot mainīgo vai opciju "-X pycache_prefix";
- ieteikums izveidot Python atkļūdošanas būves, kas izmanto identisku ABI kā izlaižamais, ļaujot atkļūdošanas būvēs ielādēt C valodā rakstītas paplašināšanas, kas ir izveidotas stabilām versijām;
- f-virknēs (formatēti literāli ar prefiksu ‘f’) ir pieejams operators «=» (piemēram, «f'{expr=}'»), kas ļauj izteiksmju pārvēršanu tekstā, lai atvieglotu atkļūdošanu. Piemēram:
››› user = ‘eric_idle’
››› member_since = date(1975, 7, 31)
››› f'{user=} {member_since=}'
«user=’eric_idle’ member_since=datetime.date(1975, 7, 31)» - Izteiksmē «» ir atļauts izmantot iekš blokā ;
- New module added , ļaujot izmantot koplietojamas atmiņas segmentus multiprocesoru konfigurācijās;
- Windows platformā asyncio īstenojums ir pārgājis uz klases ;
- LOAD_GLOBAL instrukcijas veiktspēja ir palielinājusies par aptuveni 40% pateicoties jaunam objektu koda kešatmiņas mehānismam.
Avots: opennet.lv
