Проект Gentoo представил систему управления пакетами Portage 3.0

Стaбилизирвaн выход систeмы упрaвлeния пaкeтaми Portage 3.0, примeняeмoй в дистрибутивe Gentoo Linux. Прeдстaвлeннaя вeткa пoдвeлa итoг длитeльнoй рaбoты до переходу на Python 3 и прекращению поддержки Python 2.7. Не принимая во внимание прекращения поддержки Python 2.7, другим важным изменением из этого следует включение оптимизаций, позволивших на 50-60% остановить вычисления, связанные с определением зависимостей. Курьезно, что некоторые разработчики предлагали скопировать код разрешения зависимостей на C/C++ иначе говоря Go для ускорения его работы, хотя удалось решить имевшуюся проблему малой кровью. Проводка профилирования имевшегося кода показало, что такое? основное время при вычислениях тратится сверху вызов функций use_reduce и catpkgsplit с повторяющимся набором аргументов (хоть (бы), функция catpkgsplit вызывалась от 1 поперед 5 млн раз). Для ускорения было применено кэширование результата работы данных функций с использованием словарей. Оптимальным пользу кого хранения кэша была встроенная дело lru_cache, но она была доступна всего в выпусках Python, начиная с 3.2. Для того совместимости с более ранними версиями была добавлена заглушина, подменяющая lru_cache, но решение о прекращении поддержки Python 2.7 в Portage 3.0 как собака упростило задачу и позволило обойтись минус данной прослойки. Использование кэша позволило уменьшить время выполнения операции "emerge -uDvpU --with-bdeps=y @world" получай ноутбуке ThinkPad X220 с 5 минут 20 секунд перед 3 минут 16 секунд (63%). Тесты получи и распишись других системах показали прирост производительности безграмотный ниже 48%. Подготовивший изменение построитель также попытался реализовать прототип стих разрешения зависимостей на C++ или Rust, да задача оказалась слишком сложной, таким (образом как требовала портирования большого объёма заключение, и, при этом, было сомнительно, сколько полученный результат стоил бы потраченных усилий. Сольфатор: http://www.opennet.ru/opennews/art.shtml?num=53668