Η Python είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου.
Πρόσφατα κυκλοφόρησε η είδηση ότι η Η Διευθύνουσα Επιτροπή του Έργου Python ανακοίνωσε την επιθυμία της να εγκρίνει το Πρόταση επέκτασης γλώσσας Python «PEP-0703″, καθιστώντας το καθολικό κλείδωμα διερμηνέα προαιρετικό στο CPython και το οποίο ουσιαστικά ορίζει την ενσωμάτωση της λειτουργίας μεταγλώττισης του CPython χωρίς Παγκόσμιο Κλείδωμα Διερμηνέα (GIL).
ΡΕΡ-0703 ορίζει τη διακοπή της χρήσης GIL από προεπιλογή, αλλά προσθέστε την επιλογή κατασκευής “–sin-gil” για να την απενεργοποιήσετε. Πώς είσαιl Η νέα λειτουργία αναμένεται να λύσει το πρόβλημα με την παραλληλοποίηση των λειτουργιών σε πολυπύρηνα συστήματα, που προκαλούνται από το γεγονός ότι το καθολικό κλείδωμα δεν επιτρέπει την παράλληλη πρόσβαση σε κοινόχρηστα αντικείμενα από διαφορετικά νήματα.
Αναφέρεται ότι μακροπρόθεσμα (μετά από 5 χρόνια), ο διερμηνέας έχει προγραμματιστεί να αλλάξει από προεπιλογή σε μόνο σε καθολική λειτουργία μη κλειδώματος, ενώ ταυτόχρονα σταματά η υποστήριξη για μεταγλώττιση με GIL.
Σας ευχαριστούμε όλους που απαντήσατε στην έρευνα σχετικά με την πρόταση no-GIL. Είναι σαφές ότι το γενικό κλίμα είναι θετικό, τόσο για τη γενική ιδέα όσο και για το PEP 703 ειδικότερα. Το Διοικητικό Συμβούλιο είναι επίσης σε μεγάλο βαθμό θετικό και στα δύο. Σκοπεύουμε να δεχτούμε το PEP 703, αν και ακόμη επεξεργαζόμαστε τις λεπτομέρειες της αποδοχής.
Όπως έχουμε κάνει μερικές φορές στο παρελθόν, θέλουμε να κοινοποιήσουμε την πρόθεσή μας να αποδεχθούμε το PEP μαζί με την τρέχουσα σκέψη μας σχετικά με τις λεπτομέρειες που σχετίζονται με την αποδοχή.
Εκτός αυτού, Αναφέρεται ότι οι αλλαγές που προγραμματίζονται να γίνουν σε τρία στάδια, που είναι βραχυπρόθεσμα, μεσοπρόθεσμα και μακροπρόθεσμα. Δεδομένου ότι Στο πρώτο στάδιο, η απενεργοποίηση του GIL από προεπιλογή δεν είναι πρακτική λόγω των γενικών εξόδων που σχετίζονται με αλλαγές στον συλλέκτη απορριμμάτων, στο σύστημα διαχείρισης μνήμης και στα πρωτόγονα για την οργάνωση κλειδαριών. Για παράδειγμα, λόγω της χρήσης μέτρησης αναφοράς για την απομόνωση νημάτων, υπάρχει πτώση απόδοσης για σενάρια μονού νήματος (στη σουίτα δοκιμής pyperformance κατά 10%). Ταυτόχρονα, μπορεί να χρειαστεί να απενεργοποιήσετε το GIL στον επιστημονικό υπολογισμό, για τον οποίο η έλλειψη παραλληλισμού είναι πιο σοβαρό πρόβλημα από τη γραμμική ταχύτητα εκτέλεσης κώδικα.
Στο δεύτερο στάδιο, ουσιαστικά θα αναμένεται η επιβεβαίωση. και ότι υπάρχει επαρκής υποστήριξη από την κοινότητα έτσι ώστε η χρήση του "μη GIL είναι βιώσιμη" και βεβαιωθείτε ότι η έκδοση χωρίς GIL υποστηρίζεται αλλά δεν είναι προεπιλεγμένη.
Στο τελευταίο στάδιο, το no-GIL θα είναι ήδη η προεπιλεγμένη τιμή και τυχόν υπολείμματα GIL θα αφαιρεθούν (χωρίς να παραβιάζεται άσκοπα η συμβατότητα προς τα πίσω).
Παρατηρείται ότι Η εργασία για την απομάκρυνση από το GIL θα γίνει πολύ προσεκτικά για να μην επαναληφθεί το λάθος τι συνέβη κατά την προώθηση Python 3: Μια έκδοση που δεν είναι GIL θα πρέπει να διασφαλίζει τη συμβατότητα με παλαιότερες εκδόσεις της Python και οποιεσδήποτε αλλαγές κώδικα τρίτων που απαιτούνται για εργασία σε εκδόσεις που δεν είναι GIL θα πρέπει επίσης να λειτουργούν σε εκδόσεις GIL.
Δεν υπάρχουν σχέδια για νέα αρίθμηση των εκδόσεων σε Python 4 για εκδόσεις που δεν είναι GIL, καθώς θα διατηρήσουν τη συμβατότητα ABI.
Σε όλη τη διαδικασία, εμείς (οι βασικοί προγραμματιστές, όχι μόνο το SC) θα πρέπει να επαναξιολογήσουμε την πρόοδο και τα προτεινόμενα χρονοδιαγράμματα. Δεν θέλουμε αυτό να γίνει ένας ακόμη αγώνας συμβατότητας δέκα ετών και θέλουμε να είμαστε σε θέση να ακυρώσουμε το PEP 703 και να βρούμε άλλη λύση εάν φαίνεται ότι είναι προβληματικό, επομένως πρέπει να ελέγχουμε τακτικά ότι αξίζει τον κόπο να συνεχιστεί η εργασία.
Ελπίζουμε ότι αυτό παρέχει κάποια σαφήνεια για το μέλλον του PEP καθώς επεξεργαζόμαστε τις ακριβείς λεπτομέρειες της αποδοχής. Το SC θα εργαστεί για να οριστικοποιήσει την αποδοχή τις επόμενες εβδομάδες.
Πριν από την πλήρη μετάβαση σε εκδόσεις που δεν είναι GIL, σχεδιάζουμε να επιτύχουμε την πλήρη υποστήριξη της κοινότητας για αυτές τις εκδόσεις, καθώς και να παρέχουμε επιπλέον C API και Python API για να επιτρέψουμε την ασφαλή πολυνηματική σύνδεση στον υπάρχοντα κώδικα.
Τέλος, όπως ήδη αναφέρθηκε, αναμένεται ότι η μετάβαση στο τρίτο στάδιο μπορεί να γίνει σε τουλάχιστον 5 χρόνια και η πιθανή ημερομηνία για το PEP-0703 είναι η κυκλοφορία της Python 3.13, που έχει προγραμματιστεί για το επόμενο φθινόπωρο.
Αν είστε ενδιαφέρεται να μάθει περισσότερα για αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.