Проект aMule выпустил версию 3.0.0, ставшую первым крупным выпуском за более чем пять лет. Обновление, описанное разработчиками как «снова живая» версия, последовало за предыдущим основным выпуском, версией 2.3.3, вышедшим 7 февраля 2021 года. В новой версии значительно улучшена пропускная способность, модернизирован стек зависимостей и полностью переработана система сборки.
Значительный прирост пропускной способности и производительности
Главной особенностью aMule 3.0.0 является переработка системы пропускной способности, в результате которой дисковый ввод-вывод был вынесен из основного потока и заменены старые дроссели ограничителями сегментов токенов. Согласно проекту, скорость одноранговой загрузки на одном и том же оборудовании увеличилась в 100–380 раз по сравнению с версией 2.3.3 в Windows, Linux и macOS.
Тестирование, проведенное в течение 90 секунд с одним узлом локальной сети, загружающим файл размером 30 ГБ из раздающего устройства Linux x86_64, показало следующие устойчивые скорости:
- macOS (Apple Silicon, Mac Studio): Скорость увеличена с 0,35 МБ/с до 135 МБ/с (ускорение в 381 раз).
- Linux ARM (UTM VM, Ubuntu 25.10): Скорость увеличена с 0,34 МБ/с до 117 МБ/с (ускорение в 345 раз).
- Windows ARM (UTM VM, Windows 11): Скорость увеличена с 0,36 МБ/с до 39 МБ/с (ускорение в 107 раз).
В рамках проекта также сравнивалось aMule 3.0.0 с eMule 0.70b на оборудовании Windows. В тестах загрузки из семян Windows в личер Mac aMule 3.0.0 достиг скорости 106 МБ/с по сравнению с 22 МБ/с у eMule, что примерно в 4,8 раза больше скорости. В тестах загрузки из семян Linux на пиявки Windows скорость aMule 3.0.0 достигла 39 МБ/с против 20 МБ/с у eMule, что примерно в 1,9 раза выше.
Технические изменения и исправления ошибок
Разработчики решили несколько давних проблем в устаревшем коде. В частности, были обнаружены неисправности дросселей MaxUpload и MaxDownload; MaxUpload=0 ранее было ограничено текущая скорость + 5 КБ/с,
в то время как MaxDownload функционировал как контроллер соотношения, а не как буквальное ограничение. Оба были переписаны.
Для поддержки каналов гигабитного класса поля ограничения скорости были расширены с uint16 до uint32, убрав прежний потолок конфигурации в 65 534 КБ/с. Пользовательский интерфейс ограничения пропускной способности также был обновлен: потолок кнопки прокрутки увеличен с 19 375 до 1 000 000 КБ/с. Кроме того, значение SlotAllocation по умолчанию было увеличено с 2 КБ/с (настройка 2005 года) до 10 КБ/с, чтобы предотвратить изменение скорости быстрых одноранговых узлов.
Другие технические обновления включают в себя:
- Масштабирование больших библиотек: Алгоритмические исправления (переход от O(N²) к O(N log N) или O(1)) гарантируют, что веб-интерфейс и графический интерфейс остаются отзывчивыми для узлов с более чем 100 000 общих файлов.
- Система сборки: CMake теперь заменяет autotools, требуя как минимум CMake 3.10 и wxWidgets 3.2.0.
- Возможности подключения: Функциональность HTTPS была восстановлена путем переписывания CHTTPDownloadThread поверх wxWebRequest.
- Дополнительные возможности: Обновление включает в себя параллельный поиск Kad с расширением альфа-границы и замену устаревшего GeoIP на MaxMindDB для поиска по IP-адресу страны.
Поддержка и распространение платформы
aMule 3.0.0 предоставляет собственные двоичные файлы для всех основных настольных платформ. К ним относятся AppImage и Flatpak для Linux (x86_64 и aarch64), macOS Universal2 .dmg, который связывает aMuleGUI.app с aMule.app, а также портативный ZIP-файл для Windows и установщик NSIS (x64 и ARM64). Новые функции повышения качества жизни включают кросс-платформенный переключатель автоматического запуска при входе в систему и приглашение к первому запуску интеграции с рабочим столом для пользователей AppImage.
Организационный переход
Релиз последовал за периодом нестабильности проекта. Разработчики заявили, что aMule ранее называли «мертвым проектом» из-за потери сопровождающих. В проекте также отметили, что пропал Гоностопи, плодовитый разработчик и давний сопровождающий. Поскольку Гоностопи был единственным владельцем исходного репозитория GitHub, а у других участников не было достаточных организационных прав, команда была вынуждена создать новую организацию и новые репозитории для управления программным обеспечением.
По теме

