Một cuộc dọn dẹp lớn của thư viện chuẩn Python đã được lên kế hoạch

Nhà phát triển dự án Python xuất bản đề xuất (PEP 594) thực hiện việc dọn dẹp lớn thư viện tiêu chuẩn. Cả các tính năng và thành phần rõ ràng đã lỗi thời và có tính chuyên môn cao, có vấn đề về kiến ​​trúc và không thể thống nhất cho tất cả các nền tảng đều được đưa ra để xóa khỏi thư viện chuẩn Python.

Ví dụ: đề xuất loại trừ khỏi thư viện tiêu chuẩn các mô-đun như mật mã (không có sẵn cho Windows và sự phụ thuộc vào tính khả dụng của thuật toán băm trên thư viện hệ thống), cgi (kiến trúc không tối ưu, yêu cầu khởi chạy quy trình mới cho mỗi yêu cầu), imp (nên sử dụng importlib), pipe (nên sử dụng mô-đun quy trình con), nis (nên sử dụng NSS, LDAP hoặc Kerberos/GSSAPI), spwd (không nên làm việc trực tiếp với cơ sở dữ liệu tài khoản). Các module binhex, uu, xdrlib cũng được đánh dấu để loại bỏ.
aifc,
âm thanh,
đoạn
hình ảnh,
ossaudiodev,
sdhdr,
tắm nắng
trò chuyện,
không đồng bộ,
cgitb,
smtpd
nntplib, macpath,
trình định dạng, msilib và trình phân tích cú pháp.

Kế hoạch đề xuất là ngừng sử dụng các mô-đun trên trong Python 3.8, đưa ra cảnh báo trong Python 3.8 và xóa chúng khỏi kho CPython trong Python 3.10.
Mô-đun phân tích cú pháp dự kiến ​​sẽ bị xóa trong phiên bản 3.9 vì nó không được dùng nữa trong bản phát hành Python 2.5 và mô-đun macpath trong nhánh 3.8. Sau khi được loại bỏ khỏi mã chính, mã sẽ được chuyển sang kho lưu trữ Legacylib riêng và số phận của nó sẽ phụ thuộc vào sự quan tâm của các thành viên cộng đồng. Nhánh Python 3.9 dự kiến ​​sẽ được hỗ trợ cho đến năm 2026, điều này sẽ mang lại nhiều thời gian cho các dự án chuyển sang các lựa chọn thay thế bên ngoài.

Ban đầu, các mô-đun ftplib, optparse, getopt, colorsys, fileinput, lib2to3 và wave cũng được đề xuất loại bỏ, nhưng hiện tại người ta đã quyết định để chúng như một phần của thư viện tiêu chuẩn, vì chúng phổ biến và vẫn có liên quan, bất chấp sự hiện diện. các lựa chọn thay thế hoặc ràng buộc nâng cao hơn với các khả năng cụ thể của hệ điều hành.

Hãy nhớ lại rằng dự án Python ban đầu áp dụng cách tiếp cận “bao gồm pin”, cung cấp một bộ chức năng phong phú trong thư viện tiêu chuẩn cho nhiều ứng dụng khác nhau. Một trong những ưu điểm của phương pháp này là đơn giản hóa việc duy trì các dự án Python và giám sát tính bảo mật của các mô-đun được sử dụng trong các dự án. Lỗ hổng trong các mô-đun thường trở thành nguồn gốc của lỗ hổng trong các ứng dụng sử dụng chúng. Nếu các chức năng được đưa vào thư viện tiêu chuẩn thì việc theo dõi trạng thái của dự án chính là đủ. Khi chia tách thư viện tiêu chuẩn, các nhà phát triển bắt buộc phải sử dụng các mô-đun của bên thứ ba, các lỗ hổng trong mỗi mô-đun đó phải được theo dõi riêng biệt. Với mức độ phân mảnh cao và số lượng phụ thuộc lớn, có nguy cơ bị tấn công thông qua việc xâm phạm cơ sở hạ tầng của các nhà phát triển mô-đun.

Mặt khác, mỗi mô-đun bổ sung trong thư viện tiêu chuẩn đều yêu cầu tài nguyên từ nhóm phát triển Python để duy trì. Thư viện đã tích lũy một số lượng lớn các chức năng trùng lặp và dư thừa, loại bỏ những chức năng này có thể giảm chi phí bảo trì. Khi danh mục phát triển PyPI và đơn giản hóa quá trình cài đặt và tải xuống các gói bổ sung, việc sử dụng các mô-đun bên ngoài giờ đây đã trở nên phổ biến như các chức năng tích hợp sẵn.

Ngày càng có nhiều nhà phát triển sử dụng nhiều giải pháp thay thế bên ngoài có chức năng hơn cho các mô-đun tiêu chuẩn, chẳng hạn như sử dụng mô-đun lxml thay vì xml. Việc xóa các mô-đun bị bỏ rơi khỏi thư viện tiêu chuẩn sẽ làm tăng mức độ phổ biến của các lựa chọn thay thế được cộng đồng tích cực phát triển. Ngoài ra, việc giảm thư viện chuẩn sẽ dẫn đến giảm kích thước của bản phân phối cơ sở, điều này rất quan trọng khi sử dụng Python trên nền tảng nhúng có kích thước lưu trữ hạn chế.

Nguồn: opennet.ru

Thêm một lời nhận xét