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

Материал из Викиновостей, свободного источника новостей

7 сентября 2020 года

Стабилизирван выпуск системы управления пакетами Portage 3.0, применяемой в дистрибутиве Gentoo Linux. Представленная ветка подвела итог длительной работы по переходу на 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, но задача оказалась слишком сложной, так как требовала портирования большого объёма кода, и, при этом, было сомнительно, что полученный результат стоил бы потраченных усилий.

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Проект Gentoo представил систему управления пакетами Portage 3.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.