پاکسازی بزرگ کتابخانه استاندارد پایتون برنامه ریزی شده است

توسعه دهندگان پروژه پایتون منتشر شده است پیشنهاد (PEP 594) برای پاکسازی عمده کتابخانه استاندارد. هم قابلیت‌ها و اجزای کاملاً قدیمی و کاملاً تخصصی که مشکلات معماری دارند و نمی‌توانند برای همه پلتفرم‌ها یکپارچه شوند، برای حذف از کتابخانه استاندارد پایتون ارائه شده‌اند.

به عنوان مثال، پیشنهاد شده است که ماژول هایی مانند crypt (در دسترس نبودن برای ویندوز و وابستگی به در دسترس بودن الگوریتم های هش به کتابخانه های سیستم)، cgi (معماری بهینه نیست، نیاز به راه اندازی یک فرآیند جدید برای هر درخواست) از کتابخانه استاندارد حذف شود. (توصیه می شود از importlib استفاده کنید)، pipes (توصیه می شود از ماژول زیر فرآیند استفاده کنید)، nis (توصیه می شود از NSS، LDAP یا Kerberos/GSSAPI استفاده کنید)، spwd (کار کردن مستقیم با پایگاه داده حساب توصیه نمی شود). ماژول های binhex، uu، xdrlib نیز برای حذف علامت گذاری شده اند.
aifc،
صوتی،
تکه
imghdr،
اوسودیودف،
sndhdr،
سوناو
asynchat
غیر همزمان،
cgitb،
smtpd
nntplib، macpath،
فرمت کننده، msilib و تجزیه کننده.

طرح پیشنهادی این است که ماژول های فوق را در پایتون 3.8 منسوخ کند، در پایتون 3.8 اخطار صادر کند و آنها را از مخازن CPython در پایتون 3.10 حذف کند.
ماژول تجزیه کننده برنامه ریزی شده است که در نسخه 3.9 حذف شود، زیرا در نسخه Python 2.5 منسوخ شده بود، و ماژول macpath در شاخه 3.8. پس از حذف از کد اصلی، کد به یک مخزن جداگانه legacylib منتقل می شود و سرنوشت آن به علاقه اعضای جامعه بستگی دارد. انتظار می‌رود شعبه Python 3.9 تا سال 2026 پشتیبانی شود، که زمان کافی را برای مهاجرت پروژه‌ها به جایگزین‌های خارجی فراهم می‌کند.

در ابتدا، ماژول‌های ftplib، optparse، getopt، colorys، fileinput، lib2to3 و wave نیز برای حذف پیشنهاد شده بودند، اما تصمیم گرفته شد که فعلاً آنها را به عنوان بخشی از کتابخانه استاندارد باقی بگذاریم، زیرا آنها گسترده هستند و علی‌رغم وجود، مرتبط باقی می‌مانند. جایگزین های پیشرفته تر یا اتصال به قابلیت های خاص سیستم عامل ها.

به یاد بیاورید که پروژه پایتون در ابتدا رویکرد "باتری شامل" را در پیش گرفت و مجموعه ای غنی از توابع را در کتابخانه استاندارد برای برنامه های مختلف ارائه کرد. از جمله مزایای این رویکرد، ساده سازی نگهداری پروژه های پایتون و نظارت بر امنیت ماژول های مورد استفاده در پروژه ها است. آسیب‌پذیری‌ها در ماژول‌ها اغلب به منبع آسیب‌پذیری در برنامه‌هایی تبدیل می‌شوند که از آنها استفاده می‌کنند. اگر توابع در کتابخانه استاندارد گنجانده شوند، کنترل وضعیت پروژه اصلی کافی است. هنگام تقسیم کتابخانه استاندارد، توسعه‌دهندگان ملزم به استفاده از ماژول‌های شخص ثالث هستند که آسیب‌پذیری‌های هر کدام باید به طور جداگانه بررسی شوند. با درجه بالایی از تکه تکه شدن و تعداد زیادی وابستگی، خطر حملات از طریق به خطر انداختن زیرساخت توسعه دهندگان ماژول وجود دارد.

از سوی دیگر، هر ماژول اضافی در کتابخانه استاندارد به منابعی از تیم توسعه پایتون برای نگهداری نیاز دارد. کتابخانه تعداد زیادی توابع تکراری و اضافی را جمع آوری کرده است که حذف آنها می تواند هزینه های نگهداری را کاهش دهد. همانطور که کاتالوگ توسعه می یابد PyPI و با ساده سازی فرآیند نصب و دانلود بسته های اضافی، استفاده از ماژول های خارجی در حال حاضر به اندازه توابع داخلی رایج شده است.

بیشتر و بیشتر توسعه دهندگان از جایگزین های خارجی کاربردی تری برای ماژول های استاندارد استفاده می کنند، به عنوان مثال، از ماژول lxml به جای xml استفاده می کنند. حذف ماژول های رها شده از کتابخانه استاندارد، محبوبیت جایگزین هایی را که به طور فعال توسط جامعه توسعه یافته اند افزایش می دهد. علاوه بر این، کاهش کتابخانه استاندارد منجر به کاهش اندازه توزیع پایه می شود که در هنگام استفاده از پایتون در پلتفرم های تعبیه شده با حجم ذخیره سازی محدود مهم است.

منبع: opennet.ru

اضافه کردن نظر