Выпуск языка программирования Rust 1.58
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликован релиз языка системного программирования Rust 1.58, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Основные новшества:
- В блоках форматирования строк, в дополнение к ранее доступной возможности подстановки явно перечисленных после строки переменных по номеру и имени, реализована возможность подстановки произвольных идентификаторов через добавление в строку выражений "{идентификатор}".
Например:
// Ранее поддерживались конструкции:
println!("Hello, {}!", get_person());
println!("Hello, {0}!", get_person());
println!("Hello, {person}!", person = get_person());
// теперь можно указывать
let person = get_person();
println!("Hello, {person}!");
Идентификаторы также можно указывать непосредственно в параметрах форматирования.
let (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, в том числе стабилизированы методы и реализации типажей:
- Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в функциях:
- Разрешено разыменование указателей "*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), через которые можно обращаться к Win API в программах на языке Rust. Код для поддержки API генерируется динамически из метаданных с описанием API, что позволяет реализовать поддержку не только уже существующих вызовов Win API, но вызовов, которые появятся в будущем. В новой версии добавлена поддержка целевой платформы UWP (Universal Windows Platform), реализованы типажи Handle и Debug.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.rust-lang.org/202...)
- OpenNews: Выпуск языка программирования Rust 1.57
- OpenNews: Третья редакция патчей для ядра Linux с поддержкой языка Rust
- OpenNews: Модераторы сообщества Rust в знак протеста объявили об отставке
- OpenNews: Проект Kerla развивает Linux-совместимое ядро на языке Rust
- OpenNews: Microsoft развивает новый язык программирования на основе Rust
Похожие новости:
- Третья редакция патчей для ядра Linux с поддержкой языка Rust
- Выпуск языка программирования Rust 1.57
- Проект elfshaker развивает систему контроля версий для ELF-файлов
- Модераторы сообщества Rust в знак протеста объявили об отставке
- Выпуск Stratis 3.0, инструментария для управления локальными хранилищами
- Релиз Tokio 1.13.0, платформы для создания асинхронных приложений на языке Rust
- Выпуск crabz 0.7, утилиты для многопоточного сжатия и распаковки, написанной на Rust
- Проект Kerla развивает Linux-совместимое ядро на языке Rust
- Выпуск ncspot, Spotify-клиента на Rust
- Релиз языка программирования Rust 2021 (1.56)
Теги для поиска: #_rust
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:28
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликован релиз языка системного программирования Rust 1.58, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки). Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io. Основные новшества:
windows-sys), через которые можно обращаться к Win API в программах на языке Rust. Код для поддержки API генерируется динамически из метаданных с описанием API, что позволяет реализовать поддержку не только уже существующих вызовов Win API, но вызовов, которые появятся в будущем. В новой версии добавлена поддержка целевой платформы UWP (Universal Windows Platform), реализованы типажи Handle и Debug. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:28
Часовой пояс: UTC + 5