Programmēšanas valodas Python 3.8 izlaišana

Pusstovā pusi gadu izstrādes tika prezentēts significants izlaidums programmēšanas valodā Python 3.8. Korrektūras atjauninājumi Python 3.8 versijai plānots 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 jaunumiem:

  • Atbalsts 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)) != »:
    …

  • Atbalsts 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)

  • Pievienots jaunais C API
    parametru inicializācijas iestatījumu konfigurēšanai Python, kas ļauj pilnīgi kontrolēt visu konfigurāciju 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;
  • Ieviests 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.
  • Pievienoti 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 ir nodrošināta 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ī typing tika ieviestas vairākas jaunas iespējas:
    • Klas TypedDict 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 Literal, kas ļauj ierobežot parametru vai atgriezeniskās vērtības ar vairākiem noteiktiem vērtībām ("Literal['connected', 'disconnected']").
    • Struktūra "Final" 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 PYTHONPYCACHEPREFIX vai opciju "-X pycache_prefix";
  • Ieviesta 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ē «continue» ir atļauts izmantot iekš blokā finally;
  • New module added multiprocessing.shared_memory, ļaujot izmantot koplietojamas atmiņas segmentus multiprocesoru konfigurācijās;
  • Windows platformā asyncio īstenojums ir pārgājis uz klases ProactorEventLoop;
  • LOAD_GLOBAL instrukcijas veiktspēja ir palielinājusies par aptuveni 40% pateicoties jaunam objektu koda kešatmiņas mehānismam.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster