มีการวางแผนการล้างข้อมูลไลบรารีมาตรฐาน Python ครั้งใหญ่

นักพัฒนาโครงการหลาม การตีพิมพ์ ข้อเสนอ (PEP 594) เพื่อทำการล้างข้อมูลครั้งใหญ่ของไลบรารีมาตรฐาน ทั้งความสามารถและส่วนประกอบที่ล้าสมัยและมีความเชี่ยวชาญสูงอย่างชัดเจน ซึ่งมีปัญหาทางสถาปัตยกรรมและไม่สามารถรวมเป็นหนึ่งเดียวสำหรับทุกแพลตฟอร์ม ได้ถูกเสนอให้ลบออกจากไลบรารีมาตรฐาน Python

ตัวอย่างเช่น มีการเสนอให้แยกออกจากโมดูลไลบรารีมาตรฐาน เช่น crypt (ไม่พร้อมใช้งานสำหรับ Windows และความพร้อมใช้งานของอัลกอริธึมการแฮชขึ้นอยู่กับไลบรารีระบบ), cgi (ไม่ใช่สถาปัตยกรรมที่เหมาะสมที่สุด ต้องมีการเปิดตัวกระบวนการใหม่สำหรับแต่ละคำขอ) อิมพีเรียล (แนะนำให้ใช้ importlib), ไปป์ ( ขอแนะนำให้ใช้โมดูลกระบวนการย่อย), nis (แนะนำให้ใช้ NSS, LDAP หรือ Kerberos/GSSAPI), spwd (ไม่แนะนำให้ใช้กับฐานข้อมูลบัญชีโดยตรง ). โมดูล binhex, uu, xdrlib ก็ถูกทำเครื่องหมายเพื่อลบเช่นกัน
เอไอเอฟซี,
เครื่องเสียง,
ก้อน
อิมเมจ,
ออสซาดิโอเดฟ,
sndhdr,
ซูนาว
อะซินแชท,
อะซินคอร์,
ซีจีทีบี,
smtpd
nntplib, แมคพาธ,
ฟอร์แมตเตอร์, MSIB และพาร์เซอร์

แผนที่นำเสนอคือการเลิกใช้โมดูลข้างต้นใน Python 3.8 ออกคำเตือนใน Python 3.8 และลบออกจากที่เก็บ CPython ใน Python 3.10
โมดูล parser ได้รับการวางแผนที่จะลบออกในเวอร์ชัน 3.9 เนื่องจากเลิกใช้แล้วในรุ่น Python 2.5 และโมดูล macpath ในสาขา 3.8 หลังจากถูกลบออกจากโค้ดหลักแล้ว โค้ดจะถูกย้ายไปยังที่เก็บ Legacylib ที่แยกต่างหาก และชะตากรรมของมันจะขึ้นอยู่กับความสนใจของสมาชิกชุมชน คาดว่าสาขา Python 3.9 จะได้รับการสนับสนุนจนถึงปี 2026 ซึ่งจะช่วยให้มีเวลาเหลือเฟือสำหรับโปรเจ็กต์ในการโยกย้ายไปยังทางเลือกภายนอก

เริ่มแรกมีการเสนอโมดูล ftplib, optparse, getopt, colorsys, fileinput, lib2to3 และ wave เพื่อการลบออก แต่ก็มีการตัดสินใจที่จะปล่อยให้โมดูลเหล่านี้เป็นส่วนหนึ่งของไลบรารีมาตรฐานในขณะนี้ เนื่องจากโมดูลเหล่านี้แพร่หลายและยังคงมีความเกี่ยวข้องแม้ว่าจะมีอยู่ก็ตาม ของทางเลือกขั้นสูงหรือการเชื่อมโยงกับความสามารถเฉพาะของระบบปฏิบัติการ

จำได้ว่าในตอนแรกโปรเจ็กต์ Python ใช้แนวทาง "รวมแบตเตอรี่" โดยนำเสนอชุดฟังก์ชันที่หลากหลายในไลบรารีมาตรฐานสำหรับแอปพลิเคชันที่หลากหลาย ข้อดีของแนวทางนี้คือการลดความซับซ้อนของการบำรุงรักษาโปรเจ็กต์ Python และการตรวจสอบความปลอดภัยของโมดูลที่ใช้ในโปรเจ็กต์ ช่องโหว่ในโมดูลมักจะกลายเป็นแหล่งที่มาของช่องโหว่ในแอปพลิเคชันที่ใช้โมดูลเหล่านั้น หากฟังก์ชันต่างๆ รวมอยู่ในไลบรารีมาตรฐาน การควบคุมสถานะของโปรเจ็กต์หลักก็เพียงพอแล้ว เมื่อแยกไลบรารีมาตรฐาน นักพัฒนาจำเป็นต้องใช้โมดูลของบุคคลที่สาม ซึ่งช่องโหว่ในแต่ละช่องโหว่จะต้องได้รับการตรวจสอบแยกกัน ด้วยการกระจายตัวในระดับสูงและการพึ่งพาจำนวนมาก จึงมีภัยคุกคามจากการโจมตีผ่านการประนีประนอมโครงสร้างพื้นฐานของผู้พัฒนาโมดูล

ในทางกลับกัน แต่ละโมดูลเพิ่มเติมในไลบรารีมาตรฐานต้องใช้ทรัพยากรจากทีมพัฒนา Python เพื่อบำรุงรักษา ห้องสมุดได้สะสมฟังก์ชันที่ซ้ำซ้อนและซ้ำซ้อนไว้จำนวนมาก ซึ่งช่วยลดต้นทุนการบำรุงรักษาได้ เมื่อแคตตาล็อกพัฒนาขึ้น PyPI และลดความซับซ้อนของกระบวนการติดตั้งและดาวน์โหลดแพ็คเกจเพิ่มเติม การใช้โมดูลภายนอกกลายเป็นเรื่องธรรมดาเหมือนกับฟังก์ชันในตัว

นักพัฒนาจำนวนมากขึ้นเรื่อยๆ กำลังใช้การแทนที่ภายนอกที่ใช้งานได้มากขึ้นสำหรับโมดูลมาตรฐาน เช่น การใช้โมดูล lxml แทน xml การลบโมดูลที่ละทิ้งออกจากไลบรารีมาตรฐานจะช่วยเพิ่มความนิยมให้กับทางเลือกอื่นที่ชุมชนพัฒนาขึ้นอย่างต่อเนื่อง นอกจากนี้ การลดไลบรารีมาตรฐานจะนำไปสู่การลดขนาดของการกระจายฐาน ซึ่งเป็นสิ่งสำคัญเมื่อใช้ Python บนแพลตฟอร์มแบบฝังที่มีขนาดพื้นที่เก็บข้อมูลที่จำกัด

ที่มา: opennet.ru

เพิ่มความคิดเห็น