Pasë një vit e gjysmë zhvillimi lëshimi i rëndësishëm i gjuhës së programimit . Përditësimet korrigjuese për degën Python 3.8 do të lëshohen për 18 muaj. E shkeljet kritike do të rregullohen për 5 vjet deri në tetor 2024. Përditësimet korrigjuese për degën 3.8 do të lëshohen çdo dy muaj, me lëshimin e parë korrigjuese Python 3.8.1 të parashikuar për në dhjetor.
Mes gjërave të reja të shtuar :
- operacionet e caktimit brenda shprehjeve komplekse. Me ndihmën e operatorit të ri «:=» tani është e mundur të kryhen operacione caktimi brenda shprehjeve të tjera, për shembull, për të shmangur thirrjen e dyfishtë të funksioneve në operatorë kushtorë dhe gjatë përcaktimit të cikleve:
if (n := len(a)) > 10:
âŠwhile (block := f.read(256)) != »:
⊠- sintaksit e re për caktimin e argumenteve të funksionit. Gjatë renditjes së argumenteve gjatë përcaktimit të funksionit, tani mund të specifikohet shenja "/", që lejon ndarjen e argumenteve që mund të marrin vlerën vetëm sipas renditjes së vlerave gjatë thirrjes së funksionit, nga argumentet që lejojnë caktimin në rend të rastësishëm (sintaksisi "ndërlidhje=vlerë"). Perspektivisht, kjo mundësi e re lejon që në funksionet e gjuhës Python të imitohet plotësisht sjellja e funksioneve ekzistuese në gjuhën C, si dhe të shmangen lidhjet me emra të veçantë, për shembull, në rast se emri i parametrave planifikohet të ndryshohet në të ardhmen.
Flamuri "/" plotëson më parë të shtuarin shenjë "*", që ndan variablat për të cilat zbatohet vetëm caktimi në formën "ndërlidhje=vlerë". Për shembull, në funksionin "def f(a, b, /, c, d, *, e, f):" variablat "a" dhe "b" mund të caktohen vetëm sipas renditjes së vlerave,
variablat "e" dhe "f", vetëm përmes caktimit "ndërlidhje=vlerë", ndërsa variablat "c" dhe "d" në cilindo nga këto mënyra:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - API i ri i C
për konfigurimin e parametrave të inizializimit të Python, duke lejuar kontrollin e plotë të gjithë dhe duke ofruar mjete të avancuara për përpunimin e gabimeve. API i propozuar e thjeshton integrimin e funksionalitetit të interpreterit Python në aplikacione të tjera të shkruara në gjuhën C; - protokollin e ri Vectorcall për qasje më të shpejtë në objektet e shkruara në gjuhën C. Në CPython 3.8, qasja në Vectorcall është ende e kufizuar për përdorim të brendshëm, konvertimi në API publik pritet në CPython 3.9;
- thirrjet e Runtime Audit Hooks, duke u ofruar aplikacioneve dhe framework-eve në gjuhën Python qasje në informacione të niveauve të ulëta për zhvillimin e skenarëve për auditimin e veprimeve të kryera (p.sh., mund të gjurmohet importimi i moduleve, hapja e skedarëve, përdorimi i gjurmimit, qasja në socket-e rrjeti, ekzekutimi i kodit përmes exec, eval dhe run_mod);
- Në modul mbështetje për protokollin Pickle 5, i përdorur për serializimin dhe deserializimin e objekteve. Pickle lejon optimizimin e transmetimit të volumeve të mëdha të të dhënave midis proceseve Python në konfigurime multi-bërthamor dhe multi-nod, duke reduktuar numrin e operacioneve të kopjimit të memories dhe duke përdorur teknika të tjera optimizimi, si për shembull angazhimin e algoritmeve të kompresimit të specializuara për të dhëna të caktuara. Versioni i pestë i protokollit është i njohur për shtimin e modalitetit të transmetimit të veçantë (out-of-band), në të cilin të dhënat mund të transmetohen veçmas nga rrjedha kryesore pickle.
- Versioni i katërt i protokollit Pickle është aktivizuar si parazgjedhje, i cili krahasuar me versionin e tretë, që ishte parazgjedhje më parë, lejon një performancë më të lartë dhe reduktimin e madhësisë së të dhënave të transmetuara.
- Në modul janë paraqitur disa mundësi të reja:
- Klasa për tabela asociative, në të cilat informatat për llojin e të dhënave të lidhura me çelësat janë shprehur qartë ("TypedDict('Point2D', x=int, y=int, label=str)").
- Tipo , duke lejon qĂ« ta kufizoni parametrin ose vlerĂ«n e kthyer nĂ« disa vlera tĂ« paracaktuara («Literal[âconnectedâ, âdisconnectedâ]».
- Konstruksioni ««, që ofron mundësinë për të përcaktuar vlerat e variablave, funksioneve, metodave dhe klasave që nuk mund të ndryshohen ose riemërohen («pi: Final[float] = 3.1415926536».
- Shtuar mundësia e caktimit të një cache për skedarë të përpiluar me bytecode, të ruajtur në një pemë të ndarë FS dhe të ndarë nga katalogët e kodit. Rruga për ruajtjen e skedarëve me bytecode përcaktohet përmes variablës ose opsionit «-X pycache_prefix»;
- mundësia për të krijuar ndërtimet e shfrytëzuesve të Python, që përdorin ABI identike me atë të versioneve stabile, duke lejuar që në ndërtimet e shfrytëzuesve të ngarkohen zgjerime të shkruara në gjuhën C, të ndërtuara për versione stabile;
- NĂ« f-strings (literalet e formatueshme me prefiks âfâ) Ă«shtĂ« siguruar mbĂ«shtetje pĂ«r operatorin «=» (p.sh., «f'{expr=}'»), duke lejuar qĂ« tĂ« konvertohet shprehja nĂ« tekst pĂ«r tĂ« lehtĂ«suar debuggimin. PĂ«r shembull:
âșâșâș user = âeric_idleâ
âșâșâș member_since = date(1975, 7, 31)
âșâșâș f'{user=} {member_since=}'
«user=âeric_idleâ member_since=datetime.date(1975, 7, 31)» - Shprehja «» lejohet tĂ« pĂ«rdoret brenda bllokut ;
- Moduli i ri është shtuar , që lejon përdorimin e segmenteve të kujtesës së përbashkët në konfigurime multi-procesi;
- Në platformën Windows realizimi i asyncio është transferuar për të përdorur klasën ;
- Performanca e instruksionit LOAD_GLOBAL është rritur me rreth 40% falë përdorimit të mekanizmit të ri për mbajtjen në cache të kodit të objektit.
Burimi: opennet.ru
