To jest zastąpienie GIL przez bardziej rozdrobnioną synchronizację. Tak, żeby działały wątki i umożliwiały bardziej równoległe działanie kodu. Jednocześnie zapewnia się współdzielenie obiektów w wątkach bez synchronizacji. Jeśli dobrze zrozumiałem?
Z grubsza przeskanowałem PEP oczami, ale z tego co mój skan wyłapał to mniej więcej do tego to się sprowadza. Dochodzi do tego oczywiście jeszcze kilka innych dużych zmian. Tymczasem wychodzą pierwsze problemy https://github.com/python/cpython/issues/111506
Doczytałem też, że usunęli podział na pokolenia w GC. Czyli pewnie muszą teraz skanować więcej obiektów przy odśmiecaniu pamięci.
Ogólnie zarządzanie referencjami do obiektów w Pythonie jest strasznie upierdliwe. Rozszerzenia muszą to robić ręcznie i natywny kod potrafi być usiany tymi Py_INC/DECREFami.
Debugowanie błędów w tych licznikach jest skomplikowane nawet bez wielowątkowości. Teraz będzie pewnie o rząd wielkości trudniej.
To jest zastąpienie GIL przez bardziej rozdrobnioną synchronizację. Tak, żeby działały wątki i umożliwiały bardziej równoległe działanie kodu. Jednocześnie zapewnia się współdzielenie obiektów w wątkach bez synchronizacji. Jeśli dobrze zrozumiałem?
Z grubsza przeskanowałem PEP oczami, ale z tego co mój skan wyłapał to mniej więcej do tego to się sprowadza. Dochodzi do tego oczywiście jeszcze kilka innych dużych zmian. Tymczasem wychodzą pierwsze problemy https://github.com/python/cpython/issues/111506
Doczytałem też, że usunęli podział na pokolenia w GC. Czyli pewnie muszą teraz skanować więcej obiektów przy odśmiecaniu pamięci.
Ogólnie zarządzanie referencjami do obiektów w Pythonie jest strasznie upierdliwe. Rozszerzenia muszą to robić ręcznie i natywny kod potrafi być usiany tymi Py_INC/DECREFami.
Debugowanie błędów w tych licznikach jest skomplikowane nawet bez wielowątkowości. Teraz będzie pewnie o rząd wielkości trudniej.