Наскоро гръмна новината, че Управителният комитет на проекта Python обяви желанието си да одобри Предложение за разширение на езика Python «PEP-0703″, което прави глобалното заключване на интерпретатора незадължително в CPython и което основно дефинира вграждането на режим на компилиране на CPython без Global Interpreter Lock (GIL).
РЕР-0703 дефинира да спре използването на GIL по подразбиране, но добавете опция за изграждане „–sin-gil“, за да я деактивирате. Как сиl Очаква се новият режим да реши проблема с паралелизирането на операции на многоядрени системи, причинени от факта, че глобалното заключване не позволява паралелен достъп до споделени обекти от различни нишки.
Споменава се, че в дългосрочен план (след 5 години), черупката се планира да бъде променена по подразбиране само в глобален незаключващ режим, като в същото време отпада поддръжката за компилиране с GIL.
Благодарим на всички, че отговорихте на анкетата относно предложението без 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, докато изработваме точните подробности за приемането. НС ще работи за финализиране на приемането през следващите седмици.
Преди пълния преход към компилации без GIL, ние планираме да постигнем пълна поддръжка от общността за тези компилации, както и да предоставим допълнителни C API и Python API, за да позволим безопасна многонишковост в съществуващия код.
И накрая, както вече споменахме, очаква се преходът към третия етап да се случи след поне 5 години и вероятната дата за PEP-0703 е пускането на Python 3.13, планирано за следващата есен.
Ако сте заинтересовани да научите повече за това, можете да проверите подробностите В следващия линк.