Po roce vývoje byla zveřejněna významná verze programovacího jazyka Python 3.14. Nová větev bude podporována rok a půl, poté se pro ni budou další tři a půl roku tvořit záplaty se zranitelností.
Mezi nové funkce přidané v Pythonu 3.14 (1, 2, 3):
- Byla implementována oficiální podpora pro sestavení CPythonu bez globálního zámku interpretu (GIL). Sestavení bez GIL eliminuje problém paralelizace operací na vícejádrových systémech, který je způsoben tím, že GIL brání souběžnému přístupu ke sdíleným objektům z různých vláken. Zakázání GIL zavádí dodatečné režijní náklady v důsledku změn v garbage collectoru, systému správy paměti a zamykacích primitivech. Například použití počítání referencí pro izolaci vláken vede ke snížení výkonu přibližně o 10 % v jednovláknových skriptech. Tuto režii však lze kompenzovat paralelizací operací.
- Přidána podpora pro t-řetězce (literály s prefixem 't'), které umožňují použít syntaxi podobnou f-řetězcům k vytvoření vlastních obslužných rutin šablon pro řetězce. Na rozdíl od f-řetězců vracejí t-řetězce objekt, který samostatně ukládá statická řetězcová data a nahrazené hodnoty. Toto samostatné úložiště umožňuje připojit vlastní obslužné rutiny, které ovlivňují pouze nahrazené hodnoty. Můžete například připojit obslužnou rutinu pro převod nahrazené hodnoty na velká písmena nebo pro escapování speciálních znaků při nahrazování externích dat do řetězce. variety = 'Stilton' template = t'Vyzkoušejte trochu sýra {variety}!' print(list(template)) print(lower_upper(template)) ['Vyzkoušejte trochu ', Interpolation('Stilton', 'variety', None, »), ' cheese!'] Vyzkoušejte trochu sýra STILTON! attributes = {'src': 'limburger.jpg', 'alt': 'krásný sýr'} template = t' 'tisk(html(šablona))
- Do standardní knihovny byl přidán modul concurrent.interpreters. Umožňuje souběžné spuštění více izolovaných instancí interpretu Pythonu v jednom procesu. Dříve byla tato funkce dostupná pouze prostřednictvím rozhraní C-API. Souběžné provádění více interpretů lze použít k paralelizaci operací, podobně jako spouštění více paralelních procesů, ale na rozdíl od modelu s více procesy spotřebovává méně zdrojů. Na úrovni aplikace lze k oddělení operací mezi interprety použít model aktorů a CSP (Communication of Sequential Processes).
- CPython implementuje nový typ interpretu, který používá koncová volání mezi funkcemi jazyka C implementujícími jednotlivé bytkódy Pythonu, namísto jedné velké funkce s příkazy switch/case. Po zabudování do Clang 19 vykazuje nový interpret při spouštění benchmarků pyperformance zlepšení výkonu o 3–5 %. Nový interpret je v současné době k dispozici jako volitelná výbava pro architektury x86-64 a AArch64 a vyžaduje alespoň Clang 19 (podpora GCC je slíbena později).
- Nyní je podporováno odložené zpracování anotací pro funkce, třídy a moduly. Anotace se již nezpracovávají okamžitě, ale ukládají se jako specializované funkce a vyhodnocují se v případě potřeby. Toto nové chování zjednodušuje práci s anotacemi a snižuje režii zpracování anotací za běhu. Pro kontrolu odložených anotací je k dispozici modul annotationlib.
- Do standardní knihovny byl přidán balíček pro kompresi, který poskytuje funkce pro kompresi a dekompresi dat pomocí různých algoritmů. Kromě modulů compression.lzma, compression.bz2, compression.gzip a compression.zlib, které poskytují přístup k funkcím dříve dostupným v modulech lzma, bz2, gzip a zlib, byl přidán nový modul compression.zstd, který implementuje algoritmus ZSTD (Zstandard).
- Ve výrazech „except“ a „except*“ je povoleno vynechat závorky, pokud výraz specifikuje více typů výjimek a nepoužívá klíčové slovo „as“. try: connect_to_server() except TimeoutError, ConnectionRefusedError: print('Síť přestala existovat!')
- V interaktivním shellu PyREPL bylo implementováno zvýrazňování syntaxe. V utilitách CLI pro moduly unittest, argparse, json a calendar byl povolen barevný výstup.
- Přidáno rozhraní pro připojení externích debuggerů a profilerů k již spuštěným procesům CPythonu bez nutnosti zastavení a restartu a bez ovlivnění výkonu.
- Modul pdb nyní podporuje vzdálená připojení ke spuštěným procesům Pythonu. Například pro připojení k procesu 1234 můžete použít příkaz „python -m pdb -p 1234“.
- Modul uuid byl aktualizován o funkce uuid6(), uuid7() a uuid8(), které implementují verze 6, 7 a 8 identifikátorů UUID.
- Přidán varovný výstup při použití výrazů „return“, „break“ a „continue“ k ukončení bloku „finally“.
- Bylo přidáno rozhraní PyInitConfig C API pro přizpůsobení inicializace Pythonu bez spoléhání se na struktury jazyka C, což umožňuje změny kompatibilní s ABI. Pro načtení a nastavení konfigurace jsou k dispozici funkce PyConfig_Get() a PyConfig_Set() a také funkce PyInitConfig_AddModule() pro přidání modulu s rozšířením.
- Vylepšené chybové zprávy. Přidána doporučení pro opravu překlepů v klíčových slovech.
- Balíček integruje výsledky práce na nahrazení implementací kryptografických algoritmů v Pythonu nabízených v modulech hashlib a hmac verzemi s matematickým (formálním) důkazem spolehlivosti, připravenými projektem „HACL*“. Všechny výchozí hašovací funkce a HMAC poskytované v Pythonu byly nahrazeny verzemi, pro které je poskytnut formální důkaz shody (formální ověření). Mimo jiné byla přidána implementace HMAC-BLAKE2, která využívá instrukce AVX2 SIMD pro urychlení výpočtů.
- Přidáno nové rozhraní příkazového řádku („python -m asyncio ps PID“ a „python -m asyncio pstree PID“) pro kontrolu spuštěných procesů Pythonu s asynchronními úlohami (asyncio).
- Složení hotových sestav pro macOS и Windows Součástí je experimentální JIT kompilátor. Instalační program pro Windows nahrazen správcem instalace.
- Pro ověření integrity sestav se místo podpisů PGP používá systém ověřování kryptografického kódu Sigstore.
- Jsou k dispozici oficiální binární sestavení pro platformu. Android.
V nadcházejících hodinách začne alfa testování větve Python 3.15, která bude ve fázi vydání alfa po dobu sedmi měsíců, během nichž budou přidávány nové funkce a opravovány chyby (v souladu s novým harmonogramem vývoje se pracuje na novém větev začíná pět měsíců před vydáním předchozí větve a v době, kdy další vydání dosáhne fáze testování alfa). Poté budou betaverze testovány po dobu tří měsíců, během kterých bude zakázáno přidávání nových funkcí a veškerá pozornost bude věnována opravám chyb. Poslední dva měsíce před vydáním bude pobočka ve fázi kandidáta na vydání, kdy bude provedena finální stabilizace.
Zdroj: opennet.ru
