Ho lokolloa ha puo ea lenaneo la Python 3.8

Ka mor'a selemo le halofo ea tsoelo-pele hlahisoa tokollo e kholo ea puo ea lenaneo python 3.8. Lintlafatso tse lokisoang bakeng sa lekala la Python 3.8 reriloe ho lokolloa nakong ea likhoeli tse 18. Bofokoli bo matla bo tla lokisoa lilemo tse 5 ho fihlela Mphalane 2024. Lintlafatso tse lokisoang bakeng sa lekala la 3.8 li tla lokolloa likhoeling tse ling le tse ling tse peli, ka tokollo ea pele ea tokiso ea Python 3.8.1 e reriloeng ka December.

Har'a tse ekelitsoeng boiqapelo:

  • tshehetso mesebetsi ea kabelo ka har'a lipolelo tse rarahaneng. Ka ":=" opareitara e ncha, hoa khonahala ho etsa ts'ebetso ea ho fana ka boleng ka har'a lipolelo tse ling, mohlala, ho qoba mehala e habeli ho lipolelo tse nang le maemo le ha u hlalosa loops:

    haeba (n := len(a)) > 10:
    ...

    ha (block := f.read(256)) != ":
    ...

  • tshehetso syntax e ncha bakeng sa ho hlakisa mabaka a tšebetso. Ha u bala likhang nakong ea tlhaloso ea mosebetsi, joale u ka hlakisa "/" ho arola likhang tse ka abeloang feela boleng ho latela tatellano eo litekanyetso li baloang ka eona nakong ea mohala oa mosebetsi, ho tsoa ho likhang tse ka abeloang. ka tatellano efe kapa efe (phapang=boleng syntax) ). Ka lehlakoreng le sebetsang, karolo e ncha e lumella mesebetsi ho Python ho etsisa ka ho feletseng boitšoaro ba mesebetsi e teng ho C, le ho qoba ho tlama mabitso a itseng, mohlala, haeba lebitso la parameter le reretsoe ho fetoloa nakong e tlang.

    Folakha ea "/" e tlatsana le folakha e kentsoeng pele ea "*", e arola mefuta e fapaneng eo ho eona mosebetsi o leng ka sebopeho sa "variable=value" o sebetsang. Ka mohlala, mosebetsing "def f(a, b, /, c, d, *, e, f):" mefuta e fapaneng "a" le "b" e ka abeloa feela ka tatellano ea litekanyetso tse thathamisitsoeng. ,
    mefuta e fapaneng “e” le “f”, feela ka kabelo “variable=value”, le mefuta “c” le “d” ka efe kapa efe ea litsela tse latelang:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • E kentsoe C API e ncha
    ho lokisa liparamente tsa ho qala Python, ho lumella taolo e felletseng holim'a tsohle tlhophiso le ho fana ka lisebelisoa tse tsoetseng pele tsa ho sebetsana le liphoso. API e reriloeng e etsa hore ho be bonolo ho kenya ts'ebetso ea mofetoleli oa Python lits'ebetsong tse ling tsa C;

  • E kentswe tshebetsong protocol e ncha ea Vectorcall bakeng sa phihlello e potlakileng ea lintho tse ngotsoeng ka puo ea C. Ho CPython 3.8, phihlello ea Vectorcall e ntse e lekanyelitsoe ts'ebelisong ea kahare; ho fetisetsa sehlopheng sa li-API tse fumanehang phatlalatsa ho reriloe ho CPython 3.9;
  • E kentsoe E letsetsa ho Runtime Audit Hooks, e fanang ka lits'ebetso le meralo ho Python ka phihlello ea tlhaiso-leseling e tlase mabapi le tsoelo-pele ea sengoloa ho hlahloba liketso tse entsoeng (mohlala, o ka lekola ho kenngoa ha li-module, ho bula lifaele, ho sebelisa mohlala, ho fihlella li-sockets tsa marang-rang, ho sebelisa khoutu ka exec, eval le run_mod);
  • Ka mojulung mokotla faneng ka ts'ehetso bakeng sa protocol ea Pickle 5, e sebelisetsoang ho etsa serializing le ho lahla lintho. Pickle e u lumella ho ntlafatsa phetisetso ea data e ngata lipakeng tsa lits'ebetso tsa Python ho tlhophiso ea li-multi-core le multi-node ka ho fokotsa palo ea ts'ebetso ea kopi ea mohopolo le ho sebelisa mekhoa e meng ea ho ntlafatsa joalo ka ho sebelisa li-algorithms tse ikhethileng tsa data. Phetolelo ea bohlano ea protocol e hlokomeleha bakeng sa ho eketsoa ha mokhoa oa phetisetso ea kantle ho sehlopha, moo data e ka fetisetsoang ka thoko ho molapo o ka sehloohong oa pickle.
  • Ka nako e sa lekanyetsoang, phetolelo ea bone ea protocol ea Pickle e sebelisoa, eo, ha e bapisoa le phetolelo ea boraro e neng e fanoa pele ka nako e sa lekanyetsoang, e lumella ho sebetsa ka mokhoa o phahameng le ho fokotsa boholo ba data e fetisitsoeng;
  • Ka mojulung ho thapa Ho hlahisoa likarolo tse 'maloa tse ncha:
    • Sehlopha TypedDict bakeng sa lihlopha tse kopanetsoeng tseo ho tsona boitsebiso ba mofuta bo hlalositsoeng ka ho hlaka bakeng sa lintlha tse amanang le linotlolo (“TypedDict('Point2D', x=int, y=int, label=str)").
    • Tšoaea Liter, e u lumellang hore u behe moeli oa paramethara kapa u khutlisetse boleng ho litekanyetso tse seng kae tse boletsoeng esale pele ("Literal['connected', 'disconnected']").
    • Kaho "ho qetela", e etsang hore ho khonehe ho hlalosa boleng ba mefuta-futa, mesebetsi, mekhoa le lihlopha tse ke keng tsa fetoloa kapa tsa aroloa hape ("pi: Final[float] = 3.1415926536").
  • E kenyellelitse bokhoni ba ho abela cache bakeng sa lifaele tse hlophisitsoeng ka bytecode, tse bolokiloeng sefateng se arohaneng sa FS mme se arotsoe ho li-directory tse nang le khoutu. Tsela ea ho boloka lifaele ka bytecode e behiloe ka ho feto-fetoha PYTHONPYCACHEPREFIX kapa khetho "-X pycache_prefix";
  • E kentswe tshebetsong bokhoni ba ho theha li-debug builds tsa Python tse sebelisang ABI e ts'oanang le tokollo, e u lumellang ho kenya li-extensions tse ngotsoeng ka puo ea SI, tse hlophisitsoeng bakeng sa litokollo tse tsitsitseng, ho haha ​​​​li-debug;
  • f-strings (litlhaloso tse hlophisitsoeng tse hlophiloeng ka 'f') li fana ka ts'ehetso bakeng sa = opareitara (mohlala, "f'{expr=}'"), e u lumellang ho fetolela polelo ho sengoloa bakeng sa ho lokisa liphoso habonolo. Ka mohlala:

    ››› mosebelisi = 'eric_idle'
    ››› setho_ho tloha = letsatsi(1975, 7, 31)
    ››› f'{user=} {tho_ho tloha=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Polelo "tsoela pele»e lumelletsoe ho sebelisoa ka har'a boloko a qetella;
  • Mojule o mocha o kentsoe multiprocessing.shared_memory, e lumellang tšebeliso ea likarolo tsa memori tse arolelanoang litlhophisong tse ngata;
  • Sethaleng sa Windows, ts'ebetsong ea asyncio e tlositsoe ho sebelisa sehlopha ProactorEventLoop;
  • Ts'ebetso ea litaelo tsa LOAD_GLOBAL e eketsehile ka hoo e ka bang 40% ka lebaka la tšebeliso ea mochine o mocha oa ho boloka khoutu ea ntho.

Source: opennet.ru

Eketsa ka tlhaloso