Выпуск Rust 1.95. Добавление Rust в дисплейный сервер Mir. Анализатор трафика ayaFlow на Rust

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 1312
Зарегистрирован: 20.08.2022

#

Выпуск Rust 1.95. Добавление Rust в дисплейный сервер Mir. Анализатор трафика ayaFlow на Rust
Дата публикации: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, в том числе стабилизированы методы и реализации типажей:
  • 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
    [/url]
Признак "const" применён в функциях:
  • fmt::from_fn
    [/url]
  • ControlFlow::is_break
    [/url]
  • ControlFlow::is_continue
    [/url]
В стабильных версиях инструментария убрана поддержка передачи компилятору спецификаций собственных целевых платформ. Целевые платформы powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos и aarch64-apple-visionos-sim переведены на второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора. Дополнительно можно отметить недавно анонсированные проекты и события, связанные с Rust:
  • Компания 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.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=65230

Жизнь за Нер'зула!

Ответить