Все musl-таргеты переходят на musl 1.2.5 — это ломает часть сборок
05.12.2025С Rust 1.93 все платформы *-linux-musl будут поставляться с musl 1.2.5. Основная причина — крупные улучшения DNS-резолвера, но обновление содержит и ломающее изменение, задевающее крейт libc.
Что даёт обновление
Главная выгода — переписанный DNS-резолвер из musl 1.2.4. Статические бинарники Linux с сетью должны стать заметно надёжнее, особенно при больших DNS-записях и рекурсивных серверах имён. Для статических сборок это дефект, который проявлялся в самый неподходящий момент — при обращении к внешнему сервису.
Что ломается
В musl 1.2.4 удалены несколько устаревших символов совместимости, которые использовал крейт libc. Исправление в самом libc вышло ещё в июне 2023 года, и команда Rust два года ждала, пока новая версия разойдётся по экосистеме.
Типичная ошибка сборки выглядит как сообщение о ненайденных внешних функциях, часто с упоминанием open64. Как правило, она возникает при сборке с очень старой версией getrandom в дереве зависимостей — а такие особенно часты в игровых проектах, где зависимости давно не обновляли.
Масштаб
Прогон на Crater в июне 2025 года показал 1,5 процента затронутых проектов. Годом раньше показатель был 2,4 процента — то есть доля падает.
Что делать
Обновлять Cargo.lock заранее: в подавляющем большинстве случаев этого достаточно. Проверять стоит проекты с застывшими зависимостями — в первую очередь игровые, у которых getrandom часто самый старый.
Обновление откладывали два года, и причина понятна: musl 1.2.4 содержит критические исправления, которые важнее совместимости со старыми версиями зависимостей.
Оригинал
Updating Rust's Linux musl targets to 1.2.5 от 5 декабря 2025 года
Упоминаний: 1 · Просмотров: 4