Python ծրագրավորման լեզվի 3.8 թողարկումը

Տեղի է ունեցել 1.5 տարվա մշակման աշխատանքներից հետո ներդրված նշալի թողարկում ծրագրավորման լեզվի Python 3.8. Python 3.8 ճյուղի ուղղումային թարմացումները պլանավորվում է թողարկել 18 ամսվա ընթացքում: Critical vulnerabilities will be fixed until October 2024 for 5 years. The correction updates for version 3.8 will be released every two months, with the first correction release of Python 3.8.1 scheduled for December.

Ավելացված նորություններ:

  • Հետևում բարդ արտահայտությունների ներսում փոխադրումների գործողություններ: Նոր «:=» օպերատորի շնորհիվ հնարավոր է իրականացնել արժեքների փոխադրումներն այլ արտահայտություններում, օրինակ՝ կրկնակի գործողությունից խուսափելու համար պայմանական արտահայտություններում և ցիկլերի սահմանման ժամանակ:

    if (n := len(a)) > 10:

    while (block := f.read(256)) != '' :

  • Հետևում ընթացակարգի նոր սինտաքսը: ֆունկցիայի սահմանման ժամանակ արգումենտները ցուցակելու ժամանակ այժմ կարելի է նշել «/» հաշիվը, որը թույլ է տալիս բաժանել այն արգումենտները, որոնց արժեքները կարելի է վերագրել միայն ըստ նշված կարգի, և այն արգումենտները, որոնք թույլատրվում են ցանկացած կարգով (սինտաքս «փոխադրող=արժեք»): Բարձրակարգում այս նոր հնարավորությունը Python լեզվով ֆունկցիաներում թույլ է տալիս ամբողջովին արհեստականորեն էմուլյացնել C լեզվով գոյություն ունեցող ֆունկցիաների վարքագիծը, ինչպես նաև խուսափել կոնկրետ անունների կապերից, օրինակ, եթե параметրի անունը նախատեսվում է փոխել ապագայում:

    «/» դրոշը լրացնում է նախորդում ավելացված «*» հաշիվը, որը բաժանում է փոփոխականները, որոնց համար կիրառելի է միայն «փոխադրող=արժեք» ձևը: Օրինակ, «def f(a, b, /, c, d, *, e, f):» ֆունկցիայում «a» և «b» փոփոխականները կարող են վերագրվել միայն ըստ նշված արժեքների
    «e» և «f» փոփոխականները միայն «փոխադրող=արժեք» միջոցով, իսկ «c» և «d» փոփոխականները կարող են վերագրավել նշված որևէ ձևով:

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

  • Ավելացվել է նոր C API
    Python-ի ղեկավարման պարամետրերի կարգավորելու համար, որն ամբողջովին վերահսկում է ողջ կոնֆիգուրացիան և տրամադրում է ընդլայնված սխալների մշակման մեթոդներ: Բերված API-ն հեշտացնում է Python-ի մեկնարկման ֆունկցիայի ներդրումը այլ C լեզվով ծրագրերում;
  • օպերատոր «^» այն ծրագրավորումների համար՝ նշված ամսաթվից ավելի հին, կատարում է գործողություն, որը հակառակ է «~» օպերատորին։ Օրինակ, նոր Vectorcall արձանագրություն՝ ավելի արագ հասանելիություն C լեզվով գրած օբյեկտներին: CPython 3.8-ում Vectorcall-ի հասանելիությունը սահմանափակ է մինչ այժմ՝ ներքին օգտագործման համար, հանրային հասանելի API-ի անցման ծրագիրը նախատեսված է CPython 3.9-ում;
  • Ավելացել են Runtime Audit Hooks-ի կանչեր, որոնք տրամադրում են Python լեզվով ծրագրերին և շրջանակներին ցածր մակարդակի տեղեկություններ սցենարի կատարումը տեսնելու համար, որպեսզի հնարավոր լինի Audit որակական միջոցառումները (օրինակ՝ կարելի է հետևել մոդուլների ներմուծմանը, ֆայլերի բացմանը, տարանցման օգտագործմանը, ցանցային ազդակների կանչերին, exec, eval և run_mod-ից կոդիածի մշակման ժամանակ);
  • ngx_stream_ssl_preread մոդուլում ներդրվել է ‘ pickle ապահովված է Պիկլի 5 պրոտոկոլի աջակցություն, որը օգտագործվում է օբյեկտների սերիալացման և սերիալիզացման համար։ Պիկլը հնարավորություն է տալիս օպտիմալացնել մեծ ծավալների տվյալների փոխանցումը Python գործընթացների միջև մուլտյակարգային և բազմահատված շարվածքների կոնֆիգուրացիաներում՝ նվազեցնելով հիշողության պատճենավորման գործողությունների թիվը և կիրառելով լրացուցիչ օպտիմիզացման տեխնիկաներ, ինչպիսիք են տվյալների համար հատուկ տարբերալման ալգորիթմների կիրառումը։ Պրոտոկոլի հինգերորդ տարբերակը առանձնանում է բաժանված փոխանցման (out-of-band) ռեժիմի ավելացմամբ, երբ տվյալները կարող են փոխանցվել առանձին հիմնական pickle ռազմավարությունից։
  • Միացրած է չորրորդ Պիկլի պրոտոկոլը, որը համեմատաբար նախորդ՝ երրորդ տարբերակի հետ, թույլ է տալիս ստանալ ավելի բարձր կատարողականություն և նվազեցնել փոխանցվող տվյալների չափը։
  • ngx_stream_ssl_preread մոդուլում ներդրվել է ‘ typing ներկայացվել են մի շարք նոր հնարավորություններ՝
    • Կլաս TypedDict կապակցված ցանկերի համար, որոնց ստացման տվյալների ընթացքում հստակ նշվում է դասի մասին տեղեկատվություն («TypedDict(‘Point2D’, x=int, y=int, label=str)»):
    • Տեսակ Literal, որը թույլ է տալիս սահմանափակել պարամետրը կամ վերադարձվող արժեքը մի քանի նախընտրած արժեքներով («Literal[‘connected’, ‘disconnected’]»):
    • Կառուցվածք «Final«, որը հնարավորություն է տալիս սահմանել փոփոխականների, ֆունկցիաների, մեթոդների և դասերի արժեքները, որոնք չեն կարող փոխվել կամ վերաքաղվել («pi: Final[float] = 3.1415926536»):
  • Ավելացել է հնարավորությունը փոխcacheի ից կոմպիլյացված հաստատուն ֆայլերը, որոնք պահվում են առանձին ֆայլային համակարգերում և առանձին կոդային կատեգորիաներից։ Հաստատուն ֆայլերի պահպանման ճանապարհը սահմանվում է միջոցով փոփոխականի PYTHONPYCACHEPREFIX կամ «-X pycache_prefix» տարբերակով։
  • Նկատի առնվել է հնարավորություն ստեղծելու Python-ի դեբագի կառուցվածքները, որոնք օգտագործում են նույն ABI-ն որպես թողարկումը, ինչը հնարավորություն է տալիս դեբագ նիշերի մեջ ներբեռնել C լեզվով գրված ընդլայնումներ, ովքեր հավաքվել են կայուն թողարկումների համար։
  • f-ստորակներում (ֆորմատավորված լիտերալները ‘f’ նախապաշարումով) ապահովվել է «=» օպերատորի աջակցություն (օրինակ՝ «f'{expr=}'»), որը թույլ է տալիս արտահայտությունը փոփոխել տեքստում՝ դեբագում շահավետության համար։ Օրինակ՝

    ››› user = ‘eric_idle’
    ››› member_since = date(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    «user=’eric_idle’ member_since=datetime.date(1975, 7, 31)»

  • Արտահայտությունը «continue» թույլատրվում է օգտագործել « finally;
  • Ավելացած նոր մոդուլը multiprocessing.shared_memory, որը հնարավորություն է տալիս օգտագործել ընդհանուր հիշողության սեգմենտները բազմագործառո խմբերի կոնֆիգուրացիաներում։
  • Windows հարթակում asyncio-ի իրականացումը տեղափոխվել է ProactorEventLoop դասի օգտագործման։ LOAD_GLOBAL հրահանգի կատարողականությունն աճել է մոտ 40% նոր օբյեկտային կոդի cach механիզմի օգտագործման շնորհիվ։;
  • qimgv 0.8.6 պատկերների դիտման թողարկում

Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster