A Python 3.11 teljesítményjavításokkal, gyorsítótár-újratervezéssel és még sok mással érkezik

Piton

A Python egy magas szinten értelmezett programozási nyelv, amelynek filozófiája a kód olvashatóságát hangsúlyozza.

Egy év fejlesztés után megjelent a Python programozási nyelv új verziója, a 3.11 . Az új ág másfél évig lesz támogatott, ezt követően további három és fél évig adnak ki javításokat a sebezhetőségek javítására.

Ezzel egy időben megkezdődött a Python 3.12 ág alfa tesztelése (az új fejlesztési ütemterv szerint az új ágon végzett munka öt hónappal az előző ág megjelenése előtt kezdődik, és a következő verzió megjelenésekor éri el az alfa tesztelési szakaszt).

A Python 3.12 ága hét hónapig lesz alfa kiadásban, ezalatt új funkciókat adnak hozzá, és javítják a hibákat. Ezt követően három hónapig béta tesztelésre kerül sor, amely alatt tilos az új funkciók hozzáadása, és teljes figyelmet fordítanak a hibajavításokra. Az indulás előtti utolsó két hónapban az ág az indulási jelölt szakaszban lesz, ekkor kerül sor a végső stabilizációra.

A Python 3.11 fő újdonságai

Ez az új verzió jelentős munkákat tartalmaz a teljesítmény optimalizálása érdekében . Az új ág magában foglalja a függvényhívások gyorsításával és beágyazott telepítésével , a gyors interpreterek használatával a tipikus műveletekhez, valamint a Cinder és HotPy projektek által fejlesztett optimalizációkkal kapcsolatos változtatásokat. A munkaterheléstől függően a kódfuttatási sebesség 10% és 60% között növekszik. Átlagosan a pyperformance tesztkészlet teljesítménye 25%-kal nőtt.

A bájtkód gyorsítótárazási mechanizmusát áttervezték , ami 10-15%-kal csökkentette az interpreter indítási idejét. A bájtkódot tartalmazó objektumokat mostantól statikusan osztja ki az interpreter, kiküszöbölve a gyorsítótárból kinyert bájtkód dekódolásának és a bájtkódot tartalmazó objektumok memóriában való dinamikus elhelyezésre való konvertálásának lépéseit.

Hozzáadtuk a kivételcsoportok támogatását , így a program képes több különböző kivétel egyidejű létrehozására és feldolgozására. Új kivételtípusok, az ExceptionGroup és a BaseExceptionGroup, kerültek bevezetésre több kivétel csoportosítására és kombinálására, és az "except*" kifejezés hozzáadásra került a kivételek csoporton belüli elkülönítéséhez.

Egy speciális LiteralString típus került hozzáadásra , amely csak a LiteralString típussal kompatibilis literál karakterláncokat tud tartalmazni (azaz csupasz karakterláncokat és LiteralString típusú karakterláncokat, de nem tetszőleges vagy kombinált str típusú karakterláncokat). A LiteralString típus segítségével korlátozható a karakterlánc argumentumok függvényeknek történő átadása, megakadályozva a karakterláncok részeinek tetszőleges behelyettesítését, ahol sebezhetőségek adódhatnak, például SQL lekérdezésekhez vagy shell parancsokhoz karakterláncok generálásakor.

Ezenkívül lehetőség van a típusos szótárak (TypedDict) egyes elemeinek Kötelező és Nem Kötelező jelöléssel való megjelölésére is, így meghatározható a kötelező és az opcionális mezők (alapértelmezés szerint minden deklarált mező kötelező, ha a total paraméter nincs Hamis értékre állítva).

A @dataclass_transform osztály-, metódus- és függvénydekorátor hozzáadásra került ; ha meg van adva, a statikus típusellenőrző úgy kezeli az objektumot, mintha a @dataclasses.dataclass dekorátort használta volna.

Az új verzióban kiemelkedő többi változás közül:

  • Hozzáadtuk az atomi csoportosítás ((?>…)) és féltékeny (birtokos) kvantorok (*+, ++, ?+, {m,n}+) használatát a reguláris kifejezésekben.
  • Bekerült a TypeVarTuple típus, amely lehetővé teszi a változó generikusok használatát, ellentétben a TypeVar-ral, amely nem egy típust takar, hanem tetszőleges számú típust.
  • A szabványos könyvtár tartalmazza a tomllib modult a TOML formátum elemzésére szolgáló függvényekkel.
  • Az add_note() metódus hozzáadásra került a BaseException osztályhoz, amely lehetővé teszi szöveges megjegyzés csatolását a kivételhez, például olyan környezeti információk hozzáadásához, amelyek nem voltak elérhetők a kivétel kidobásakor.
  • Egy speciális Self típus került hozzáadásra, amely az aktuális privát osztályt képviseli. A Self a TypeVar használatával egyszerűbb módon használható olyan metódusok megjegyzésére, amelyek az osztály egy példányát adják vissza.
  • A "-P" parancssori opció és a PYTHONSAFEPATH környezeti változó hozzáadva a potenciálisan nem biztonságos fájlútvonalak automatikus kapcsolódásának letiltásához a sys.path fájlhoz.
  • A py.exe segédprogramot a Windows platformon jelentősen továbbfejlesztették, hogy támogassa a "-V:" szintaxist. / " továbbá "- . ».
  • Sok C API-makrót normál vagy statikus soron belüli függvényekké alakítottak át
  • Az uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev és sunau modulok elavultak, és eltávolítják a Pythonból. 3.13 kiadás.
  • PyUnicode_Encode* függvények eltávolítva.
  • A TaskGroup osztályt egy aszinkron környezetkezelő megvalósításával adtuk hozzá az asyncio modulhoz, amely megvárja a feladatcsoport befejezését.
  • A feladatok csoporthoz adása a create_task() metódussal történik.

Végül, ha többet szeretnél megtudni erről , a következő linken megtalálod a részleteket.


Hozzáadás előnyben részesített forrásként a Google-ben