Weşandina zimanê bernamekirinê Python 3.8

Piştî salek û nîvê pêşveçûnê pêşkêş kirin serbestberdana zimanê bernamesaziyê ya sereke python 3.8. Nûvekirinên rastkirî yên ji bo şaxê Python 3.8 plankirin di nav 18 mehan de serbest berdan. Qelsiyên krîtîk dê 5 salan heta Cotmeha 2024-an werin sererast kirin. Nûvekirinên rastkirî yên ji bo şaxê 3.8 dê her du mehan carekê werin berdan, digel ku yekem berdana rastkirî ya Python 3.8.1 di Kanûnê de hatî plansaz kirin.

Di nav yên zêdekirî de nûbûnên:

  • alîkarî operasyonên peywirdarkirinê di nav bêjeyên tevlihev de. Bi operatora nû ":=" re, mimkun e ku meriv di hundurê biwêjên din de operasyonên tayînkirina nirxê pêk bîne, mînakî, ji bangên fonksiyonê yên dualî di daxuyaniyên şert û mercî de û dema danasîna lûleyan:

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

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

  • alîkarî hevoksaziya nû ji bo diyarkirina argumanên fonksiyonê. Dema ku di dema pênasekirina fonksiyonê de argumanan dijimartin, hûn naha dikarin "/" destnîşan bikin da ku argumanên ku tenê dikarin li gorî rêza ku nirx di dema bangewaziya fonksiyonê de têne hejmartin, ji argumanên ku dikarin werin veqetandin veqetînin. bi her rêzê (guherbar=hevoksaziya nirxê) ). Ji aliyê pratîkî ve, taybetmendiya nû dihêle fonksiyonên li Python-ê bi tevahî tevgerên fonksiyonên heyî yên di C-yê de bişopînin, û di heman demê de ji girêdana navên taybetî dûr bixin, mînakî, heke tê plansaz kirin ku navê parametreyê di pêşerojê de were guheztin.

    Ala "/" ala "*" ya ku berê lê hatiye lêkirin temam dike, guhêrbaran ji hev vediqetîne ku tenê peywirek bi forma "guherbar=nirx" ji bo wan tê sepandin. Mînakî, di fonksiyona "def f(a, b, /, c, d, *, e, f):" de guhêrbarên "a" û "b" tenê bi rêza ku nirx têne navnîş kirin dikarin bêne destnîşan kirin. ,
    guherbarên "e" û "f", tenê bi peywira "guherbar=nirx", û guhêrbarên "c" û "d" bi yek ji awayên jêrîn:

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

  • Zêde kirin nû C API
    ji bo mîhengkirina parametreyên destpêkirina Python-ê, ku destûrê dide kontrolkirina tevahî li ser hemîyan veavakirina û peydakirina tesîsên pêşkeftî yên hilgirtina xeletiyan. API-ya pêşniyarkirî hêsan dike ku fonksiyona wergêra Python di nav sepanên C yên din de bihewîne;

  • Pêk anîn protokola nû ya Vectorcall ji bo gihîştina bilez a tiştên ku bi zimanê C-yê hatine nivîsandin. Di CPython 3.8 de, gihîştina Vectorcall hîn jî bi karanîna hundurîn ve sînorkirî ye; veguheztina kategoriya API-yên gihîştî yên gelemperî di CPython 3.9 de tê plansaz kirin;
  • Zêde kirin bang li Runtime Audit Hooks dike, ku serîlêdan û çarçoveyên di Python de bi gihîştina agahdariya nizm a di derbarê pêşkeftina skrîptê de peyda dike da ku kiryarên ku hatine kirin kontrol bikin (mînak, hûn dikarin îtxalkirina modulan, vekirina pelan, bi karanîna şopek bişopînin, gihîştina soketên torê, koda xebitandinê bi exec, eval û run_mod);
  • Di modulê de xiyar pêşkêş kirin piştgirî ji bo protokola Pickle 5, ku ji bo serialîzekirin û deserialîzekirina tiştan tê bikar anîn. Pickle dihêle hûn veguheztina mîqdarên mezin ên daneyê di navbera pêvajoyên Python-ê de di mîhengên pir-core û pir-node de bi kêmkirina hejmara operasyonên kopîkirina bîranînê û sepandina teknîkên xweşbîniyê yên din ên wekî karanîna algorîtmayên berhevkirina daneya-taybet xweştir bikin. Guhertoya pêncemîn a protokolê ji bo lêzêdekirina moda veguheztina derveyî-bandê girîng e, ku tê de dane dikarin ji hevûduya sereke ya pickle veqetandî werin veguheztin.
  • Bi xwerû, guhertoya çaremîn a protokola Pickle tê aktîfkirin, ku, li gorî guhertoya sêyemîn a ku berê ji hêla xwerû ve hatî pêşkêş kirin, rê dide performansa bilindtir û kêmkirina mezinahiya daneya hatî şandin;
  • Di modulê de typing Gelek taybetmendiyên nû têne destnîşan kirin:
    • Çar TypedDict ji bo rêzikên hevedudanî yên ku tê de agahdariya cureyê bi eşkereyî ji bo daneyên ku bi kilîtan re têkildar têne destnîşan kirin ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tîpa Asas, ku destûrê dide te ku hûn pîvanek sînordar bikin an nirxek vegerînin çend nirxên pêşwext ("Bi rastî['girêdayî', 'veqetandî']").
    • Avakirin"dawî", ku îmkana danasîna nirxên guhêrbar, fonksiyon, rêbaz û çînên ku nekarin werin guheztin an ji nû ve werin veqetandin ("pi: Final[float] = 3.1415926536").
  • Kapasîteya danasîna cache ji bo pelên berhevkirî bi bytecode, ku di dara FS-ê ya cihêreng de hatî hilanîn û ji pelrêçikên bi kodê veqetandî, zêde kir. Rêya hilanîna pelên bi bytecode bi guhêrbarek tê danîn PYTHONPYCACHEPREFIX an vebijarka "-X pycache_prefix";
  • Pêk anîn şiyana afirandina avahîyên debugkirinê yên Python-ê ku ABI-yek wekî berdanê bikar tînin, ku dihêle hûn pêvekên ku bi zimanê SI-yê hatine nivîsandin, ku ji bo serbestberdanên domdar hatine berhev kirin, di avahîyên debugê de bar bikin;
  • f-strings (biwêjên formatkirî bi pêşgira 'f') piştgirî dide operatorê = (mînak, "f'{expr=}'"), ku destûrê dide te ku ji bo verastkirina hêsan îfadeyekê veguherîne nivîsê. Bo nimûne:

    ››› bikarhêner = 'eric_idle'
    ››› Member_since = date(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' Member_since=datetime.date(1975, 7, 31)"

  • Gotin "berdewamkirin» destûr tê dayîn ku di hundurê blokê de were bikar anîn paşan;
  • Modula nû lê zêde kirin multiprocessing.shared_memory, di veavakirinên pirpêvajoyê de destûrê dide karanîna beşên bîranîna hevpar;
  • Li ser platforma Windows-ê, pêkanîna asyncio ji bo karanîna polê hate veguheztin ProactorEventLoop;
  • Performansa rêwerza LOAD_GLOBAL ji ber karanîna mekanîzmayek nû ya vekêşana koda nesneyê bi qasî% 40 zêde bûye.

Source: opennet.ru

Add a comment