Նախատեսվում է Python ստանդարտ գրադարանի խոշոր մաքրում

Python Project Developers հրատարակված առաջարկ (PEP 594) ստանդարտ գրադարանի խոշոր մաքրում կատարելու վերաբերյալ: Ինչպես հստակ հնացած, այնպես էլ բարձր մասնագիտացված հնարավորությունները և բաղադրիչները, որոնք ունեն ճարտարապետական ​​խնդիրներ և չեն կարող միավորվել բոլոր հարթակների համար, առաջարկվում են հեռացնել Python ստանդարտ գրադարանից:

Օրինակ՝ առաջարկվում է ստանդարտ գրադարանից բացառել այնպիսի մոդուլներ, ինչպիսիք են crypt (Windows-ի համար անհասանելիություն և համակարգային գրադարաններից հեշավորման ալգորիթմների առկայությունից կախվածություն), cgi (ոչ օպտիմալ ճարտարապետություն, պահանջում է նոր գործընթաց սկսել յուրաքանչյուր հարցման համար), imp (խորհուրդ է տրվում օգտագործել importlib), խողովակներ (խորհուրդ է տրվում օգտագործել subprocess մոդուլը), nis (խորհուրդ է տրվում օգտագործել NSS, LDAP կամ Kerberos/GSSAPI), spwd (խորհուրդ չի տրվում ուղղակիորեն աշխատել հաշվի տվյալների բազայի հետ): Հեռացման համար նշված են նաև binhex, uu, xdrlib մոդուլները:
aifc,
աուդիոոպ,
կտոր
իմղդր,
Օսաուդիոդև,
սնդհդր,
սունաու
asynchat,
ասինկոր,
cgitb,
smtpd
nntplib, macpath,
ձևաչափիչ, msilib և վերլուծիչ:

Առաջարկվող պլանն այն է, որ վերը նշված մոդուլները չեղարկվեն Python 3.8-ում, նախազգուշացում թողարկվի Python 3.8-ում և հեռացնել դրանք Python 3.10-ի CPython պահեստներից:
Վերլուծող մոդուլը նախատեսվում է հեռացնել 3.9 տարբերակում, քանի որ այն հնացել էր Python 2.5 թողարկումում, իսկ macpath մոդուլը 3.8 ճյուղում։ Հիմնական ծածկագրից հեռացնելուց հետո կոդը կտեղափոխվի առանձին legacylib պահոց, և դրա ճակատագիրը կախված կլինի համայնքի անդամների շահերից: Ակնկալվում է, որ Python 3.9 մասնաճյուղը կաջակցվի մինչև 2026 թվականը, ինչը բավական ժամանակ կտա նախագծերին արտաքին այլընտրանքներ տեղափոխելու համար:

Սկզբում ftplib, optparse, getopt, colorys, fileinput, lib2to3 և wave մոդուլները նույնպես առաջարկվել են հեռացնելու համար, սակայն որոշվել է դրանք առայժմ թողնել որպես ստանդարտ գրադարանի մաս, քանի որ դրանք տարածված են և մնում են համապատասխան՝ չնայած առկայությանը։ ավելի առաջադեմ այլընտրանքների կամ օպերացիոն համակարգերի հատուկ հնարավորությունների հետ կապված կապեր:

Հիշեցնենք, որ Python նախագիծն ի սկզբանե կիրառեց «մարտկոցները ներառված» մոտեցումը, որն առաջարկում էր գործառույթների հարուստ շարք ստանդարտ գրադարանում տարբեր ծրագրերի համար: Այս մոտեցման առավելությունների թվում է Python նախագծերի պահպանման պարզեցումը և նախագծերում օգտագործվող մոդուլների անվտանգության մոնիտորինգը։ Մոդուլների խոցելիությունը հաճախ դառնում է խոցելիության աղբյուր այն հավելվածներում, որոնք օգտագործում են դրանք: Եթե ​​գործառույթները ներառված են ստանդարտ գրադարանում, բավական է վերահսկել հիմնական նախագծի վիճակը: Ստանդարտ գրադարանը բաժանելիս մշակողները պարտավոր են օգտագործել երրորդ կողմի մոդուլներ, որոնցից յուրաքանչյուրի խոցելիությունը պետք է առանձին վերահսկվի: Բարձր աստիճանի մասնատվածությամբ և մեծ թվով կախվածություններով, կա հարձակումների վտանգ մոդուլի մշակողների ենթակառուցվածքը վտանգելու միջոցով:

Մյուս կողմից, ստանդարտ գրադարանի յուրաքանչյուր լրացուցիչ մոդուլ պահանջում է ռեսուրսներ Python-ի մշակման թիմից՝ պահպանման համար: Գրադարանը կուտակել է մեծ թվով կրկնօրինակող և ավելորդ գործառույթներ, որոնց վերացումը կարող է նվազեցնել պահպանման ծախսերը: Քանի որ կատալոգը զարգանում է ՊԻՊԻ և պարզեցնելով լրացուցիչ փաթեթների տեղադրման և ներբեռնման գործընթացը՝ արտաքին մոդուլների օգտագործումն այժմ դարձել է նույնքան սովորական, որքան ներկառուցված գործառույթները:

Ավելի ու ավելի շատ մշակողներ օգտագործում են ավելի ֆունկցիոնալ արտաքին փոխարինումներ ստանդարտ մոդուլների համար, օրինակ՝ xml-ի փոխարեն օգտագործելով lxml մոդուլը: Ստանդարտ գրադարանից լքված մոդուլների հեռացումը կբարձրացնի համայնքի կողմից ակտիվորեն մշակված այլընտրանքների ժողովրդականությունը: Բացի այդ, ստանդարտ գրադարանի կրճատումը կհանգեցնի բազային բաշխման չափի նվազմանը, ինչը կարևոր է Python-ն օգտագործելիս սահմանափակ պահեստային չափսերով ներկառուցված հարթակներում:

Source: opennet.ru

Добавить комментарий