Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

Rust 1.93: Взломайте мир программирования — не пропустите самые важные фишки релиза!

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

Вышла стабильная версия Rust 1.93.0, и она заметно повышает безопасность компилятора, одновременно принося новые важные инструменты для максимальной производительности. Это обновление ясно показывает — язык становится все более зрелым и удобным для реальных проектов.

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

Особенно это пригодится тем, кто работает с большими DNS-записями или сложными рекурсивными DNS-серверами. После апдейта musl были убраны некоторые устаревшие символы совместимости, на которые раньше полагался пакет Rust libc. Исправления появились еще два года назад, так что современные проекты легко перейдут на новую версию без лишних хлопот.

В стандартной библиотеке теперь глобальные аллокаторы могут использовать thread-local storage. Это позволяет использовать std::thread_local! без риска наткнуться на ошибки повторного входа. Если работаете с низкоуровневым оптимизированным кодом, теперь можно добавлять cfg-атрибуты прямо к нужным строкам внутри asm!. Больше не нужно дублировать целые блоки кода для разных платформ и фичей!

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

В релизе закрепили новые 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, не позволяющая разыменовывать нулевой указатель, теперь включена по умолчанию — отличная новость для безопасности: ошибки будут замечены ещё на этапе компиляции. Появились и новые диагностические предупреждения: function_casts_as_integer и const_item_interior_mutations, помогающие избежать неожиданных багов с изменяемыми константами.

Подписывайтесь на рассылку и оставайтесь в курсе всех грандиозных новостей из мира Rust!

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

В этом релизе — действительно масса всего крутого! Обновление уже ждёт вас: просто выполните rustup update stable и оцените все новые возможности Rust 1.93 лично.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: