Lëshimi i gjuhës së programimit Python 3.12

Pas një viti zhvillimi, është publikuar një version i rëndësishëm i gjuhës së programimit Python 3.12. Kjo degë do të mbështetet për një vit e gjysmë, pas së cilës do të formohen për rreth tre vjet e gjysmë korrigjime për zgjidhjen e dobësive.

Në të njëjtën kohë ka filluar testimi alfa i degës Python 3.13, në të cilën është futur një modalitet ndërtimi CPython pa bllokimin global të interpretuesit (GIL, Global Interpreter Lock). Dega Python 3.13 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ë korrigjohen defekte (sipas një grafiku të ri zhvillimi, puna mbi degën e re fillon pesë muaj përpara lëshimit të degës paraprake dhe në momentin e lëshimit të radhës arrin në 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 të gjithë vëmendja do të përqendrohet në korrigjimin e 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ë kryhet stabilizimi përfundimtar.

Disa nga novacionet e shtuar në Python 3.12 janë:

  • ËshtĂ« rritur fleksibiliteti i mĂ«nyrĂ«s sĂ« shprehjes sĂ« f-strings (literalĂ«t e formatit me prefiks ‘f’), duke lejuar heqjen e shumĂ« kufizimeve. PĂ«r shembull, brenda f-strings tani lejohet tĂ« shprehni çdo shprehje tĂ« pranuar nga Python, duke pĂ«rfshirĂ« shprehje shumĂ«rrreshtore, komente, slashe tĂ« prapĂ«sht, dhe sekuenca evazive pĂ«r Unicode. PĂ«r mĂ« tepĂ«r, brenda vargut tani lejohet ripĂ«rdorimi i tĂ« njĂ«jtave citate si nĂ« rrethimin e f-string (dmth. brenda tani pĂ«rsĂ«ri mund tĂ« pĂ«rdoren citate tĂ« dyfishta, pa kaluar nĂ« ato njĂ«fishta). ËshtĂ« rritur informativiteti i mesazheve tĂ« gabimeve nĂ« f-strings, tĂ« cilat tani tregojnĂ« vendin e saktĂ« nĂ« varg qĂ« shkaktoi gabimin.

    Për shembull, në Python 3.12 lejohet ndërtimi i mëposhtëm: print(f"This is the playlist: {"\n".join(songs)}") print(f"This is the playlist: {"\N{BLACK HEART SUIT}".join(songs)}") print(f"This is the playlist: {", ".join([ ... 'Take me back to Eden', # My, my, those eyes like fire ... 'Alkaline', # Not acid nor alkaline ... 'Ascensionism' # Take to the broken skies at last ... ])}")

  • PĂ«r tĂ« rritur efikasitetin e pĂ«rdorimit tĂ« burimeve nĂ« sisteme me shumĂ« bĂ«rthama, Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r interpretorĂ« tĂ« izoluara dhe bllokime globale tĂ« veçanta (GIL, Global Interpreter Lock) pĂ«r interpretorĂ« tĂ« ndryshĂ«m brenda njĂ« procesi (CPython lejon nĂ« njĂ« proces tĂ« ekzekutoj disa interpretorĂ« njĂ«kohĂ«sisht). NĂ« formĂ«n aktuale, kjo mundĂ«si Ă«shtĂ« e disponueshme vetĂ«m pĂ«rmes C-API (nĂ« Python API mbĂ«shtetje do tĂ« jetĂ« nĂ« degĂ«n e ardhshme tĂ« rĂ«ndĂ«sishme).
  • NĂ« kodin Python Ă«shtĂ« shtuar mundĂ«sia e pĂ«rdorimit tĂ« protokollit buffer. Klasa qĂ« ofrojnĂ« metodĂ«n "__buffer__()", tani mund tĂ« pĂ«rdoren si lloje qĂ« punojnĂ« drejtpĂ«rdrejt me tĂ« dhĂ«na binare nĂ« memorie.
  • ËshtĂ« propozuar moduli sys.monitoring pĂ«r demostratĂ« dhe profilim, duke lejuar ndjekjen e ngjarjeve nĂ« CPython me shpenzime minimale, si thirrjet, kthimet nga funksionet, ekzekutimi i vargjeve tĂ« rastit tĂ« kodit, pĂ«rjashtimet dhe kalimet.
  • NĂ« interpretues Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r sistemin e nĂ«ndegĂ«s Linux perf, duke lejuar identifikimin e emrave tĂ« funksioneve Python gjatĂ« profilimit me ndihmĂ«n e veglave perf (mĂ« parĂ« nĂ« gjurmimet e emrave tĂ« funksioneve C vetĂ«m identifikoheshin).
  • ËshtĂ« rritur informativiteti i mesazheve tĂ« gabimeve dhe Ă«shtĂ« zgjeruar spektri i pĂ«rjashtimeve qĂ« ofrojnĂ« rekomandime pĂ«r heqjen e gabimeve. PĂ«r shembull, tani jepen rekomandime pĂ«r importimin e moduleve tĂ« harruara tĂ« bibliotekĂ«s standarde, tregohen sugjerime pĂ«r shtimin e prefiksit "self." nĂ« metoda, identifikohet shkrimi "import x from y" nĂ« vend tĂ« "from y import x" etj. sys.version_info NameError: emri ‘sys’ nuk Ă«shtĂ« i definuar. Keni harruar tĂ« importoni ‘sys’? somethin = blech NameError: emri ‘blech’ nuk Ă«shtĂ« i definuar. Keni dashur tĂ« thoni: ‘self.blech’? import a.y.z from b.y.z SyntaxError: A keni dashur tĂ« pĂ«rdorni ‘from 
 import 
’? from collections import chainmap ImportError: nuk mund tĂ« importohet emri ‘chainmap’ nga ‘collections’. Keni dashur tĂ« thoni: ‘ChainMap’?
  • Puna pĂ«r optimizimin e performancĂ«s Ă«shtĂ« vazhduar. Rritja totale e performancĂ«s si rezultat i optimizimeve tĂ« shtuar Ă«shtĂ« e vlerĂ«suar nĂ« 5%.
    • NĂ« procesin e ndĂ«rtimit Ă«shtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r optimizuesin binar BOLT, i cili rrit performancĂ«n nga 1-5%.
    • ËshtĂ« realizuar zhvillimi inline i pĂ«rfshirjeve (comprehensions), duke dyfishuar shpejtĂ«sinĂ« e punĂ«s me pĂ«rfshirjet (pĂ«r kodin qĂ« pĂ«rdor pĂ«rfshirje aktive, testimi ka treguar njĂ« rritje totale tĂ« performancĂ«s prej 11%).
    • JanĂ« reduktuar 8-16 byte tĂ« madhĂ«sisĂ« sĂ« objekteve Unicode.
    • JanĂ« pĂ«rshpejtuar operacionet me shprehje tĂ« rregullta re.sub(), re.subn() dhe re.Pattern.
    • Nga 2 deri nĂ« 20 herĂ« e pĂ«rshpejtuar ekzekutimi i kontrollimeve isinstance() pĂ«r disa protokolle.
    • Kapsulimi i paketĂ«s asyncio Ă«shtĂ« pĂ«rmirĂ«suar ndjeshĂ«m (nĂ« disa teste Ă«shtĂ« vĂ«rejtur njĂ« pĂ«rshpejtim prej 75%).
    • Krijimi i klasĂ«s asyncio.Task Ă«shtĂ« pĂ«rshpejtuar.
    • Funksionet tokenize.tokenize() dhe tokenize.generate_tokens() janĂ« pĂ«rshpejtuar ndjeshĂ«m (nĂ« disa teste me 64%).
    • Ngarkohet atributet dhe thirret metoda super() pĂ«rshpejtuar.
  • Propozohet njĂ« sintaksĂ« e re mĂ« kompakte pĂ«r anotimin e tipeve pĂ«r klasat dhe funksionet e pĂ«rgjithĂ«suara. def max[T](args: Iterable[T]) -> T: 
 class list[T]: def __getitem__(self, index: int, /) -> T: 
 def append(self, element: T) -> None: 

  • Ofron njĂ« mĂ«nyrĂ« tĂ« re pĂ«r tĂ« pĂ«rcaktuar aliazhe tipi me anĂ« tĂ« shprehjes «type» type Point = tuple[float, float] type Point[T] = tuple[T, T]
  • NĂ« modulĂ«n typing Ă«shtĂ« shtuar njĂ« dekorator i ri @override, i cili informon sistemet e kontrollit tĂ« tipeve se metoda nĂ« nĂ«nklasĂ« Ă«shtĂ« e destinuar pĂ«r tĂ« zĂ«vendĂ«suar njĂ« metodĂ« ose atribut nĂ« supĂ«rklasĂ«. Dekoratori mund tĂ« pĂ«rdoret pĂ«r tĂ« identifikuar gabime qĂ« lidhen me njĂ« metodĂ« tĂ« destinuar pĂ«r tĂ« zĂ«vendĂ«suar qĂ« nuk vepron si e tillĂ«. class Base: def log_status(self) -> None: 
 class Sub(Base): @override def log_status(self) -> None: # MirĂ«, zĂ«vendĂ«son Base.log_status 
 @override def done(self) -> None: # Sistemi i kontrollit tĂ« tipeve do tĂ« identifikojĂ« njĂ« gabim 

  • NĂ« interes tĂ« forcimit tĂ« sigurisĂ«, implementimet e integruara tĂ« algoritmeve SHA1, SHA3, SHA2-384, SHA2-512 dhe MD5 nĂ« hashlib janĂ« zĂ«vendĂ«suar me variante formalisht tĂ« verifikuara nga projekti HACL* (implementimet e integruara pĂ«rdoren vetĂ«m nĂ«se OpenSSL mungon).
  • NĂ« CPython Ă«shtĂ« realizuar mbrojtja nga mbushja e stack-ut.
  • NĂ« klasĂ«n pathlib.Path Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r nĂ«nklasa.
  • NĂ« modulĂ«n os Ă«shtĂ« zgjeruar mbĂ«shtetje pĂ«r platformĂ«n Windows. PĂ«r shembull, gjatĂ« punĂ«s nĂ« Windows Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r metodat os.listdrives(), os.listvolumes() dhe os.listmounts(), si dhe Ă«shtĂ« pĂ«rmirĂ«suar saktĂ«sia e os.stat() dhe os.lstat().
  • NĂ« modulet sqlite3 dhe uuid janĂ« shtuar ndĂ«rfaqet e komandave tĂ« linjĂ«s («python -m sqlite3» dhe «python -m uuid»).
  • NĂ« C-API Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r objekte 'tĂ« pavdekshĂ«m', pĂ«r tĂ« cilat nuk zbatohet numĂ«rimi i referencave.
  • ËshtĂ« realizuar koncepti i nivelit tĂ« paqĂ«ndrueshĂ«m tĂ« C API, i destinuar pĂ«r pĂ«rdorim nĂ« debug-erĂ«, JIT-kompilatorĂ« dhe mjete tĂ« tjera me nivel tĂ« ulĂ«t.
  • ËshtĂ« bĂ«rĂ« njĂ« pastrimi i mundĂ«sive tĂ« vjetra.
    • JanĂ« fshirĂ« modulĂ«t asynchat, asyncore, smtpd, imp dhe distutils (moduli distutils mund tĂ« pĂ«rdoret nga paketa setuptools).
    • Shtesat wstr dhe wstr_length janĂ« fshirĂ« nga implementimet C tĂ« objekteve unicode.
    • Metodat e vjetra janĂ« fshirĂ« nĂ« modulĂ«n unittest.
    • JanĂ« fshirĂ« funksionet, klasat dhe metodat qĂ« janĂ« tĂ« vjetra ose qĂ« nuk funksionojnĂ« siç duhet, duke pĂ«rfshirĂ« locale.format(), io.OpenWrapper, ssl.RAND_pseudo_bytes(), ElementTree.Element.copy(), hashlib.pbkdf2_hmac(), gzip.GzipFile etj.
    • NĂ« modulĂ«n webbrowser Ă«shtĂ« ndaluar mbĂ«shtetje pĂ«r shfletuesit e vjetra, pĂ«rfshirĂ« Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, Firebird, dhe Firefox deri nĂ« versionin 36.
    • NĂ« pĂ«rgatitje pĂ«r optimizimet e ardhshme, Ă«shtĂ« ndryshuar prezantimi i brendshĂ«m i numrave tĂ« tĂ«rĂ«.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster