Rhyddhau iaith raglennu Python 3.8

Ar ôl blwyddyn a hanner o ddatblygiad wedi'i gyflwyno datganiad iaith rhaglennu mawr Python 3.8. Diweddariadau cywirol ar gyfer cangen Python 3.8 ar y gweill rhyddhau o fewn 18 mis. Bydd gwendidau critigol yn sefydlog am 5 mlynedd tan fis Hydref 2024. Bydd diweddariadau cywirol ar gyfer cangen 3.8 yn cael eu rhyddhau bob dau fis, gyda'r datganiad cywirol cyntaf o Python 3.8.1 wedi'i drefnu ar gyfer mis Rhagfyr.

Ymhlith y ychwanegol arloesiadau:

  • Cymorth gweithrediadau aseiniad o fewn mynegiadau cymhleth. Gyda'r gweithredwr “:=” newydd, mae'n bosibl cyflawni gweithrediadau aseiniad gwerth y tu mewn i ymadroddion eraill, er enghraifft, er mwyn osgoi galwadau ffwythiant dwbl mewn datganiadau amodol ac wrth ddiffinio dolenni:

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

    tra (bloc := f.read(256)) != " :
    ...

  • Cymorth cystrawen newydd ar gyfer nodi dadleuon swyddogaeth. Wrth rifo dadleuon yn ystod diffiniad ffwythiant, gallwch nawr nodi "/" i wahanu dadleuon na ellir ond eu neilltuo gwerthoedd yn seiliedig ar y drefn y mae'r gwerthoedd yn cael eu rhifo yn ystod galwad ffwythiant, o ddadleuon y gellir eu neilltuo mewn unrhyw drefn (cystrawen amrywiol = gwerth) ). Ar yr ochr ymarferol, mae'r nodwedd newydd yn caniatáu i swyddogaethau Python efelychu ymddygiad swyddogaethau presennol C yn llwyr, a hefyd i osgoi rhwymo enwau penodol, er enghraifft, os bwriedir newid enw'r paramedr yn y dyfodol.

    Mae'r faner “/” yn ategu'r faner “*” a ychwanegwyd yn flaenorol, gan wahanu newidynnau y mae aseiniad yn y ffurf “variable=value” yn unig yn berthnasol iddynt. Er enghraifft, yn y swyddogaeth "def f(a, b, /, c, d, *, e, f):" dim ond yn y drefn y rhestrir y gwerthoedd y gellir neilltuo'r newidynnau "a" a "b". ,
    newidynnau “e” ac “f”, dim ond trwy’r aseiniad “variable=value”, a newidynnau “c” a “d” mewn unrhyw un o’r ffyrdd canlynol:

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

  • Wedi adio C API newydd
    i ffurfweddu paramedrau cychwyn Python, gan ganiatáu rheolaeth lwyr dros y cyfan cyfluniad a darparu cyfleusterau trin gwallau uwch. Mae'r API arfaethedig yn ei gwneud hi'n hawdd ymgorffori ymarferoldeb dehonglydd Python mewn cymwysiadau C eraill;

  • Gweithredwyd protocol Vectorcall newydd ar gyfer mynediad cyflymach i wrthrychau a ysgrifennwyd yn iaith C. Yn CPython 3.8, mae mynediad i Vectorcall yn dal i fod yn gyfyngedig i ddefnydd mewnol; mae trosglwyddo i'r categori o APIs sy'n hygyrch i'r cyhoedd wedi'i gynllunio yn CPython 3.9;
  • Wedi adio galwadau i Runtime Audit Hooks, sy'n darparu cymwysiadau a fframweithiau yn Python â mynediad at wybodaeth lefel isel am gynnydd y sgript i archwilio'r camau gweithredu a gyflawnwyd (er enghraifft, gallwch olrhain mewnforio modiwlau, agor ffeiliau, gan ddefnyddio olrhain, cyrchu socedi rhwydwaith, rhedeg cod trwy exec, eval a run_mod);
  • Yn y modiwl piclo sicrhawyd cefnogaeth i brotocol Pickle 5, a ddefnyddir ar gyfer cyfresoli a dad-gyfrifo gwrthrychau. Mae Pickle yn caniatáu ichi optimeiddio trosglwyddo symiau mawr o ddata rhwng prosesau Python mewn ffurfweddau aml-graidd ac aml-nodyn trwy leihau nifer y gweithrediadau copi cof a chymhwyso technegau optimeiddio ychwanegol megis defnyddio algorithmau cywasgu data-benodol. Mae pumed fersiwn y protocol yn nodedig am ychwanegu modd trosglwyddo y tu allan i'r band, lle gellir trosglwyddo data ar wahân i'r brif ffrwd picl.
  • Yn ddiofyn, mae pedwerydd fersiwn y protocol Pickle yn cael ei actifadu, sydd, o'i gymharu â'r trydydd fersiwn a gynigiwyd yn flaenorol yn ddiofyn, yn caniatáu perfformiad uwch a gostyngiad ym maint y data a drosglwyddir;
  • Yn y modiwl teipio Cyflwynir nifer o nodweddion newydd:
    • Dosbarth TypedDict ar gyfer araeau cysylltiadol lle mae gwybodaeth fath wedi'i nodi'n benodol ar gyfer y data sy'n gysylltiedig â'r allweddi (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • Math Llythrennol, sy'n eich galluogi i gyfyngu ar baramedr neu ddychwelyd gwerth i ychydig o werthoedd wedi'u diffinio ymlaen llaw ("Llythrennol ['cysylltiedig', 'datgysylltu']").
    • Dyluniad "Terfynol" , sy'n ei gwneud hi'n bosibl diffinio gwerthoedd newidynnau, swyddogaethau, dulliau a dosbarthiadau na ellir eu newid neu eu hailbennu ( " pi: Final[float] = 3.1415926536 ").
  • Ychwanegwyd y gallu i neilltuo storfa ar gyfer ffeiliau a luniwyd gyda chod byte, eu cadw mewn coeden FS ar wahân a'u gwahanu o'r cyfeiriaduron gyda'r cod. Mae'r llwybr ar gyfer arbed ffeiliau gyda chod beit wedi'i osod trwy newidyn PYTHONPYCACHEPREFIX neu'r opsiwn "-X pycache_prefix";
  • Gweithredwyd y gallu i greu adeiladau dadfygio o Python sy'n defnyddio ABI union yr un fath â'r datganiad, sy'n eich galluogi i lwytho estyniadau a ysgrifennwyd yn iaith SI, a luniwyd ar gyfer datganiadau sefydlog, mewn adeiladau dadfygio;
  • Mae f-strings (llythrennau wedi'u fformatio wedi'u rhagddodi â 'f') yn darparu cefnogaeth i'r gweithredwr = (er enghraifft, "f'{expr=}'"), sy'n eich galluogi i drosi mynegiad i destun er mwyn dadfygio'n haws. Er enghraifft:

    ››› defnyddiwr = ‘eric_idle’
    ››› member_since = dyddiad(1975, 7, 31)
    ››› f’{user=} {member_since=}’
    “user=’eric_idle’ member_since=datetime.date(1975, 7, 31)”

  • Mynegiant "parhau» caniateir ei ddefnyddio y tu mewn i floc yn olaf;
  • Ychwanegwyd modiwl newydd multiprocessing.shared_memory, gan ganiatáu defnyddio segmentau cof a rennir mewn ffurfweddau amlbroses;
  • Ar lwyfan Windows, mae'r gweithrediad asyncio wedi'i symud i ddefnyddio'r dosbarth ProactorEventLoop;
  • Mae perfformiad y cyfarwyddyd LOAD_GLOBAL wedi cynyddu tua 40% oherwydd y defnydd o fecanwaith caching cod gwrthrych newydd.

Ffynhonnell: opennet.ru

Ychwanegu sylw