Python 3.11 přichází s vylepšeními výkonu, přepracováním mezipaměti a dalšími

PYTHON

Python je interpretovaný programovací jazyk na vysoké úrovni, jehož filozofie klade důraz na čitelnost jeho kódu.

Po roce vývoje byla vydána nová verze programovacího jazyka Python, 3.11 . Nová větev bude podporována rok a půl, poté budou další tři a půl roku vydávány záplaty, které budou řešit zranitelnosti.

Zároveň začalo alfa testování větve Pythonu 3.12 (podle nového vývojového harmonogramu začíná práce na nové větvi pět měsíců před vydáním předchozí větve a do fáze alfa testování se dostane v době vydání další verze).

Větev Pythonu 3.12 bude ve verzích alfa po dobu sedmi měsíců, během kterých budou přidávány nové funkce a opraveny chyby. Poté bude probíhat beta testování po dobu tří měsíců, během kterých bude zakázáno přidávání nových funkcí a plná pozornost bude věnována opravám chyb. Poslední dva měsíce před spuštěním bude pobočka ve fázi kandidáta na spuštění, kdy dojde ke konečné stabilizaci.

Hlavní nové funkce Pythonu 3.11

Tato nová verze zahrnuje významné změny v optimalizaci výkonu . Nová větev zahrnuje změny týkající se akcelerace a inline nasazování volání funkcí , použití rychlých interpretů pro typické operace a optimalizace vyvinuté v rámci projektů Cinder a HotPy. V závislosti na pracovní zátěži se rychlost provádění kódu zvyšuje o 10 % až 60 %. Výkon v testovací sadě pyperformance se v průměru zvýšil o 25 %.

Mechanismus ukládání bajtkódu do mezipaměti byl přepracován , čímž se zkrátila doba spouštění interpretu o 10–15 %. Objekty obsahující bajtkód jsou nyní staticky alokovány interpretem, čímž se eliminují kroky dekódování bajtkódu načteného z mezipaměti a převodu objektů obsahujících bajtkód pro dynamické umístění v paměti.

Byla přidána podpora pro skupiny výjimek , která programu umožňuje generovat a zpracovávat více různých výjimek současně. Pro seskupování a kombinování více výjimek jsou navrženy nové typy výjimek, ExceptionGroup a BaseExceptionGroup, a pro oddělení výjimek ve skupině byl přidán výraz „except*“.

Byl přidán speciální typ LiteralString , který může obsahovat pouze literální řetězce kompatibilní s typem LiteralString (tj. holé řetězce a řetězce typu LiteralString, ale nikoli libovolné nebo kombinované řetězce typu str). Typ LiteralString lze použít k omezení předávání řetězcových argumentů funkcím, čímž se zabrání libovolné substituci částí řetězců tam, kde mohou vzniknout zranitelnosti, například při generování řetězců pro SQL dotazy nebo příkazy shellu.

Kromě toho je k dispozici také možnost označit jednotlivé prvky typovaných slovníků (TypedDict) značkami Povinné a Nepovinné pro určení povinných a volitelných polí (ve výchozím nastavení jsou všechna deklarovaná pole povinná, pokud parametr total není nastaven na hodnotu False).

Byl přidán dekorátor třídy, metody a funkce @dataclass_transform ; pokud je zadán, statická kontrola typů zachází s objektem, jako by používala dekorátor @dataclasses.dataclass.

Z dalších změn, které v této nové verzi vynikají:

  • Přidána možnost používat atomové seskupení ((?>…)) a žárlivé (vlastnické) kvantifikátory (*+, ++, ?+, {m,n}+) v regulárních výrazech.
  • Byl přidán typ TypeVarTuple, který umožňuje použití variabilních generik, na rozdíl od TypeVar, který nepokrývá jeden typ, ale libovolný počet typů.
  • Standardní knihovna obsahuje modul tomllib s funkcemi pro analýzu formátu TOML.
  • Do třídy BaseException byla přidána metoda add_note() , která umožňuje připojit k výjimce textovou poznámku, například pro přidání kontextových informací, které nebyly dostupné v době vyvolání výjimky.
  • Byl přidán speciální typ Self, který představuje aktuální soukromou třídu. Self lze použít k anotaci metod, které vrátí instanci vaší třídy jednodušším způsobem než pomocí TypeVar.
  • Přidána možnost příkazového řádku "-P" a proměnná prostředí PYTHONSAFEPATH pro zakázání automatického připojování potenciálně nebezpečných cest souborů k sys.path.
  • Nástroj py.exe pro platformu Windows byl výrazně vylepšen, aby podporoval syntaxi "-V:". / " navíc "- . ».
  • Mnoho maker rozhraní C API bylo převedeno na běžné nebo statické inline funkce
  • Moduly uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev a sunau byly zastaralé a budou z Pythonu odstraněny. vydání 3.13.
  • Odstraněné funkce PyUnicode_Encode*.
  • Třída TaskGroup byla přidána do modulu asyncio s implementací asynchronního správce kontextu, který čeká na dokončení skupiny úkolů.
  • Přidávání úkolů do skupiny se provádí pomocí metody create_task().

A konečně, pokud se chcete o tomto tématu dozvědět více , podrobnosti naleznete na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu