Несколько дней назад было объявлено выпуск новой версии популярного языка программирования «Rust 1.72», версия, в которую были добавлены новые функции, а также улучшения, исправления ошибок и различные изменения, направленные на упрощение и плавность процесса создания кода.
Тем, кто не знаком с этим языком программирования, следует знать, что фокусируется на безопасности памяти и предоставляет средства для достижения высокого параллелизма заданий, избегая использования сборщика мусора и среды выполнения (время выполнения сводится к базовой инициализации и обслуживанию стандартной библиотеки).
Методы управления памятью в Rust они избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем которые возникают из-за низкоуровневой обработки памяти, такой как доступ к области памяти после ее освобождения, разыменование нулевых указателей, переполнение буфера и т. д. Для распространения библиотек, предоставления сборок и управления зависимостями проект разрабатывает диспетчер пакетов Cargo.
Основные новые возможности Rust 1.72
В этой новой версии, пришедшей из версии Rust 1.72, один из самые инновационные функции улучшение в полезность элементов, отключенных атрибутами cfg условная компиляция, которая позволяет включить выполнение кода Rust в зависимости от поддерживаются ли определенные функции коробки или работают ли они на определенных платформах.
Раньше элементы, отключенные через cfg, не были видны. для компилятора, но теперь это меняется, поскольку компилятор теперь сохраняет важную информацию, включая имена элементов и условия cfg.. Это позволяет компилятору предоставлять интересную обратную связь, например, подчеркивая недоступность функции из-за необходимости включить определенную функцию блока. Это дает разработчикам более четкое руководство и способствует более эффективному кодированию. Например, это позволяет понять, что какая-то функция недоступна из-за отключения определенных свойств функции в поле.
Еще одно из изменений, которое выделяется в этой новой версии Rust 1.72, заключается в том, что сняты ограничения на время вычисления константных выражений, ранее, чтобы избежать циклов во время компиляции, Rust ограничивал максимальное количество выражений, которые могли быть выполнены во время вычисления константы.
Эта функция вызывала ошибки при компиляции кода, который не соответствовал ограничениям, поэтому в новой версии было решено заменить строгие ограничения с экраном предупреждения, информирующим о постоянных расчетах большой продолжительности. Проверка const_eval_long_running также применяется по умолчанию для обнаружения петель.
В дополнение к этому также отмечается, что Улучшены клиппированные списки, поскольку ряд проверок Clippy перенесен в компилятор Rustc:
- undropped_manually_drops: изменен на с уровнем запрета. При использовании ManuallyDrop внутреннее значение не удаляется автоматически. Вызов std::mem::drop не дает никакого эффекта. Вместо этого этот тест теперь предлагает использовать ManuallyDrop::into_inner в качестве основного параметра.
- инвалид_utf8_in_unchecked: переименован в уровень запрета и уровень предупреждения; недействительный_from_utf8_снято недействительный_from_utf8. Идентифицирует случаи, когда std::str::from_utf8_unchecked и std::str::from_utf8_unchecked_mut используются с недопустимыми литералами UTF-8. Такое использование нарушает требования безопасности и приводит к неопределенному поведению. Этот пух сейчас категорически запрещен.
- инвалид_нан_сравнения: идентифицирует сравнения, включающие f32::NAN или f64::NAN в качестве операндов. Поскольку в NaN отсутствуют значимые сравнения
- valid_reference_casting: выделяет случаи, когда &T становится &mut T без использования преимуществ внутренней изменчивости. Такие действия приводят к немедленному и неопределенному поведению, независимо от того, используется ссылка или нет.
Из другие изменения, которые выделяются новой версии:
- Новая часть API была перенесена в стабильную категорию, включая стабилизированные методы и реализации признаков.
- В функциях используется атрибут const, определяющий возможность использования в любом контексте вместо констант:
- Реализована поддержка третьего уровня для платформ loongarch64-unknown-none*. Третий уровень предполагает базовую поддержку, но без автоматического тестирования, публикации официальных сборок и проверки компилируемости кода.
- В будущем выпуске Rust 1.76 планируется отказаться от поддержки платформ Windows 7, 8 и 8.1 и сделать Windows 10 минимальной версией как для целей компиляции, так и для сборки.
Если вы интересно узнать о нем больше, вы можете проверить детали в по следующей ссылке.
Наконец, для тех, кто Заинтересованы в обновлении с предыдущей версии Rust установленный через rustup, вы можете получить новую версию Rust 1.72.0 с помощью:
rustup update stable