Python to język programowania wysokiego poziomu.
Niedawno pojawiła się wiadomość, że Komitet Sterujący Projektu Python ogłosił chęć zatwierdzenia Propozycja rozszerzenia języka Python «PEP-0703″, czyniąc globalną blokadę interpretera opcjonalną w CPython i która w zasadzie definiuje osadzenie trybu kompilacji CPython bez Globalnej blokady interpretera (GIL).
PEP-0703 definiuje domyślnie zaprzestanie używania GIL, ale dodaj opcję kompilacji „–sin-gil”, aby ją wyłączyć. Jak się maszl Oczekuje się, że nowy tryb rozwiąże problem z równoległością operacji na systemach wielordzeniowych, spowodowane tym, że globalna blokada nie pozwala na równoległy dostęp do współdzielonych obiektów z różnych wątków.
Wspomina się, że w dłuższej perspektywie (po 5 latach) shell ma zostać domyślnie zmieniony na tylko w globalnym trybie bez blokowania, jednocześnie rezygnując z obsługi kompilacji z GIL.
Dziękuję wszystkim za udział w ankiecie dotyczącej propozycji no-GIL. Oczywiste jest, że ogólne nastroje są pozytywne, zarówno dla ogólnego pomysłu, jak i dla PEP 703 w szczególności. Rada Dyrektorów jest również w dużej mierze pozytywna w obu przypadkach. Zamierzamy przyjąć PEP 703, choć wciąż dopracowujemy szczegóły akceptacji.
Tak jak robiliśmy to już kilka razy w przeszłości, chcemy zakomunikować naszą intencję przyjęcia PEP wraz z naszym obecnym myśleniem o szczegółach związanych z akceptacją.
Poza tym, Wspomniano, że zmiany, które planowane są do przeprowadzenia w trzech etapach, które są krótko, średnio i długoterminowe. Jeśli się uwzględni w pierwszym etapie domyślne wyłączenie GIL jest niepraktyczne ze względu na narzut związany ze zmianami w wyrzucaniu elementów bezużytecznych, systemie zarządzania pamięcią i prymitywach do organizowania blokad. Na przykład, ze względu na użycie liczenia referencji do izolacji wątków, występuje spadek wydajności dla skryptów jednowątkowych (w pakiecie testów pyperformance o 10%). Jednocześnie może być konieczne wyłączenie GIL w obliczeniach naukowych, dla których brak równoległości jest poważniejszym problemem niż liniowa prędkość wykonywania kodu.
W drugim etapie w zasadzie oczekiwane będzie potwierdzenie. i że istnieje wystarczające wsparcie ze strony społeczności, aby to zrobić użycie „non-GIL jest wykonalne” i upewnij się, że kompilacja bez GIL jest obsługiwana, ale nie jest domyślna.
W ostatnim etapie no-GIL będzie już wartością domyślną a wszelkie pozostałości GIL zostaną usunięte (bez niepotrzebnego przerywania kompatybilności wstecznej).
Zauważono, że prace nad odejściem od GIL będą wykonywane bardzo ostrożnie, aby nie powtórzyć błędu co się stało podczas promocji Python 3: Kompilacja niezgodna z GIL będzie musiała zapewniać kompatybilność ze starszymi wersjami Pythona, a wszelkie zmiany kodu innych firm wymagane do pracy z kompilacjami innymi niż GIL powinny również działać z kompilacjami GIL.
Nie ma planów zmiany numeracji wersji na Python 4 dla kompilacji innych niż GIL, ponieważ zachowają one zgodność z ABI.
W trakcie całego procesu my (główni programiści, nie tylko SC) będziemy musieli ponownie ocenić postęp i sugerowane ramy czasowe. Nie chcemy, aby stało się to kolejną dziesięcioletnią walką o kompatybilność wsteczną i chcemy mieć możliwość anulowania PEP 703 i znalezienia innego rozwiązania, jeśli wydaje się to problematyczne, dlatego musimy regularnie sprawdzać, czy dalsza praca jest tego warta.
Mamy nadzieję, że zapewni to pewną jasność co do przyszłości PEP, gdy będziemy opracowywać dokładne szczegóły akceptacji. SC będzie pracować nad sfinalizowaniem akceptacji w nadchodzących tygodniach.
Przed pełnym przejściem na kompilacje inne niż GIL planujemy uzyskać pełne wsparcie społeczności dla tych kompilacji, a także udostępnić dodatkowe interfejsy API języka C i Pythona, aby umożliwić bezpieczną wielowątkowość w istniejącym kodzie.
Wreszcie, jak już wspomniano, oczekuje się, że przejście do trzeciego etapu może nastąpić za co najmniej 5 lat, a prawdopodobną datą dla PEP-0703 jest wydanie Pythona 3.13, zaplanowane na jesień przyszłego roku.
Jeżeli jesteś chcesz dowiedzieć się więcej na ten tematmożesz sprawdzić szczegóły W poniższym linku.