Rust 1.93.0: musl обновлён до 1.2.5, а глобальный аллокатор разрешено писать на Rust
22.01.2026Вышел Rust 1.93.0. Два изменения заметны за пределами списка стабилизированного: musl во всех таргетах обновлён до 1.2.5, а глобальный аллокатор теперь может использовать thread_local! и std::thread::current без риска повторного входа.
musl 1.2.5
Обновление принесло переписанный DNS-резолвер, и статические бинарники Linux с сетью стали надёжнее — особенно на больших DNS-записях и рекурсивных серверах имён.
Плата — ломающее изменение в libc: musl 1.2.4 удалил устаревшие символы совместимости. Об этом Rust предупредил ещё в декабре 2025 года, так что повреждать сборки застаревшими зависимостями не придётся, если следовать объявлениям.
Глобальный аллокатор и thread-local
Внутреннее устройство стандартной библиотеки изменено так, чтобы глобальный аллокатор, написанный на Rust, мог пользоваться thread_local! и получать текущий поток без риска повторного входа. Внутри используется системный аллокатор.
Чинить обратную сторону: раньше аллокатор на Rust не мог трогать эти механизмы, потому что они сами вызывают выделение памяти, а значит аллокатор — то есть возникал риск рекурсии. Теперь это сделано безопасно, и пользовательские аллокаторы могут использовать локальные переменные потока.
cfg на отдельных инструкциях ассемблера
Раньше, если отдельную инструкцию внутри блока asm! нужно было условно исключить, приходилось дублировать весь блок — с этой инструкцией и без. Теперь cfg применяется к отдельным инструкциям внутри блока.
Для кода с платформенными различиями в ассемблере это означает конец дублирования. На практике такие блоки обычно крупные, и каждое изменение в них приходилось повторять вручную.
Что стабилизировано
- методы для
[MaybeUninit<T>]:assume_init_drop,assume_init_ref,assume_init_mutиwrite_copy_of_slice; String::into_raw_partsиVec::into_raw_parts— разбор значения на части без копирования, что избавляет от самописных обёрток при работе с C;unchecked_neg,unchecked_shl,unchecked_shrдля целых — операции без проверки переполнения;as_arrayиas_mut_arrayдля срезов и сырых указателей на срезы;VecDeque::pop_front_ifиpop_back_if;Duration::from_nanos_u128,char::MAX_LEN_UTF8иMAX_LEN_UTF16,std::fmt::from_fn.
Оригинал
Announcing Rust 1.93.0 от 22 января 2026 года
Упоминаний: 1 · Просмотров: 2