Дата публикации:Fri, 17 Apr 2026 13:40:56 +0300
Опубликован релиз языка программирования Rust 1.95, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust нацелены на исключение ошибок при манипулировании указателями и защиту от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Основные новшества:
- Добавлен макрос "cfg_select!", который может применяться вместо пакета "cfg-if" для обработки нескольких условий компиляции в стиле блока "match", без определения цепочки условных выражений с конструкцией "#[cfg]". cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* не-unix, 32-bit */ } } _ => { fn foo() { /* не unix и не 32-bit */ } } } Стабилизирована возможность указания выражений "if let" внутри блоков "match" для создания условных сопоставлений по шаблону. Ранее поддержка указания нескольких выражений "let" с использованием оператора "&&" была стабилизирована для блоков "if" и "while". match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} } Стабилизирована поддержка inline-ассемблера для архитектур PowerPC и PowerPC64. В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
- [/url]
MaybeUninit<[T; N]>: From<[MaybeUninit<T>; N]> - [/url]
MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>; N]> - [/url]
MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>]> - [/url]
MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>; N]> - [/url]
MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>]> - [/url]
[MaybeUninit<T>; N]: From<MaybeUninit<[T; N]> - [/url]
Cell<[T; N]>: AsRef<[Cell<T>; N]> - [/url]
Cell<[T; N]>: AsRef<[Cell<T>]> - [/url]
Cell<[T]>: AsRef<[Cell<T>]> - [/url]
bool: TryFrom<{integer}> - [/url]
AtomicPtr::update - [/url]
AtomicPtr::try_update - [/url]
AtomicBool::update - [/url]
AtomicBool::try_update - [/url]
AtomicIn::update - [/url]
AtomicIn::try_update - [/url]
AtomicUn::update - [/url]
AtomicUn::try_update - [/url]
cfg_select! - [/url]
mod core::range - [/url]
core::range::RangeInclusive - [/url]
core::range::RangeInclusiveIter - [/url]
core::hint::cold_path - [/url]
<*const T>::as_ref_unchecked - [/url]
<*mut T>::as_ref_unchecked - [/url]
<*mut T>::as_mut_unchecked - [/url]
Vec::push_mut - [/url]
Vec::insert_mut - [/url]
VecDeque::push_front_mut - [/url]
VecDeque::push_back_mut - [/url]
VecDeque::insert_mut - [/url]
LinkedList::push_front_mut - [/url]
LinkedList::push_back_mut - [/url]
Layout::dangling_ptr - [/url]
Layout::repeat - [/url]
Layout::repeat_packed - [/url]
Layout::extend_packed
- Компания Canonical представила дисплейный сервер Mir 2.26, предоставляющий набор библиотек для создания композитных серверов на базе протокола Wayland и включающий типовую функциональность оконных менеджеров и дисплейных серверов. Mir задействован в таких проектах, как композитный менеджер Miracle, оболочка для интернет-киосков Ubuntu Frame и пользовательское окружение Miriway. Новый выпуск примечателен добавлением возможности разработки компонентов на языке Rust. На Rust реализована альтернативная подсистема управления вводом evdev-rs и начата работа над написанным на Rust фронтэндом wayland-rs для Wayland. Из не связанных с Rust изменений в Mir отмечена поддержка Wayland-протоколов ext_image_copy_capture_v1 и input-triggers.
Опубликован первый релиз анализатора трафика ayaFlow, написанного на Rust и использующего подсистему ядра Linux eBPF для перехвата сетевых пакетов (IPv4/TCP/UDP) и кадров Ethernet с минимальным влиянием на производительность. Поддерживается глубокое инспектирование протоколов прикладного уровня (L7), например, извлечение TLS SNI и DNS-запросов при анализе шифрованного трафика. Система поддерживает ведение таблицы с текущим состоянием соединений в формате DashMap, сохранение истории в SQLite и отдачу статистики через REST API для Prometheus. Реализована/a> возможность создания многопоточных приложений на языке Rust, использующих функции std::thread и выполняемых на стороне GPU.
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=65230