Все 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