В этой статье вы прочитаете что нового в новой версии языка программирования Rust 1.58, думаю всем любителем этого языка будет интересно и полезно.
Также можете почитать новость «Что нового в новом релизе языка Ruby 3.1.0», возможно тоже заинтересует.
Новое обновление Rust 1.58:
Опубликован релиз языка программирования общего назначения Rust 1.58, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation.
Что нового в Rust 1.58:
- В блоках форматирования строк, в дополнение к ранее доступной возможности подстановки явно перечисленных после строки переменных по номеру и имени, реализована возможность подстановки произвольных идентификаторов через добавление в строку выражений «{идентификатор}».
Например:
12345678// Ранее поддерживались конструкции:println!("Hello, {}!", get_person());println!("Hello, {0}!", get_person());println!("Hello, {person}!", person = get_person());// теперь можно указыватьlet person = get_person();println!("Hello, {person}!");
Идентификаторы также можно указывать непосредственно в параметрах форматирования.
1234let (width, precision) = get_format();for (name, score) in get_scores() {println!("{name}: {score:width$.precision$}");}
Новая подстановка работает во всех макросах, поддерживающих определение формата строки, за исключением макроса «panic!» в версиях языка Rust 2015 и 2018, в которых panic!(«{ident}») обрабатывается как обычная строка (в Rust 2021 подстановка срабатывает). - Изменено поведение структуры std::process::Command на платформе Windows, которая при выполнении команд из соображений безопасности больше не ищет исполняемые файлы в текущем каталоге. Текущий каталог исключён так как может быть использован для организации выполнения кода злоумышленника в случае запуска программ в не заслуживающих доверия каталогах (CVE-2021-3013). Новая логика определения исполняемых файлов подразумевает поиск в каталогах Rust, в каталоге приложения, системном каталоге Windows и каталогах, указанных в переменной окружения PATH.
- В стандартной библиотеке расширено число функций, помеченных «#[must_use]» для вывода предупреждения в случае игнорирования возвращаемого значения, что помогает выявить ошибки, вызванные предположением, что функция изменит значения, а не вернёт новое значение.
- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
Metadata::is_symlink
Path::is_symlink
{integer}::saturating_div
Option::unwrap_unchecked
Result::unwrap_unchecked
Result::unwrap_err_unchecked
- Признак «const», определяющий возможность использования в любом контексте вместо констант, применён в функциях:
Duration::new
Duration::checked_add
Duration::saturating_add
Duration::checked_sub
Duration::saturating_sub
Duration::checked_mul
Duration::saturating_mul
Duration::checked_div
- Разрешено разыменование указателей «*const T» в контекстах «const».
- В пакетном менеджере Cargo в метаданные пакета добавлено поле rust_version, а в команду «cargo install» добавлена опция «—message-format».
- В компиляторе реализована поддержка механизма защиты CFI (Control Flow Integrity), добавляющего перед каждым косвенным вызовом функции проверки для выявления некоторых форм неопределённого поведения, которые потенциально могут привести к нарушению нормального порядка выполнения (control flow) в результате применения эксплоитов, изменяющих хранимые в памяти указатели на функции.
- В компиляторе добавлена поддержка 5 и 6 версии формата coverage-сопоставлений LLVM, используемого для оценки охвата кода при тестировании.
- В компиляторе требования к минимальной версии LLVM подняты до LLVM 12.
- Реализован третий уровень поддержки для платформы x86_64-unknown-none. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
Дополнительно можно отметить публикацию компанией Microsoft выпуска библиотек Rust for Windows 0.30, позволяющих использовать язык Rust для разработки приложений для ОС Windows. В набор входят два crate-пакета (windows и
windows-sys), через которые можно обращаться к WinAPI в программах на языке Rust. Код для поддержки API генерируется динамически из метаданных с описанием API, что позволяет реализовать поддержку не только уже существующих вызовов WinAPI, но вызовов, которые появятся в будущем. В новой версии добавлена поддержка целевой платформы UWP (Universal Windows Platform), реализованы типажи Handle и Debug.
Вывод:
В этой новости вы прочитали что нового в новом релизе языка программирования Rust 1.58, надеюсь вам было это полезно и самое главное интересно, вы узнали что то полезное для себя.
Источник: OpenNet