Pas një vit zhvillimi, është publikuar një version i rëndësishëm i gjuhës së programimit Python 3.13. Ky degë do të mbështetet për një vit e gjysmë, pas së cilës do të formohen rregullime për të për tre vjet e gjysmë për të eliminuar dobësitë.
Disa nga novitetet e integruara në Python 3.13 përfshijnë:
- ĂshtĂ« shtuar njĂ« implementim eksperimental i JIT-compiler-it, qĂ« mundĂ«son rritje tĂ« konsiderueshme tĂ« performancĂ«s. PĂ«r tĂ« aktivizuar JIT nĂ« CPython Ă«shtĂ« shtuar opsioni i ndĂ«rtimit «âenable-experimental-jit», pĂ«rdorimi i tĂ« cilit kĂ«rkon instalimin e LLVM si njĂ« varĂ«si shtesĂ«. Procesi i pĂ«rkthimit tĂ« kodit maqinerik nĂ« JIT Ă«shtĂ« ndĂ«rtuar duke pĂ«rdorur arkitekturĂ«n «Copy-and-Patch», ku me ndihmĂ«n e LLVM krijohet njĂ« skedar objekt nĂ« formatin ELF, qĂ« pĂ«rmban tĂ« dhĂ«na mbi instrukcionet e bytecode-it dhe informacion mbi zĂ«vendĂ«simin e nevojshĂ«m tĂ« tĂ« dhĂ«nave. JIT zĂ«vendĂ«son instrukcionet e gjeneruara gjatĂ« interpretimit tĂ« programit me pĂ«rfaqĂ«simet e tyre nĂ« kodin maqinerik, ndĂ«rkohĂ« qĂ« vendos tĂ« dhĂ«nat e nevojshme pĂ«r llogaritjet (JIT kopjon shabllonet e gatshme tĂ« funksioneve tĂ« kompiluar dhe i vendos ato me vlerat e nevojshme, si argumentet dhe konstantet).
- ĂshtĂ« shtuar njĂ« mod eksperimental ndĂ«rtimi pĂ«r CPython pa bllokimin global tĂ« interpreter-it (GIL, Global Interpreter Lock), i cili aktivizohet me opsionin «âwithout-gil» dhe lejon eliminimin e problemit tĂ« paralelizimit tĂ« operacioneve nĂ« sisteme me shumĂ« bĂ«rthama, tĂ« shkaktuar nga fakti qĂ« bllokimi global nuk lejon qasjen paralel nĂ« objektet e ndara nga thread-e tĂ« ndryshme. Ăaktivizimi i GIL sjell kosto tĂ« shtuar, tĂ« shkaktuara nga ndryshimet nĂ« menaxherin e mbeturinave, sistemin e menaxhimit tĂ« memories dhe primitivĂ«t pĂ«r organizimin e bllokimeve. PĂ«r shembull, pĂ«r shkak tĂ« pĂ«rdorimit tĂ« numĂ«rimit tĂ« referencave pĂ«r izolimin e thread-eve, vĂ«rehet njĂ« ulje e performancĂ«s sĂ« skenarĂ«ve njĂ«-thread prej rreth 10%. MegjithatĂ«, kĂ«to kosto tĂ« tilla mund tĂ« kompensohen pĂ«rmes paralelizimit tĂ« operacioneve.
- Një interpreter interaktiv i përmirësuar është propozuar, i bazuar në punimet e projektit PyPy, i cili mbështet mundësi të tilla si redaktimi me shumë rreshta, ruajtja dhe shikimi i historisë, dekorimi me ngjyra të kërkesave dhe gjurmimeve, përdorimi i komandave të ngjashme me REPL (ndihmë, dil, mbyll etj.) pa angazhuar funksione, ndihma interaktive, dhe moda e ngjitjes së blloqeve të mëdha të kodit.
- Semantika e funksionit të integruar locals(), i cili kthen të gjitha variablat lokalë dhe vlerat e tyre në zonën aktuale të dukshmërisë, është ndryshuar për zonat e optimizuara të dukshmërisë, si funksionet, gjeneruesit dhe koroutines, për të cilat tani kthehen snapshot të pavarura të variablave lokalë të vendosur aktualisht dhe variablave të huaj, të reflektuar në kllapë.
- Në përbërje të parazgjedhur është përfshirë një version e modifikuar i bibliotekës mimalloc nga kompania Microsoft për shpërndarjen e memories, e cila tregon performancë shumë të lartë. Biblioteka aktivizohet gjatë ndërtimit pa GIL.
- Përmbushja e pastrimit nga kompajleri të hapësirave lider në çdo rresht dokumentimi (docstring), e cila ka lejuar zvogëlimin e memories së përdorur dhe zvogëlimin e madhësisë së caches me bytecode (skedarët .pyc).
- Në modulin dbm është implementuar backend dbm.sqlite3, i cili përdor SQLite dhe aplikohet për parazgjedhje gjatë krijimit të skedarëve të rinj.
- ĂshtĂ« implementuar mbĂ«shtetje pĂ«r caktimin e vlerave tĂ« paracaktuara nĂ« parametrat e tipeve (typing.TypeVar, typing.ParamSpec dhe typing.TypeVarTuple). PĂ«r shembull: âT = TypeVar(«T», default=int)â.
- ĂshtĂ« shtuar njĂ« annotim i ri typing.TypeIs pĂ«r precisimin e tipeve, mĂ« intuitiv se typing.TypeGuard.
- ĂshtĂ« shtuar mundĂ«sia e pĂ«rdorimit tĂ« annotimit typing.ReadOnly pĂ«r tĂ« etiketuar elementĂ«t TypeDicts, tĂ« cilĂ«t janĂ« vetĂ«m pĂ«r lexim.
- ĂshtĂ« shtuar njĂ« annotim i ri warnings.deprecated() pĂ«r tĂ« etiketuar elementĂ«t e vjetĂ«ruar nĂ« sistemin e tipeve.
- Nga biblioteka standarde janë hequr modulat aifc, audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu, xdrlib dhe lib2to3, të cilat ishin shpallur të vjetëruara më parë.
- Në moduln copy është shtuar funksioni copy.replace().
- Në moduln os janë shtuar funksione për të punuar me orarin përmes descriptorëve timerfd.
- Për moduln random është realizuar një ndërfaqe e komandës së linjës.
- Përkrahja e versioneve të macOS nga 10.9 deri në 10.12 është ndërprerë.
- ĂshtĂ« realizuar mbĂ«shtetje pĂ«r platformat mobile iOS dhe Android, tĂ« cilat janĂ« renditur nĂ« nivelin e tretĂ« (Tier 3), ku garanton ndĂ«rtimin e besueshĂ«m dhe mbĂ«shtetje nga njĂ« zhvillues kryesor minimalisht, por defektet e lidhura me platformĂ«n nuk bllokojnĂ« lĂ«shimin dhe nuk mbulohen nga mbĂ«shtetja SLA.
- Mbështetje për platformën wasm32-wasi (WebAssembly System Interface) është çuar në një nivel të dytë, ku dështimet bllokojnë lëshimin dhe ndryshimet që i shkaktojnë ato rregullohen ose anulohen brenda 24 orëve. Mbështetja zyrtare për platformën wasm32-emscripten është ndaluar.
Në orët e ardhshme do të fillojë testimi alfa i degës Python 3.14, e cila do të jetë në fazën e lëshimeve alfa për shtatë muaj, gjatë të cilëve do të shtohen mundësi të reja dhe do të bëhen rregullime gabimesh (sipër bazës së re të zhvillimit, puna për degën e re fillon pesë muaj para lëshimit të degës së mëparshme dhe në momentin e lëshimit tjetër arrin fazën e testimit alfa). Pas kësaj, për tre muaj do të zhvillohet testimi i versioneve beta, gjatë të cilit do të ndalohet shtimi i mundësive të reja dhe gjithë vëmendja do t'i kushtohet rregullimit të gabimeve. Dy muajt e fundit para lëshimit, dega do të jetë në fazën e kandidatëve për lëshim, ku do të realizohet stabilizimi përfundimtar.
Burimi: opennet.ru
