Вышел Rust 1.93, вот что нового

Rust 1.93.0 теперь стабилен и выпущен сегодня. Основное внимание уделяется ужесточению гарантий безопасности компилятора, а также предоставлению важных новых инструментов для задач, критичных к производительности. Это солидный релиз, который делает язык более зрелым в наиболее важных областях.

Если вы создаете статические двоичные файлы для Linux (особенно на x86_64 или aarch64), надежность вашей сети значительно повысится. В Rust 1.93 встроенная библиотека musl обновлена до версии 1.2.5, что решает некоторые давние проблемы с разрешением DNS в старых версиях. Это отличная новость, если вы создаете портативные двоичные файлы Linux, поддерживающие работу в сети, поскольку это делает эту функциональность намного более надежной.

Это особенно помогает при работе с большими записями DNS или сложными рекурсивными серверами имен. Обновление musl удалило некоторые устаревшие символы совместимости. Ржавчина libc crate использовал эти символы. Однако исправление этой проблемы было выпущено более двух лет назад, поэтому в большинстве современных проектов не должно возникнуть никаких проблем в процессе обновления.

Предоставляя глобальным распределителям доступ к локальному хранилищу потоков, стандартная библиотека теперь позволяет безопасно использовать такие функции, как std::thread_local! не вызывая проблем с повторным входом. Для тех из вас, кто пишет высокооптимизированный низкоуровневый код, новая поддержка cfg атрибуты непосредственно на asm! линии – это фантастика. Раньше, если вы хотели условно включить несколько инструкций по сборке на основе целевых функций, вам приходилось дублировать всю инструкцию целиком. asm! блок внутри операторов условной компиляции.

Теперь вы можете применить условную компиляцию, например #[cfg(target_feature = "sse2")]непосредственно к отдельным строкам сборки или ограничениям внутри блока. Это делает написание оптимизаций для конкретной платформы намного проще и проще в сопровождении.

Read more:  Орлы сжимают мимо ковбоев, когда Картер вырвался за то, что выплюнул на Прескотт шесть секунд в сезон | НФЛ

Релиз стабилизирует большое количество API, предоставляя разработчикам новые инструменты для управления памятью и структурами данных. Несколько новых методов MaybeUninit срезы теперь стабильны. К ним относятся assume_init_drop, assume_init_refи такие методы, как write_copy_of_slice. Они обеспечивают детальный контроль над безопасностью памяти при работе с неинициализированными буферами. Если вы работаете с FFI или пользовательским управлением памятью, вы также оцените это. String::into_raw_parts и Vec::into_raw_parts теперь официальные.

Это позволяет вам разложить эти коллекции на их основные компоненты, такие как необработанные указатели, длины и емкости. Любители производительности оценят стабилизацию непроверяемых целочисленных операций, таких как unchecked_neg, unchecked_shlи unchecked_shr. Они имеют решающее значение для написания чрезвычайно быстрого и небезопасного кода, в котором разработчик гарантирует, что не произойдет переполнения или недопустимых сдвигов.

Для повседневного использования, VecDeque в коллекции есть такие методы, как pop_front_if и pop_back_if. Это позволяет пользователям условно удалять элементы из любого конца очереди, что значительно упрощает логику очереди.

deref_nullptr lint, который перехватывает попытки разыменования нулевых указателей, теперь по умолчанию запрещен. Это очень долгожданное изменение, поскольку оно помогает выявить критические проблемы безопасности во время компиляции, а не во время выполнения. Также были добавлены новые предупреждения, в том числе function_casts_as_integer и const_item_interior_mutations. Это помогает применять лучшие практики и предотвращать мелкие ошибки, связанные с внутренней изменчивостью постоянных элементов.

Переменная среды CARGO_CFG_DEBUG_ASSERTIONS теперь включен в сценариях сборки на основе активного профиля. Это дает сценариям сборки больше контекста о том, как компилируется код. Кроме того, cargo clean теперь поддерживает --workspace флаг, упрощающий очистку больших проектов с несколькими пакетами. Если вы часто анализируете графики зависимостей, cargo tree теперь поддерживает длинные формы для своих --format переменные, что упрощает настройку сложного вывода.

Read more:  Болезнь Брюса Уиллиса говорит, что его жена: фотографии и видео, показывающие, как деменция влияет на актер «Die Hard»

В этой новой версии есть на что посмотреть, и вы будете рады, что обновились. Если у вас уже установлен Rust, вы можете получить обновление прямо сейчас, запустив rustup update stable.

Источник: Ржавчина (1), Ржавчина (2)

2026-01-22 23:42:00


1769143948
#Вышел #Rust #вот #что #нового

Ещё по этой теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.