Σχεδιάζεται μια σημαντική εκκαθάριση της βασικής βιβλιοθήκης Python

Προγραμματιστές Python Project δημοσιεύθηκε πρόταση (PEP 594) για να γίνει ένας σημαντικός καθαρισμός της τυπικής βιβλιοθήκης. Τόσο σαφώς ξεπερασμένες όσο και εξαιρετικά εξειδικευμένες δυνατότητες και στοιχεία που έχουν αρχιτεκτονικά προβλήματα και δεν μπορούν να ενοποιηθούν για όλες τις πλατφόρμες προσφέρονται για κατάργηση από την τυπική βιβλιοθήκη Python.

Για παράδειγμα, προτείνεται να εξαιρεθούν από την τυπική βιβλιοθήκη ενότητες όπως crypt (μη διαθεσιμότητα για Windows και εξάρτηση από τη διαθεσιμότητα αλγορίθμων κατακερματισμού από βιβλιοθήκες συστήματος), cgi (όχι βέλτιστη αρχιτεκτονική, απαιτεί εκκίνηση νέας διαδικασίας για κάθε αίτημα), imp (συνιστάται για χρήση importlib), pipes (συνιστάται η χρήση της ενότητας υποδιεργασίας), nis (συνιστάται η χρήση NSS, LDAP ή Kerberos/GSSAPI), spwd (δεν συνιστάται η απευθείας εργασία με τη βάση δεδομένων του λογαριασμού). Οι ενότητες binhex, uu, xdrlib, έχουν επίσης σήμανση για αφαίρεση.
aifc,
audioop,
μεγάλο κομμάτι
imghdr,
Οσαουντίντεφ,
sndhdr,
sunau
asynchat,
ασύγχρονος,
cgitb,
smtpd
nntplib, macpath,
μορφοποιητής, 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, colorys, fileinput, lib2to3 και wave προτάθηκαν επίσης για κατάργηση, αλλά αποφασίστηκε να παραμείνουν ως μέρος της τυπικής βιβλιοθήκης προς το παρόν, καθώς είναι ευρέως διαδεδομένες και παραμένουν σχετικές, παρά την παρουσία τους. πιο προηγμένων εναλλακτικών λύσεων ή δεσμεύσεων σε συγκεκριμένες δυνατότητες λειτουργικών συστημάτων.

Θυμηθείτε ότι το έργο Python αρχικά ακολούθησε μια προσέγγιση «συμπεριλαμβανομένων μπαταριών», προσφέροντας ένα πλούσιο σύνολο λειτουργιών στην τυπική βιβλιοθήκη για μια ποικιλία εφαρμογών. Μεταξύ των πλεονεκτημάτων αυτής της προσέγγισης είναι η απλοποίηση της διατήρησης έργων Python και η παρακολούθηση της ασφάλειας των λειτουργικών μονάδων που χρησιμοποιούνται σε έργα. Τα τρωτά σημεία σε λειτουργικές μονάδες συχνά γίνονται πηγή τρωτών σημείων σε εφαρμογές που τις χρησιμοποιούν. Εάν οι συναρτήσεις περιλαμβάνονται στην τυπική βιβλιοθήκη, αρκεί να ελέγξετε την κατάσταση του κύριου έργου. Κατά τον διαχωρισμό της τυπικής βιβλιοθήκης, οι προγραμματιστές πρέπει να χρησιμοποιούν λειτουργικές μονάδες τρίτων, τα τρωτά σημεία σε καθεμία από τις οποίες πρέπει να παρακολουθούνται χωριστά. Με υψηλό βαθμό κατακερματισμού και μεγάλο αριθμό εξαρτήσεων, υπάρχει κίνδυνος επιθέσεων μέσω της υπονόμευσης της υποδομής των προγραμματιστών λειτουργιών.

Από την άλλη πλευρά, κάθε πρόσθετη ενότητα στην τυπική βιβλιοθήκη απαιτεί πόρους από την ομάδα ανάπτυξης της Python για συντήρηση. Η βιβλιοθήκη έχει συσσωρεύσει μεγάλο αριθμό αντιγράφων και περιττών λειτουργιών, εξαλείφοντας τις οποίες μπορεί να μειώσει το κόστος συντήρησης. Καθώς αναπτύσσεται ο κατάλογος PyPI και απλοποιώντας τη διαδικασία εγκατάστασης και λήψης πρόσθετων πακέτων, η χρήση εξωτερικών μονάδων έχει γίνει πλέον τόσο κοινή όσο και οι ενσωματωμένες λειτουργίες.

Όλο και περισσότεροι προγραμματιστές χρησιμοποιούν πιο λειτουργικές εξωτερικές αντικαταστάσεις για τυπικές μονάδες, για παράδειγμα, χρησιμοποιώντας τη λειτουργική μονάδα lxml αντί για xml. Η κατάργηση εγκαταλελειμμένων λειτουργικών μονάδων από την τυπική βιβλιοθήκη θα αυξήσει τη δημοτικότητα των εναλλακτικών που αναπτύσσονται ενεργά από την κοινότητα. Επιπλέον, η μείωση της τυπικής βιβλιοθήκης θα οδηγήσει σε μείωση του μεγέθους της βασικής κατανομής, κάτι που είναι σημαντικό όταν χρησιμοποιείτε την Python σε ενσωματωμένες πλατφόρμες με περιορισμένο μέγεθος αποθήκευσης.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο