تم التخطيط لعملية تنظيف رئيسية لمكتبة بايثون القياسية

مطورو مشروع بايثون نشرت اقتراح (PEP 594) لإجراء عملية تنظيف رئيسية للمكتبة القياسية. يتم عرض كل من القدرات والمكونات القديمة والمتخصصة للغاية والتي بها مشاكل معمارية ولا يمكن توحيدها لجميع الأنظمة الأساسية للإزالة من مكتبة Python القياسية.

على سبيل المثال، يُقترح استبعاد وحدات مثل crypt من المكتبة القياسية (عدم توفر نظام التشغيل Windows واعتماد توفر خوارزميات التجزئة على مكتبات النظام)، وcgi (ليست البنية المثالية، وتتطلب إطلاق عملية جديدة لكل طلب)، وimp (يوصى باستخدام importlib)، الأنابيب (يوصى باستخدام وحدة العمليات الفرعية)، nis (يوصى باستخدام NSS، LDAP أو Kerberos/GSSAPI)، spwd (لا ينصح بالعمل مباشرة مع قاعدة بيانات الحساب). تم أيضًا وضع علامة على الوحدات binhex، وuu، وxdrlib، للإزالة.
أيفك,
صوت,
قطعة
إيمغدر,
أوساوديوديف,
,
sunau
غير متزامن,
غير متزامن,
سيجيتب,
com.smtpd
ماكباث,
المنسق، msilib والمحلل.

تتمثل الخطة المقترحة في إيقاف الوحدات المذكورة أعلاه في Python 3.8، وإصدار تحذير في Python 3.8، وإزالتها من مستودعات CPython في Python 3.10.
تم التخطيط لإزالة وحدة المحلل اللغوي في الإصدار 3.9، حيث تم إهمالها في إصدار Python 2.5، ووحدة macpath في الفرع 3.8. بعد إزالته من الكود الرئيسي، سيتم نقل الكود إلى مستودع Legacylib منفصل وسيعتمد مصيره على مصلحة أعضاء المجتمع. ومن المتوقع أن يتم دعم فرع Python 3.9 حتى عام 2026، مما سيوفر وقتًا كافيًا للمشاريع للانتقال إلى البدائل الخارجية.

في البداية، تم أيضًا اقتراح إزالة وحدات ftplib وoptparse وgetopt وcolorsys وfileinput وlib2to3 وwave، ولكن تقرر تركها كجزء من المكتبة القياسية في الوقت الحالي، نظرًا لأنها منتشرة على نطاق واسع وتظل ذات صلة، على الرغم من وجودها البدائل أو الارتباطات الأكثر تقدمًا لقدرات محددة لأنظمة التشغيل.

تذكر أن مشروع بايثون اتبع في البداية نهج "البطاريات المضمنة"، حيث قدم مجموعة غنية من الوظائف في المكتبة القياسية لمجموعة متنوعة من التطبيقات. ومن مزايا هذا النهج تبسيط صيانة مشاريع بايثون ومراقبة أمان الوحدات المستخدمة في المشاريع. غالبًا ما تصبح الثغرات الأمنية الموجودة في الوحدات النمطية مصدرًا للثغرات الأمنية في التطبيقات التي تستخدمها. إذا تم تضمين الوظائف في المكتبة القياسية، فهذا يكفي لمراقبة حالة المشروع الرئيسي. عند تقسيم المكتبة القياسية، يُطلب من المطورين استخدام وحدات الطرف الثالث، ويجب مراقبة نقاط الضعف في كل منها بشكل منفصل. مع وجود درجة عالية من التجزئة وعدد كبير من التبعيات، هناك تهديد بالهجمات من خلال تعريض البنية التحتية لمطوري الوحدات للخطر.

من ناحية أخرى، كل وحدة إضافية في المكتبة القياسية تتطلب موارد من فريق تطوير بايثون للمحافظة عليها. لقد تراكمت في المكتبة عدد كبير من الوظائف المكررة والمتكررة، والتي يمكن أن يؤدي التخلص منها إلى تقليل تكاليف الصيانة. مع تطور الكتالوج PyPI ولتبسيط عملية تثبيت وتنزيل الحزم الإضافية، أصبح استخدام الوحدات الخارجية الآن شائعًا مثل الوظائف المضمنة.

يستخدم المزيد والمزيد من المطورين بدائل خارجية أكثر وظيفية للوحدات القياسية، على سبيل المثال، استخدام وحدة lxml بدلاً من xml. ستؤدي إزالة الوحدات المهجورة من المكتبة القياسية إلى زيادة شعبية البدائل التي يطورها المجتمع بنشاط. بالإضافة إلى ذلك، فإن تقليل المكتبة القياسية سيؤدي إلى تقليل حجم التوزيع الأساسي، وهو أمر مهم عند استخدام بايثون على منصات مدمجة ذات حجم تخزين محدود.

المصدر: opennet.ru

إضافة تعليق