Python 3.11 mbërrin me përmirësime të performancës, ridizajnim memorie dhe më shumë

Piton

Python është një gjuhë programimi e interpretuar e nivelit të lartë, filozofia e së cilës thekson lexueshmërinë e kodit të saj.

Pas një viti zhvillimi, është publikuar versioni i ri i gjuhës së programimit Python, 3.11 . Dega e re do të mbështetet për një vit e gjysmë, pas së cilës do të publikohen patch-e për tre vjet e gjysmë të tjera për të adresuar dobësitë.

Në të njëjtën kohë, filloi testimi alfa i degës Python 3.12 (sipas orarit të ri të zhvillimit, puna në një degë të re fillon pesë muaj para lëshimit të degës së mëparshme dhe arrin fazën e testimit alfa në kohën e versionit tjetër).

Dega Python 3.12 do të jetë në versionet alfa për shtatë muaj, gjatë të cilëve do të shtohen veçori të reja dhe do të rregullohen gabimet. Pas kësaj, testimi beta do të zhvillohet për tre muaj, gjatë të cilit do të ndalohet shtimi i veçorive të reja dhe do t'i kushtohet vëmendje e plotë korrigjimeve të gabimeve. Dy muajt e fundit përpara nisjes, dega do të jetë në fazën e kandidatit për nisje, në të cilën pikë do të bëhet stabilizimi përfundimtar.

Karakteristikat kryesore të reja të Python 3.11

Ky version i ri përfshin punë të konsiderueshme për të optimizuar performancën . Dega e re përfshin ndryshime që lidhen me përshpejtimin dhe vendosjen në linjë të thirrjeve të funksioneve , përdorimin e interpretuesve të shpejtë për operacionet tipike dhe optimizimet e zhvilluara nga projektet Cinder dhe HotPy. Në varësi të ngarkesës së punës, shpejtësia e ekzekutimit të kodit rritet midis 10% dhe 60%. Mesatarisht, performanca në paketën e testimit pyperformance u rrit me 25%.

Mekanizmi i ruajtjes në memorje të bytekodeve është ridizajnuar , duke zvogëluar kohën e fillimit të interpretuesit me 10-15%. Objektet që përmbajnë bytekode tani ndahen statikisht nga interpretuesi, duke eliminuar hapat e dekodimit të bytekodeve të marra nga memoria e përkohshme dhe konvertimin e objekteve që përmbajnë bytekode për vendosje dinamike në memorie.

Është shtuar mbështetje për grupet e përjashtimeve , duke i dhënë programit mundësinë për të gjeneruar dhe përpunuar përjashtime të shumta të ndryshme njëkohësisht. Lloje të reja përjashtimesh, ExceptionGroup dhe BaseExceptionGroup, propozohen për grupimin dhe kombinimin e përjashtimeve të shumta, dhe shprehja "except*" është shtuar për të ndarë përjashtimet brenda një grupi.

Është shtuar një lloj i veçantë LiteralStringmund të përfshijë vetëm vargje literale që janë të pajtueshme me llojin LiteralString (domethënë, vargje të zhveshura dhe vargje të tipit LiteralString, por jo vargje arbitrare ose të kombinuara të tipit str). Lloji LiteralString mund të përdoret për të kufizuar kalimin e argumenteve të vargjeve në funksione, duke parandaluar zëvendësimin arbitrar të pjesëve të vargjeve ku mund të lindin dobësi, për shembull, kur gjenerohen vargje për pyetje SQL ose komanda shell.

Përveç kësaj, ofrohet edhe mundësia për të shënuar elementë individualë të fjalorëve të shtypur (TypedDict) me shenjat "Required" dhe "Not Required" për të përcaktuar fushat e detyrueshme dhe opsionale (si parazgjedhje, të gjitha fushat e deklaruara janë të detyrueshme nëse parametri total nuk është vendosur në "False").

U shtua dekoruesi i klasës, metodës dhe funksionit @dataclass_transform ; kur specifikohet, kontrolluesi i tipit statik e trajton objektin sikur të kishte përdorur dekoruesin @dataclasses.dataclass.

Nga ndryshimet e tjera që bien në sy në këtë version të ri:

  • U shtua aftësia për të përdorur grupimin atomik ((?>…)) dhe sasiorët xheloz (posedues) (*+, ++, ?+, {m,n}+) në shprehje të rregullta.
  • Është shtuar tipi TypeVarTuple, i cili lejon përdorimin e gjenerikëve të variablave, ndryshe nga TypeVar, i cili mbulon jo një lloj, por një numër arbitrar llojesh.
  • Biblioteka standarde përfshin modulin tomllib me funksione për të analizuar formatin TOML.
  • Metoda add_note() është shtuar në klasën BaseException, e cila lejon që një shënim teksti t'i bashkëngjitet përjashtimit, për shembull për të shtuar informacion kontekstual që nuk ishte i disponueshëm në kohën kur u hodh përjashtimi.
  • Një lloj i veçantë Vetë është shtuar për të përfaqësuar klasën aktuale private. Self mund të përdoret për të shënuar metoda që kthejnë një shembull të klasës tuaj në një mënyrë më të thjeshtë sesa përdorimi i TypeVar.
  • U shtua opsioni i linjës së komandës "-P" dhe ndryshorja e mjedisit PYTHONSAFEPATH për të çaktivizuar lidhjen automatike të shtigjeve të skedarëve potencialisht të pasigurta me sys.path.
  • Shërbimi py.exe për platformën Windows është përmirësuar ndjeshëm për të mbështetur sintaksën "-V:". / "përveç "- . ».
  • Shumë makro C API janë konvertuar në funksione inline të rregullta ose statike
  • Modulet uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev dhe sunau janë zhvlerësuar dhe do të hiqen nga Pythonth. 3.13 lëshimi.
  • U hoqën funksionet e PyUnicode_Encode*.
  • Klasa TaskGroup u shtua në modulin asyncio me zbatimin e një menaxheri të kontekstit asinkron që pret që grupi i detyrave të përfundojë.
  • Shtimi i detyrave në një grup bëhet duke përdorur metodën create_task().

Së fundmi, nëse jeni të interesuar të mësoni më shumë rreth kësaj , mund t'i gjeni detajet në lidhjen e mëposhtme.


Shto si burim të preferuar në Google