Comments 9
Шикарная статья, спасибо!
И если первый реквест был просто не правильный, то второй не прошел проверку качества со стороны владельцев кода. И после этого решил основательно разобраться с тем, как устроена сборка мусора в современном CPython.
Интересно этот факт только мне в глаза бросается? То есть сначала мы делаем пул-реквесты совершенно не понимая как оно там устроено, а потом, мы начинаем писать статьи о том как там все устроено?
Так и хочется спросить: "А пул-реквест -то какой-то в конце концов приняли или нет? И если да то что было в том пул-реквесте?". Или автор просто понял, что делать реквесты это не его?
Или автор просто понял, что делать реквесты это не его?
После такого наброса вряд ли получится конструктивная беседа. Вот реквест, который не был принят, потому что добавлял еще один проход в сборщик мусора - gh-135552: Clear weakrefs to types in GC after garbage finalization not before by sergey-miryanov · Pull Request #135728 · python/cpython
То есть сначала мы делаем пул-реквесты совершенно не понимая как оно там устроено, а потом, мы начинаем писать статьи о том как там все устроено?
Да, все так. CPython большой и сложный проект, с большим количеством нетривиальных связей, которые не документированы.
Вот реквест, который не был принят
Так получается вы просто неудачно сформулировали! Насколько я понимаю цель пул-реквеста как раз и была (в какой-то степени) проверить свое понимание системы. Получается это пл-реквесты позволили вам проникнуть в задние мысли разработчиков и дали ключ к разбору того как там все устроено, а не так как это может интерпретироваться из вашей формулировки. Вот и у меня получается кривая-корявая формулировка - невнятная! Это действительно сложно выразить.
Мне кажется, намного интереснее было бы если бы вы написали что вас сподвигло и как вы умудрились влезть в потроха этой системы настолько что смогли пул-реквест создать, который до ревью дошел! Потому что как оно там внутри работает это с одной стороны все равно основано на базовых всем известных принципах, а с другой стороны приправлено очень частной спецификой которая не имеет смысла вне этой системы, как это обычно и бывает.
Ну я мастер формулировок, простите если запутал.
В плане реквестов в CPython довольно просто - это открытый проект, с открытой политикой, в массе своей поддерживается и развивается волонтерами, есть краткий гайд - Python Developer’s Guide .
В этом плане любой может прийти и создать реквест. Только чтобы изменения попали в "мастер" ветку, нужно чтобы реквест прошел ревью и одобрение со стороны code-owners. В моем случае Нил забраковал решение и сделал свое. Нил если что занимался GC в питоне еще в начале 00, так что тут никаких обид :)
Чтобы разобраться - нужно просто сидеть и разбираться. Здесь тоже нет ничего необычного - нужно желание и время. Ну и мне в определенной степени повезло, что проблема была связана с той подсистемой с которой я разбирался ранее.
То есть сначала мы делаем пул-реквесты совершенно не понимая как оно там устроено, а потом, мы начинаем писать статьи о том как там все устроено?
А разве не все так делают при каждой смене работы? Или вы первые полгода (в лучшем случае) работаете с нулевой отдачей?
я тоже чёт не, понял этого начала. спустился в комменты посмотреть , я один такой ?!
Del
CPython — сборка мусора изнутри, ч.1