PÀrast poolteist aastat arendust oluline vÀljalase programmeerimiskeele . Python 3.8 jaoks on oodata parandusi vÀlja antakse 18 kuu jooksul. Kriitilisi haavatavusi parandatakse kuni 5 aastat, oktoobrini 2024. Python 3.8 jaoks esitletakse parandusi iga kahe kuu tagant, esimene parandav vÀljalase Python 3.8.1 on planeeritud detsembriks.
Kasutusele on vÔetud :
- omadusi, mis vĂ”imaldavad kohandatud vÀÀrtuste mÀÀramist keerulisemate vĂ€ljendite sees. Uue operaatori â:=â abil on nĂŒĂŒd vĂ”imalik mÀÀrata vÀÀrtusi ka muudes vĂ€ljendites, nĂ€iteks kahekordse funktsiooni kutsumise vĂ€ltimiseks tingimuslauseid ja tsĂŒklite mÀÀratlemisel:
if (n := len(a)) > 10:
âŠwhile (block := f.read(256)) != »:
⊠- uue sĂŒntaksi kaudu funktsiooni argumendi mÀÀramiseks. Funktsiooni mÀÀratlemisel vĂ”imaldab argumentide loetlemisel nĂŒĂŒd mĂ€rk â/â eristada argumendid, millele saab vÀÀrtuste mÀÀramise peale funktsiooni vĂ€ljakutsumise ajal, argumendi jĂ€rjekorra pĂ”hjal, ja argumendid, mille mÀÀramine on lubatud suvalises jĂ€rjekorras (sĂŒntaks âmuutuja=vÀÀrtusâ). Praktiliselt annab uus vĂ”imalus Pythonis funktsioonides tĂ€ielikult jĂ€rgi jĂ€rele teha olemasolevaid C funktsioone ning vĂ”imaldab tĂ”husalt vĂ€ltida seotust spetsiifiliste nimedega, nt juhul kui parameetri nime plaanitakse tulevikus muuta.
MĂ€rk â/â tĂ€iendab varem lisatud omadust â*â, mis eristab muutujaid, mida saab mÀÀrata ainult vormis âmuutuja=vÀÀrtusâ. NĂ€iteks funktsioonis âdef f(a, b, /, c, d, *, e, f):â vĂ”ivad muutujaid âaâ ja âbâ mÀÀrata ainult antud jĂ€rjekorras.
muutujad âeâ ja âfâ, ainult lĂ€bi âmuutuja=vÀÀrtusâ mÀÀramise, ning muutujaid âcâ ja âdâ igas mainitud vormis:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - uus C API
Pythoninihitusparameetrite seadistamiseks, mis vÔimaldab tÀielikku kontrolli kogu ja pakub laienevaid vigade töötlemise vahendeid. Pakutav API lihtsustab Python interpreteerimist teiste C keeles kirjutatud rakenduste sisse; - uus Vectorcall protokoll, et kiirendada juurdepÀÀsu C-keeles kirjutatud objektidele. CPython 3.8-s on Vectorcall juurdepÀÀs hetkel piiratud sisemiseks kasutamiseks, avalike API-deks muutmine on planeeritud CPython 3.9-le;
- Runtime Audit Hookide kÔned, mis vÔimaldavad rakendustel ja raamistikudel Python keeles juurde pÀÀseda madala taseme teabele skripti tÀitmise kÀigus, et auditeerida sooritusi (nÀiteks on vÔimalik jÀlgida moodulite importimist, failide avamist, jÀlgimise kasutamist, vÔrgusokkide nÔudmisi, koodi kÀivitamist lÀbi exec, eval ja run_mod);
- Moodulis Pickle 5 protokolli tugi, mida kasutatakse objektide serialiseerimiseks ja deserialiseerimiseks. Pickle vĂ”imaldab optimeerida suurte andmehulkade edastamist Python protsesside vahel mitme tuuma ja klastrite konfiguratsioonides, vĂ€hendades mĂ€lu kopeerimise operatsioonide arvu ning rakendades tĂ€iendavaid optimeerimistehnikaid, nagu spetsiifiliste andmete jaoks mĂ”eldud pakkimismeetodite kasutamine. Protokolli viies versioon on mĂ€rkimisvÀÀrne eraldatud edastamise (out-of-band) reĆŸiimi lisamisega, kus andmeid saab edastada eraldi peamisest pickle voost.
- Vaikimisi on aktiveeritud Pickle neljas versioon, mis vÔrreldes eelnevalt vaikimisi pakutud kolmanda versiooniga vÔimaldab saavutada paremat jÔudlust ja vÀhendada edastatavate andmete mahtu;
- Moodulis on esitatud mitmeid uusi vÔimalusi:
- Klass assotsiatiivsete massiivide jaoks, kus klahvidega seostatavate andmete jaoks mÀÀratakse selgelt tĂŒĂŒpide teave ("TypedDict('Point2D', x=int, y=int, label=str)").
- TĂŒĂŒp , mis vĂ”imaldab piirata parameetrit vĂ”i tagastatavat vÀÀrtust mitu eelnevalt mÀÀratud vÀÀrtusega ("Literal['connected', 'disconnected']").
- Konstruktsioon "", mis vĂ”imaldab mÀÀrata muutujate, funktsioonide, meetodite ja klasside vÀÀrtused, mida ei saa muuta vĂ”i ĂŒmber mÀÀrata ("pi: Final[float] = 3.1415926536").
- Lisatud vÔimalus mÀÀrata vahemÀlu kompileeritud Bytecode failide jaoks, mis salvestatakse eraldi FS puusse ja eraldatakse koodide kataloogidest. Bytecode failide salvestamise tee mÀÀratakse muutuja vÔi valiku "-X pycache_prefix" kaudu;
- Python debug build looming vÔimaldab luua, kasutades sama ABI kui tootmisversioon, mis vÔimaldab laadida C keeles kirjutatud laiendusi, mis on kompileeritud stabiilsete vÀljaannete jaoks;
- F-string'ides (formaatimisliteraatide eesliitega 'f') on toetatud operaator «=» (nÀiteks «f'{expr=}'»), mis vÔimaldab vÀljendi teksti vormindamist, et hÔlbustada tÔrkeotsingut. NÀiteks:
âșâșâș kasutaja = 'eric_idle'
âșâșâș liige_alates = date(1975, 7, 31)
âșâșâș f'{kasutaja=} {liige_alates=}'
«kasutaja='eric_idle' liige_alates=datetime.date(1975, 7, 31)» - VÀljend «» on lubatud kasutada ploki sees ;
- Lisatud uus moodul , mis vÔimaldab kasutada jagatud mÀlu segmente mitme protsessiga konfigureerimistes;
- Windowsi platvormil on asyncio rakendamine muudetud kasutama klassi ;
- LOAD_GLOBAL kÀsu jÔudlus on suurenenud umbes 40% uue objektikoodi vahemÀlu mehhanismi kasutuselevÔtu tÔttu.
Allikas: opennet.ru
