Másfél év fejlesztés után jelentős kiadás a programozási nyelvben . A Python 3.8 ágon kiadott javítófrissítések 18 hónapon belül fognak megjelenni. A kritikus sebezhetőségeket 2024 októberéig 5 éven keresztül javítják. A 3.8 ágon kiadott javítófrissítések kéthavonta fognak megjelenni, az első javítókiadás, a Python 3.8.1 decemberre van tervezve.
A hozzáadott :
- hozzárendelési műveletek bonyolult kifejezésekben. Az új „:=” operátor segítségével lehetőség nyílik az értékek hozzárendelésére más kifejezéseken belül, például a funkciók kétszeri hívásának elkerülésére feltételes operátorokban és ciklusok definiálásakor:
if (n := len(a)) > 10:
…while (block := f.read(256)) != »:
… - az új szintaxis a funkcióargumentumok megadásához. A funkció definálásakor most meg lehet adni a „/” zászlót, amely lehetővé teszi a rendelésük alapján csak sorrendben hozzárendelhető argumentumok szétválasztását a szabadon hozzárendelhetők (szintaxis „változó=érték”) között. Gyakorlati szempontból az új lehetőség lehetővé teszi, hogy a Python nyelvű funkciók teljes mértékben emulálják a C nyelv funkcióinak viselkedését, valamint elkerüljék a konkrét nevekre való utalást, például ha a paraméter neve a jövőben megváltoztatásra kerül.
A „/” zászló kiegészíti a korábban hozzáadott „*” jelzést, amely azokat a változókat választja el, amelyeknél csak a „változó=érték” formájú hozzárendelés alkalmazható. Például a „def f(a, b, /, c, d, *, e, f):” funkcióban az „a” és „b” változók csak az értékek sorrendjében állíthatók be.
az „e” és „f” változók, csak a „változó=érték” hozzárendelésen keresztül, míg a „c” és „d” változók bármelyik megadott módszeren keresztül:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - új C API
a Python inicializálás paramétereinek beállításához, amely teljes körű ellenőrzést tesz lehetővé és kiterjedt hibakezelési eszközöket biztosít. Az API leegyszerűsíti a Python értelmező funkcióinak beágyazását más C nyelvű alkalmazásokba; - új Vectorcall protokoll az C nyelven írt objektumok gyorsabb eléréséhez. A CPython 3.8-ban a Vectorcall elérhetősége jelenleg belső használatra korlátozódik, a nyilvános API-k közé való átvitel a CPython 3.9-re van tervezve;
- Runtime Audit Hooks hívások, amelyek lehetővé teszik a Python nyelven írt alkalmazások és keretrendszerek számára, hogy alacsony szintű információkat kapjanak a szkript futása során végzett műveletekről, például nyomon követhetjük a modulok importálását, fájlok megnyitását, hibakeresést, hálózati socketek kezelését, kód végrehajtását exec, eval és run_mod segítségével;
- A modulban a Pickle 5 protokoll támogatása, amelyet objektumok sorosítására és deserializálására használnak. A Pickle optimalizálni tudja a nagy adatmennyiségek átvitelét a Python folyamatok között többmagos és többcsomópontos konfigurációkban, csökkentve a memória másolási műveletek számát és alkalmazva további optimalizáló technikákat, mint például bizonyos adatokhoz specifikus tömörítési algoritmusok használatát. Az ötödik protokollverzió figyelemre méltó a külön átviteli (out-of-band) mód hozzáadásával, ahol az adatok külön küldhetők a fő pickle adatfolyamtól.
- Alapértelmezés szerint a Pickle negyedik protokollverziója aktiválva van, amely a korábban alapértelmezett harmadik verzióhoz képest magasabb teljesítményt és a továbbított adatok méretének csökkentését teszi lehetővé;
- A modulban több új lehetőség került bevezetésre:
- Osztály asszociatív tömbök számára, amelyekben a kulcsokhoz rendelt adatok típusinformációját explicit módon kell megadni („TypedDict('Point2D', x=int, y=int, label=str)” ).
- Típus , amely lehetővé teszi egy paraméter vagy visszatérési érték korlátozását néhány előre definiált értékre („Literal['connected', 'disconnected']”).
- A „„ konstrukció, amely lehetővé teszi változók, függvények, metódusok és osztályok értékeinek meghatározását, amelyek nem módosíthatók vagy újra hozzárendelhetők („pi: Final[float] = 3.1415926536”).
- Lehetőség nyílt a bytecode-ot tartalmazó előfeldolgozott fájlok cache-ének hozzárendelésére, amely eltérő fájlrendszerben és a kódtól különálló könyvtárban kerül tárolásra. A bytecode fájlok mentési útja a változón keresztül vagy a „-X pycache_prefix” opcióval határozható meg;
- A Python debug build can now be created with an ABI identical to the release version, which allows loading C extensions built for stable releases in debug builds.
- f-strings (formatted string literals with the ‘f’ prefix) now support the ‘=’ operator (for example, ‘f'{expr=}'’), allowing expressions to be output as text for easier debugging. For example:
››› user = 'eric_idle'
››› member_since = date(1975, 7, 31)
››› f'{user=} {member_since=}'
'user='eric_idle' member_since=datetime.date(1975, 7, 31)' - The expression ‘’ is allowed within the block ;
- A new module has been added , allowing the use of shared memory segments in multiprocessing configurations.
- On the Windows platform, the asyncio implementation has been switched to use the ;
- The performance of the LOAD_GLOBAL instruction has increased by approximately 40% due to a new object code caching mechanism.
Forrás: opennet.ru
