



В Python появятся стековые корутины в стиле Go за счет библиотеки Runloom
Сообщество независимых разработчиков представило открытую библиотеку Runloom. Проект внедряет стековые корутины в стиле языка Go в режим free-threaded Python 3.13t+ с отключенной глобальной блокировкой интерпретатора (GIL). Над инструментом работают пользователи GitHub, Reddit и Lobsters, однако к проекту уже проявили интерес инженеры из крупных технологических компаний, включая Cloudflare, Vercel и Hugging Face.
Runloom помогает эффективно обрабатывать высокие нагрузки, ограниченные операциями ввода-вывода. Обычно при обращении к внешним ресурсам поток просто простаивает в ожидании ответа, а процессор тратит время вхолостую. Runloom решает эту проблему: пока одна корутина ждет данные из сети или с диска, планировщик переключает процессор на другие полезные задачи. При этом библиотека позволяет писать привычный синхронный код без конструкций async и await.
Разработчики заложили в основу инструмента сложную архитектуру, которая включает переключение контекста на Assembler, планировщик задач на языке C с алгоритмом work-stealing, интеграцию с сетевым стеком netpoll и поддержку средств синхронизации потоков.
Чтобы обеспечить совместимость, разработчики предусмотрели изменение модуля во времени исполнения без изменения оригинального исходного кода (monkeypatching) на базе метода monkey.patch(). Инструмент подменяет стандартные блокирующие вызовы — например, в библиотеках socket, time или threading — на их кооперативные аналоги без необходимости переписывать все приложение. При возникновении блокировки корутина ставится на паузу и процессор переключается на другую задачу. Поток операционной системы при этом продолжает работать без остановок. Кроме того, разработчики встроили в библиотеку специальный мост для интеграции с asyncio
Читать на habr.com