Rilaxx tal-lingwa ta 'programmar Python 3.8

Wara sena u nofs ta 'żvilupp ippreżentata rilaxx maġġuri tal-lingwa ta 'programmar python 3.8. Aġġornamenti korrettivi għall-fergħa Python 3.8 ppjanat rilaxx fi żmien 18-il xahar. Vulnerabbiltajiet kritiċi se jiġu ffissati għal 5 snin sa Ottubru 2024. Aġġornamenti korrettivi għall-fergħa 3.8 se jiġu rilaxxati kull xahrejn, bl-ewwel rilaxx korrettiv ta 'Python 3.8.1 skedat għal Diċembru.

Fost iż-żieda innovazzjonijiet:

  • Appoġġ operazzjonijiet ta' assenjazzjoni fi ħdan espressjonijiet kumplessi. Bl-operatur il-ġdid “:=", huwa possibbli li jitwettqu operazzjonijiet ta’ assenjazzjoni ta’ valur ġewwa espressjonijiet oħra, pereżempju, biex jiġu evitati sejħiet ta’ funzjoni doppja f’dikjarazzjonijiet kundizzjonali u meta jiġu definiti loops:

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

    filwaqt li (blokk := f.read(256)) != ":
    ...

  • Appoġġ sintassi ġdida biex jiġu speċifikati l-argumenti tal-funzjoni. Meta jiġu enumerati argumenti waqt definizzjoni ta' funzjoni, issa tista' tispeċifika "/" biex tissepara argumenti li jistgħu jiġu assenjati valuri biss ibbażati fuq l-ordni li fiha l-valuri jiġu enumerati matul is-sejħa tal-funzjoni, minn argumenti li jistgħu jiġu assenjati fi kwalunkwe ordni (varjabbli=sintassi tal-valur) ). Fuq in-naħa prattika, il-karatteristika l-ġdida tippermetti li l-funzjonijiet f'Python jimitaw kompletament l-imġieba ta 'funzjonijiet eżistenti f'C, u wkoll biex jevitaw li jorbtu ma' ismijiet speċifiċi, pereżempju, jekk l-isem tal-parametru huwa ppjanat li jinbidel fil-futur.

    Il-bandiera “/” tikkumplimenta l-bandiera “*” miżjuda qabel, u tissepara varjabbli li għalihom hija applikabbli biss assenjazzjoni fil-forma “varjabbli=valur”. Pereżempju, fil-funzjoni "def f(a, b, /, c, d, *, e, f):" il-varjabbli "a" u "b" jistgħu jiġu assenjati biss fl-ordni fejn il-valuri huma elenkati ,
    varjabbli “e” u “f”, biss permezz tal-assenjazzjoni “varjabbli=valur”, u varjabbli “c” u “d” b’xi wieħed mill-modi li ġejjin:

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

  • Miżjud C API ġdid
    biex jiġi kkonfigurat il-parametri ta 'inizjalizzazzjoni ta' Python, li jippermetti kontroll sħiħ fuq kollox konfigurazzjoni u jipprovdu faċilitajiet avvanzati għall-immaniġġjar tal-iżbalji. L-API proposta tagħmilha faċli li titdaħħal il-funzjonalità tal-interpretu Python f'applikazzjonijiet C oħra;

  • Implimentati protokoll ġdid Vectorcall għal aċċess aktar mgħaġġel għal oġġetti miktuba bil-lingwa Ċ. F'CPython 3.8, l-aċċess għal Vectorcall għadu limitat għall-użu intern; it-trasferiment għall-kategorija ta 'APIs aċċessibbli għall-pubbliku huwa ppjanat f'CPython 3.9;
  • Miżjud isejjaħ lil Runtime Audit Hooks, li jipprovdu applikazzjonijiet u oqfsa f'Python b'aċċess għal informazzjoni ta' livell baxx dwar il-progress tal-iskript biex tivverifika l-azzjonijiet imwettqa (pereżempju, tista 'ssegwi l-importazzjoni ta' moduli, tiftaħ fajls, tuża traċċa, aċċess għal sockets tan-netwerk, running code permezz ta 'exec, eval u run_mod);
  • Fil-modulu Pickle ipprovdut appoġġ għall-protokoll Pickle 5, użat għas-serializing u deserializing oġġetti. Pickle jippermettilek li tottimizza t-trasferiment ta 'ammonti kbar ta' dejta bejn proċessi Python f'konfigurazzjonijiet multi-core u multi-node billi tnaqqas in-numru ta 'operazzjonijiet ta' kopja tal-memorja u tapplika tekniki addizzjonali ta 'ottimizzazzjoni bħall-użu ta' algoritmi ta 'kompressjoni speċifiċi għad-dejta. Il-ħames verżjoni tal-protokoll hija notevoli għaż-żieda ta 'mod ta' trasmissjoni barra mill-banda, li fiha d-dejta tista 'tiġi trażmessa separatament mill-fluss pickle prinċipali.
  • B'mod awtomatiku, ir-raba' verżjoni tal-protokoll Pickle hija attivata, li, meta mqabbla mat-tielet verżjoni offruta qabel b'mod awtomatiku, tippermetti prestazzjoni ogħla u tnaqqis fid-daqs tad-dejta trażmessa;
  • Fil-modulu ittajpjar Ġew introdotti diversi karatteristiċi ġodda:
    • Klassi TypedDict għal matriċi assoċjati li fihom informazzjoni tat-tip hija speċifikata b'mod espliċitu għad-dejta assoċjata maċ-ċwievet (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • Tip Litterali, li jippermettilek tillimita parametru jew valur lura għal ftit valuri predefiniti ("Litterali['konnessi', 'skonnettjati']").
    • Kostruzzjoni "Finali", li jagħmilha possibbli li jiġu definiti l-valuri ta 'varjabbli, funzjonijiet, metodi u klassijiet li ma jistgħux jinbidlu jew assenjati mill-ġdid ("pi: Final[float] = 3.1415926536").
  • Miżjud il-kapaċità li tassenja cache għal fajls ikkumpilati b'bytecode, salvati f'siġra FS separata u separati mid-direttorji bil-kodiċi. Il-mogħdija għall-iffrankar ta 'fajls b'bytecode hija stabbilita permezz ta' varjabbli PYTHONPYCACHEPREFIX jew l-għażla "-X pycache_prefix";
  • Implimentati l-abbiltà li toħloq bini ta 'debug ta' Python li juża ABI identiku għar-rilaxx, li jippermettilek tagħbija estensjonijiet miktuba fil-lingwa SI, ikkompilati għal rilaxxi stabbli, f'bini ta 'debug;
  • F-strings (litterali ifformattjati prefissati b''f') jipprovdu appoġġ għall-operatur = (per eżempju, "f'{expr=}'"), li jippermettilek tikkonverti espressjoni għal test għal debugging aktar faċli. Pereżempju:

    ››› utent = 'eric_idle'
    ››› member_since = data(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Espressjoni "tkompli» permess li jintuża ġewwa blokka finalment;
  • Modulu ġdid miżjud multiprocessing.shared_memory, li jippermetti l-użu ta 'segmenti tal-memorja kondiviża f'konfigurazzjonijiet b'ħafna proċessi;
  • Fuq il-pjattaforma tal-Windows, l-implimentazzjoni asyncio ġiet imċaqalqa biex tuża l-klassi ProactorEventLoop;
  • Il-prestazzjoni tal-istruzzjoni LOAD_GLOBAL żdiedet b'madwar 40% minħabba l-użu ta' mekkaniżmu ġdid ta' caching tal-kodiċi tal-oġġett.

Sors: opennet.ru

Żid kumment