Выпуск языка программирования Rust 1.73. Аудит RustVMM. Переписывание Binder на Rust
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликован релиз языка программирования общего назначения Rust 1.74, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Основные новшества:
- Добавлена возможность настройки lint-проверок через файл Cargo.toml с манифестом пакетного менеджера. Для определения настроек lint, таких как уровень реагирования (forbid, deny, warn, allow), предложены новые секции "[lints]" и "[workspace.lints]", изменение которых учитывается при принятии решения о пересборке. Например, вместо указания при сборке флагов "-F", "-D", "-W" и "-A" или добавления в код атрибутов "#![forbid(unsafe_code)]" и "#![deny(clippy::enum_glob_use)]" теперь можно использовать в манифесте Cargo:
[lints.rust]
unsafe_code = "forbid"
[lints.clippy]
enum_glob_use = "deny"
- В пакетный менеджер Crate добавлена возможность аутентификации при подключении к репозиторию. В базовую поставку включена поддержка размещения параметров аутентификации в хранилищах учётных данных Linux (на базе libsecret), macOS (Keychain) и Windows (Windows Credential Manager), но система изначально сделана модульной и позволяет организовать работу с различными провайдерами для хранения и генерации токенов, например, подготовлен плагин для использования менеджера паролей 1Password. Аутентификация может запрашиваться репозиторием для любых операций, а не только для подтверждения публикации пакетов.
~/.cargo/config.toml
[registry]
global-credential-providers = ["cargo:token", "cargo:libsecret"]
- Стабилизирована поддержка проекций возвращаемых типов (impl_trait_projections), позволяющая упоминать Self и T::Assoc в возвращаемых типах, таких как "async fn" и "-> impl Trait".
struct Wrapper<'a, T>(&'a T);
// Opaque return types that mention `Self`:
impl Wrapper<'_, ()> {
async fn async_fn() -> Self { /* ... */ }
fn impl_trait() -> impl Iterator { /* ... */ }
}
trait Trait<'a> {
type Assoc;
fn new() -> Self::Assoc;
}
impl Trait<'_> for () {
type Assoc = ();
fn new() {}
}
// Opaque return types that mention an associated type:
impl<'a, T: Trait<'a>> Wrapper<'a, T> {
async fn mk_assoc() -> T::Assoc { /* ... */ }
fn a_few_assocs() -> impl Iterator<Item = T::Assoc> { /* ... */ }
}
- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
- Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в функциях:
- core::num::Saturating
- impl From for std::process::Stdio
- impl From for std::process::Stdio
- impl From for std::process::Child{Stdin, Stdout, Stderr}
- impl From for std::process::Child{Stdin, Stdout, Stderr}
- std::ffi::OsString::from_encoded_bytes_unchecked
- std::ffi::OsString::into_encoded_bytes
- std::ffi::OsStr::from_encoded_bytes_unchecked
- std::ffi::OsStr::as_encoded_bytes
- std::io::Error::other
- impl TryFrom<char> for u16
- impl<T: Clone, const N: usize> From<&[T; N]> for Vec<T>
- impl<T: Clone, const N: usize> From<&mut [T; N]> for Vec<T>
- impl<T, const N: usize> From<[T; N]> for Arc<[T]>
- impl<T, const N: usize> From<[T; N]> for Rc<[T]>
- В компиляторе, инструментарии, стандартной библиотеке и генерируемых исполняемых файлах приложений повышены требования к платформам Apple: для работы теперь требуются как минимум версии
macOS 10.12 Sierra, iOS 10 и tvOS 10, выпущенные в 2016 году.
- Реализован третий уровень поддержки для платформы i686-pc-windows-gnullvm. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
- Реализован второй уровень поддержки целевой платформы loongarch64-unknown-none. Второй уровень поддержки подразумевает гарантию сборки.
Дополнительно можно отметить два события, связанных с языком Rust:
- Фонд OSTIF (Open Source Technology Improvement Fund), созданный с целью усиления защищённости открытых проектов, опубликовал результаты аудита проекта RustVMM, предоставляющего компоненты для создания специфичных для определённых задач гипервизоров и мониторов виртуальных машин (VMM). В разработке проекта участвуют такие компании, как Intel, Alibaba, Amazon, Google, Linaro и Red Hat.
На базе RustVMM развиваются гипервизоры Intel Cloud Hypervisor и Dragonball. Аудит подтвердил высокое качество кодовое базы и использование в архитектуре и реализации приёмов, нацеленных на достижение максимальной безопасности. В ходе аудита было выявлено 6 проблем, не имеющих прямого влияния на безопасность.
- Компания Google представила в списке рассылки разработчиков ядра Linux новую реализацию механизма межпроцессного взаимодействия Binder, переписанную на языке Rust. Переработка выполнена в рамках проекта по усилению защищённости, продвижению приёмов безопасного программирования и повышению эффективности выявления проблем при работе с памятью в Android (около 70% из всех опасных уязвимостей, выявленных в Android, вызваны ошибками при работе с памятью). Реализация Binder на Rust достигла паритета в функциональности с изначальным вариантом на языке Си, проходит все тесты AOSP (Android Open-Source Project) и может использоваться для создания рабочих редакций прошивок. Производительность обеих реализаций находится примерно на одном уровне (отклонения в пределах -1.96% и +1.38%).
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.rust-lang.org/202...)
- OpenNews: В ночных сборках Rust расширены возможности распараллеливания компиляции
- OpenNews: Открытие кода Rust-компилятора Ferrocene
- OpenNews: Проект NGINX опубликовал инструментарий для разработки модулей на языке Rust
- OpenNews: Google переписал на языке Rust прошивку pvmfm, используемую в Android
- OpenNews: Выпуск языка программирования Rust 1.73
Похожие новости:
- В ночных сборках Rust расширены возможности распараллеливания компиляции
- Google представил проект Open Se Cura для создания защищённых программно-аппаратных систем
- В репозитории Crate будет прекращена поддержка неканонических загрузок
- Проект NGINX опубликовал инструментарий для разработки модулей на языке Rust
- Google переписал на языке Rust прошивку pvmfm, используемую в Android
- DNS-сервер Trust-DNS переименован в Hickory и будет задействован в инфраструктуре Let's Encrypt
- Открытие кода Rust-компилятора Ferrocene
- Опубликован Bottlerocket 1.15, дистрибутив на базе изолированных контейнеров
- Выпуск RustPython 0.3, реализации интерпретатора Python на языке Rust
- Разработка браузерного движка Servo переведена в организацию Linux Foundation Europe
Теги для поиска: #_rust
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 14:59
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликован релиз языка программирования общего назначения Rust 1.74, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки). Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. Основные новшества:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 14:59
Часовой пояс: UTC + 5