Pas pas një viti e gjysmë zhvillimi lëshim të rëndësishëm të gjuhës programore . Përditësime korrigjuese për degën Python 3.8 do të bëhen për 18 muaj. Vulnerabilitetet kritike do të rregullohen për 5 vjet deri në tetor 2024. Përditësimet korrigjuese për degën 3.8 do të dalin çdo dy muaj, ndarja e parë e rregullimit Python 3.8.1 është planifikuar për dhjetor.
Ndër shtesat :
- operacioneve të caktimit brenda shprehjeve të komplikuara. Me ndihmën e operatorit të ri «:=» tani është e mundur të kryhen operacione caktimi vlerash brenda shprehjeve të tjera, për shembull, për të shmangur thirrjen e dyfishtë të funksioneve në operatorët kushtorë dhe kur përcaktohen ciklet:
if (n := len(a)) > 10:
âŠwhile (block := f.read(256)) != »:
⊠- sintaksës së re të caktimit të argumenteve të funksionit. Gjatë enumerimit të argumenteve gjatë përcaktimit të funksionit, tani mund të tregoni shenjën «/», që ndan argumentet, vlerat e të cilëve mund të caktohen vetëm në bazë të rendit të enumerimit të vlerave gjatë thirrjes së funksionit, nga argumentet që lejojnë caktimin në rendin e rastësishëm (sintaksa «variable=value»). Nga ana praktike, kjo mundësi e re lejon që në funksionet e gjuhës Python të emulohet plotësisht sjellja e funksioneve ekzistuese në gjuhën C, si dhe të shmangen lidhjet me emra të veçantë, për shembull, nëse planifikohet të ndryshohet emri i parametrave në të ardhmen.
Flagu «/» plotëson shenjën e mëparshme «*», që ndan variablat për të cilat zbatohet vetëm caktimi në formën «variable=value». Për shembull, në funksionin «def f(a, b, /, c, d, *, e, f):», variablat «a» dhe «b» mund të caktohen vetëm sipas rendit të enumerimit të vlerave,
variablat «e» dhe «f», vetëm përmes caktimit «variable=value», dhe variablat «c» dhe «d» me cilindo nga mënyrat e treguara:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - API i ri C
për konfigurimin e parametrave të iniciativës Python, duke lejuar kontrollin e plotë të gjithë dhe ofron mjete të zgjeruara për përpunimin e gabimeve. API i propozuar e thjeshton integrimin e funksionalitetit të interpretorit Python në aplikacione të tjera në gjuhën C; - protokolli i ri Vectorcall për qasje më të shpejtë në objekte të shkruara në gjuhën C. Në CPython 3.8, aksesimi në Vectorcall për momentin është i kufizuar në përdorim të brendshëm, dhe kalimi në API të qasshëm publik është planifikuar në CPython 3.9;
- thirrjet Runtime Audit Hooks, duke u ofruar aplikacioneve dhe strukturave në gjuhën Python qasje në informacionin e ulët rreth ekzekutimit të skriptit për të kryer audite të veprimeve të kryera (për shembull, është e mundur të ndjekësh importimin e moduleve, hapjen e skedarëve, përdorimin e gjurmëve, thirrjet në sokete rrjetesh, ekzekutimin e kodit përmes exec, eval dhe run_mod);
- Në modul mbështetje për protokollin Pickle 5, i cili përdoret për serializimin dhe deserializimin e objekteve. Pickle lejon optimizimin e transmetimit të volumit të madh të të dhënave midis proceseve Python në konfigurime me shumë bërthama dhe shumë node, duke reduktuar numrin e operacioneve të kopjimit të memorjes dhe duke aplikuar teknika të tjera optimizimi, si përdorimi i algoritmeve të thjeshta për të dhëna specifike. Versioni i pestë i protokollit është i njohur për shtimin e modit të transmetimit të ndarë (out-of-band), në të cilin të dhënat mund të transmetohen veçmas nga rrjedha kryesore e pickle.
- Për default është aktivizuar versi i katërt i protokollit Pickle, i cili krahasuar me versionin e tretë të dekretuar fillimisht përmirëson performancën dhe redukton madhësinë e të dhënave të transmetuara;
- Në modul janë paraqitur disa mundësi të reja:
- Klasa për array asociativ, në të cilat informacioni mbi tipin e të dhënave të lidhura me çelësat përcaktohet qartë ("TypedDict('Point2D', x=int, y=int, label=str)").
- Lloji , duke lejuar kufizimin e parametrave ose vlerës së kthyer në disa vlera të përcaktuara paraprakisht ("Literal['connected', 'disconnected']").
- Struktura "" që lejon përcaktimin e vlerave të variablave, funksioneve, metodave dhe klasave që nuk mund të ndryshohen ose rikonfigurohen ("pi: Final[float] = 3.1415926536").
- është shtuar mundësia e caktimit të keshit për skedarët e kompiluara me kodin byte, të ruajtur në një pemë të veçantë të FS dhe të ndarë nga katalogët me kodin. Rruga për ruajtjen e skedarëve të kodit byte përcaktohet përmes variablës ose opsionit "-X pycache_prefix";
- mundësia për të krijuar ndërtimet e gjurmimit Python, duke përdorur ABI identike me atë të shpërthimit, që lejon që në ndërtimet e gjurmimit të ngarkohen zgjerime të shkruara në gjuhën C të ndërtuara për versionet e qëndrueshme;
- NĂ« f-string (literalet e formatimit me prenjĂ«s âfâ) Ă«shtĂ« mbĂ«shtetur operatori â=â (pĂ«r shembull, «f'{expr=}'»), i cili lejon transformimin e shprehjes nĂ« tekst pĂ«r tĂ« thjeshtuar ndihmĂ«n pĂ«r debug. PĂ«r shembull:
âșâșâș pĂ«rdoruesi = âeric_idleâ
âșâșâș anĂ«tar_qĂ«nga = date(1975, 7, 31)
âșâșâș f'{pĂ«rdoruesi=} {anĂ«tar_qĂ«nga=}â
«pĂ«rdorues=âeric_idleâ anĂ«tar_qĂ«nga=datetime.date(1975, 7, 31)» - Shprehja «» lejohet tĂ« pĂ«rdoret brenda bllokut ;
- Shtuar një modul të ri , duke lejuar përdorimin e segmenteve të memories së ndarë në konfigurimet multi-proces;
- Në platformën Windows, implementimi i asyncio është transferuar për të përdorur klasën ;
- Performanca e instrukcionit LOAD_GLOBAL është rritur rreth 40% falë përdorimit të një mekanizmi të ri të ruajtjes së kodit të objektit.
Burimi: opennet.ru
