⏫ Python packaging стал в разы быстрее
Если коротко: библиотеку packaging, на которой держится pip и почти весь Python-экосистемный тулчейн, разогнали в 2–5 раз. Без переписывания на C, без магии — чистый Python, профилирование и много аккуратной инженерной работы.
Автор статьи вместе с мейнтейнерами pip разобрал самые горячие места: парсинг версий (PEP 440), SpecifierSet, маркеры, Requirement, canonicalize_name. Оказалось, что узкие места — не только regex, но и куча «мелочей»: лишние NamedTuple, повторное создание Version, singledispatch там, где нужен обычный if, генераторы вместо map, regex там, где хватит str.translate.
⏩ Самое интересное — инструменты. Работа делалась с новым статистическим профайлером Python 3.15, плюс бенчмарки гоняли по всем версиям пакетов, которые когда-либо загружались на PyPI. То есть это не синтетика, а реальный мир.
Результат:
– создание Version — до 2× быстрее
– SpecifierSet.contains — больше 2×
– SpecifierSet.filter — до 5×
– pip-резолвер создаёт в 10+ раз меньше объектов Version
– установка пакетов и резолв зависимостей ощутимо ускоряются «бесплатно» для всех
📌 Если хочется понять как именно это сделали — статья обязательна к чтению.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Post #7423
3.69K

- 👍 9
- ❤ 4
- ❤🔥 1
- 🔥 1
- 🤩 1