The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

17.04.2026 13:40 (MSK)

Опубликован релиз языка программирования Rust 1.95, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Методы работы с памятью в Rust нацелены на исключение ошибок при манипулировании указателями и защиту от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

Основные новшества:




Дополнительно можно отметить недавно анонсированные проекты и события, связанные с 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.


  1. Главная ссылка к новости (https://blog.rust-lang.org/202...)
  2. OpenNews: Выпуск Rust 1.94. Эксперименты с Rust в ядре FreeBSD. СУБД Turso и САПР vcad на Rust
  3. OpenNews: Google задействовал Rust-библиотеку Hickory в прошивке радиомодуля смартфонов Pixel 10
  4. OpenNews: Компоненты браузера Ladybird начали переписывать на Rust при помощи AI
  5. OpenNews: Выпуск Arti 2.0.0, официальной реализации Tor на языке Rust
  6. OpenNews: Проект Xfce анонсировал композитный сервер Xfwl4, использующий Wayland и Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65230-rust
Ключевые слова: rust, mir, gpu, ebpf, ayaflow
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (48) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:51, 17/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Раст настолько неинтересен, что приходится несколько несвязанных новостей мерджить в одну, чтоб хоть как-то заинтересовать.
     
     
  • 2.2, Аноним (2), 13:58, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Можете подсказать, что будет результатом исполнения кода?

    #include <stdio.h>

    static void loop() {
        while(1){};
    }

    int main() {
        loop();
        return 0;
    }

    void foo() {
        printf("UNREACHABLE\n");
    }

    А будет UNREACHABLE, неожиданно? А потому что даже тут неопределённое поведение: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1528.htm

     
     
  • 3.5, Аноним (2), 14:02, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А будет UNREACHABLE

    Не будет, а может быть. Зависит от компилятора. Но суть ясна.

     
     
  • 4.24, Аноним (24), 14:37, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Т.е эта та самая "переносимость", которой постоянно хвастаются?

    Ну типа "у нас переносимый ассемблер", "у нас 100500 платформ и компиляторов" и так далее.
    Что больше похоже на маркетинговую замануху.

    Интересно, весьма интересно получается.


     
  • 3.9, Аноним (9), 14:07, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А все фанаты Rust пишут такой заведомо бессмысленный код? Если да, то неудивительно, почему боров так часто бьет их по рукам.
     
  • 3.12, Аноним (12), 14:12, 17/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.14, Аноним (12), 14:18, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если бы я был вместо компилятора, я бы вообще заменил выкинул весь этот бред и заменил на int main(){}. А все дальнейшие вопросы к тому кто написал такой бред.
     
     
  • 4.40, Аноним (40), 15:05, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Языки программирования, особенно низкоуровневые, должны быть устроены по принципу what you see is what you get. Не обязательно настолько буквально, как это пытается делать Zig, но у тебя должна быть возможность просто глядя на код дедуктивно прийти к пониманию его поведения (вне зависимости от трансформаций, которые с ним сделают оптимизации компилятора) - и должна быть возможность понять поведение кода используя только local reasoning. Если написал пустой бесконечный цикл, значит должен случиться бессмысленный прогрев вселенной, потому что это ровно то, о чем ты попросил и тут нельзя ничего соптимизировать, т.к. оптимизации не должны менять поведение, а ожидаемое поведение - прогрев вселенной. Если ты читаешь код на совершенно стандартном подмножестве языка, безо всяких всяких указаний here be dragons (unsafe) и получаешь какую-то чушь в качестве результата, это не особо хорошо, скажем фигурально, ни для разума, ни для психики.
     
  • 3.17, pashev.ru (?), 14:21, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не будет )
     
  • 3.27, Анон1110м (?), 14:42, 17/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.29, eugener (ok), 14:45, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    С gcc уходит в loop. "UNREACHABLE" не выдаёт.
     
     
  • 4.31, Аноним (2), 14:52, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуйте clang ниже 11 версии.
     
  • 3.33, Аноним (1), 14:57, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ХЗ с чего ты это взял, но у меня просто запустился бесконечный цикл. Собирал gcc.
     
     
  • 4.38, eugener (ok), 15:02, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ИИ мне уже разъяснил:

    --- цитата ---
    Тот самый «UNREACHABLE» — это визитная карточка Clang (до версии 11).
    Его логика была доведена до абсолюта:

        Цикл while(1){} без побочных эффектов — это UB.
        Компилятор оптимизирует код, исходя из того, что UB не существует.
        Раз это UB, значит, этот участок кода недостижим (unreachable) или просто удаляется.
        Clang удалял тело функции loop(), и она становилась «пустой» в бинарном коде. В некоторых случаях выполнение просто «проваливалось» (fallthrough) в следующую по порядку функцию в памяти, которой оказывалась foo().
    --- конец цитаты ---

    gcc такой фигнёй не страдал.

     
  • 3.37, Совершенно другой аноним (?), 15:02, 17/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.46, Аноним (46), 15:19, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Могу подсказать обновить методичку. C++26 принял "Trivial infinite loops are not Undefined Behavior" http://wg21.link/P2809r3
     
  • 2.3, Аноним (3), 13:59, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "настолько неинтересен" что ты прибежал первым написать об этом.
    Это же классическое "мне настолько по**й, что я не могу об этом молчать!!" 😂

    Тут скорее мало кому интересен какой-то Mir отдельной новостью.
    Да и местных kлованов горела пятая точка, когда новостей было много.

     
  • 2.8, Аноним (12), 14:04, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Раст это наступившее настоящее, пора бы уже это признать! Ничего скоро стадия отрицания закончится;)
     
  • 2.10, Соль земли2 (?), 14:09, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если тебе неинтересен Rust, то зачем ты пишешь сюда? Высказать своё бесполезное мнение?
     
  • 2.42, Аноним (42), 15:10, 17/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.4, Аноним (4), 14:01, 17/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >возможность указания выражений "if let" внутри блоков "match" для создания условных сопоставлений по шаблону

    Как же плохо это выглядит на таком одиночном примере, а представляете, как это будет при множестве блоков и разных условий?

     
     
  • 2.6, aname (ok), 14:03, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Кого это когда интересовало- то?
     
  • 2.7, Аноним (3), 14:04, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Как же плохо это выглядит

    "Плохо" это оценочное суждение.
    Есть ли какие-то аргументы "почему"?
    Или просто "мне не нравится потому что")?

     
     
  • 3.13, Аноним (13), 14:16, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Знаете что такое регулярные выражения? Rust идет ровно по их шагам - проще переписать, чем разбираться с проблемой.
     
     
  • 4.15, Аноним (3), 14:21, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Хм.. сравнение если честно так себе.
    Тут есть четкое деление кода на логические части.

    С другой стороны, а покажи-ка мне серьезный проект в котором не используются "регулярные выражения"))

     
     
  • 5.18, Аноним (12), 14:26, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Тоже не понял, при чем тут регулярки?;) А так да, Регулярки для некоторых задач это вообще то что доктор прописал!)
     
  • 5.19, Аноним (19), 14:27, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >покажи-ка мне серьезный проект в котором не используются "регулярные выражения"

    Я где-то говорил, что регулярки это плохо? Плохо, что Rust из-за обилия сахара становится сплошной регуляркой.

     
     
  • 6.21, Аноним (21), 14:30, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Я где-то говорил, что регулярки это плохо?

    "проще переписать, чем разбираться с проблемой" не звучит как ʼхорошоʼ.

    > Плохо, что Rust из-за обилия сахара становится сплошной регуляркой.

    Вкусовщина.
    Я не вижу плохой читаемости в текущих функциях.
    Возможно это дело привычки.

    Но ты можешь предложить "как надо".
    Боюсь будет или более многословно, или более запутано.

     
  • 6.22, Аноним (12), 14:33, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Никто вас не заставляет кушать весь этот сахар, если он вам не по душе. Используйте только то что считаете нужны! Однако если присоединились к проекту где это используется сахар  - то что называется будьте любезны:) Не вижу проблем. Более того вы даже можете забить на лайфтаймы если они вас так бесят и не использовать ссылки вообще! В этом случае просто используйте механизм владения и забудьте про заимствование, да придется быть местами многословным, но главное что даже тут у вас будет выбор!
     
     
  • 7.25, Аноним (25), 14:38, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Никто вас не заставляет кушать весь этот сахар, если он вам не по душе.

    Эм, вообще-то заставляет. Их в любом случае нужно держать в голове, если работаешь над каким-то проектом не один.

    >Более того вы даже можете забить на лайфтаймы если они вас так бесят и не использовать ссылки вообще!

    Да, знаю, используйте .clone().

     
     
  • 8.28, Аноним (12), 14:44, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Можно таже посмотоеть в сторону языка Hylo Там вообще не надо будет забивать го... текст свёрнут, показать
     
  • 5.20, Аноним (20), 14:28, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    По такой логике любой проект на расте не может быт серьёзным, потому что у него вместо регулярок какая-то задупа. Я уже не говорю, что re2 пойдёт с оговорками, даже а питоне вменяемые. Но не в расте.
     
  • 2.16, laindono (ok), 14:21, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Покажи, как должно выглядеть.
     
     
  • 3.23, Аноним (23), 14:34, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Никак не должно. Разрабам Rust давно пора остановиться с добавлением сахара.
     
  • 3.34, Аноним (34), 14:59, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем спрашивать если можно показать, и пускай мимокрокодилы составят свое мнение.

    Было:
            match value {
                Some(x) => {
                    if let Ok(y) = compute(x) {
                        println!("{}, {}", x, y);
                    }
                }
                _ => {}
            }
    Стало:
            match value {
                Some(x) if let Ok(y) = compute(x) => {
                    println!("{}, {}", x, y);
                }
                _ => {}
            }

     
  • 2.44, Аноним (42), 15:13, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Как же плохо это выглядит

    Фраза, котора с головой выдаёт человека, знающего только один язык программирования.
    Если изучить несколько разных языков, сама мысль о том, что какой-то код "плохо выглядит" просто не придёт в голову.

     

  • 1.11, Аноним (11), 14:10, 17/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Что там с динамическими библиотеками, всё ещё не умеет?
     
     
  • 2.30, Аноним (30), 14:47, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А Раста идеология статической компоновки всех библиотек.

    >всё ещё не умеет?

    Не хотят. А не, не умеет.

     
  • 2.32, alex13sh (?), 14:53, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В теории, давно умеет. А на практике дл сих пор нет стабильного ABI также как и у C++.
    Все мы вынуждены использовать C ABI и ffi
     
     
  • 3.35, Аноним (12), 14:59, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это одна из причин почему язык Си никогда не умрет;)
     
     
  • 4.45, Аноним (45), 15:16, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Если от сишки останется только ffi то это будет уже гроб-гроб-кладбище.

    Думаю через пару лет будет стабилизация спецификации (спасибо ферроцену).
    К тому времени дополируют оставшиеся шероховатости.
    Может тогда будет запрос на стабильное АБИ.

     
  • 3.39, Аноним (39), 15:04, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что говоришь? У раста нет стабильного ABI? Значит самое время внедрять раст в критические системы!
     
     
  • 4.43, Аноним (43), 15:12, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    У С++ тоже нет.
    А операционки на нем пишут. Удивительно, правда?
    И в эмбедедщине используют.

    Наверное наяривание на ABI это просто воздуханство?

     
     
  • 5.48, Аноним (23), 15:28, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >У С++ тоже нет. А операционки на нем пишут.

    Благодаря C ABI.

     
  • 4.47, Аноним (40), 15:21, 17/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем тебе стабильный ABI раста, когда есть C ABI и его за глаза хватает?

    Rust, если что, даже в планах стабильного ABI не имеет, чтобы оставлять себе пространство оптимизировать memory layout у структур (выставлять паддинги, сортировать поля и вот это все, чем на практике в коде на C руками занимаются только два с половиной землекопа).

    Есть отдельные телодвижения, чтобы когда-нибудь сделать какой-то более Rust-ориентированный стабильный ABI, который бы поддерживался компилятором ровно в таком же виде, в котором он сейчас поддерживает C ABI, но тоже как бы особо не горит, т.к. C ABI хватает.

     

  • 1.26, ZeroTwo (ok), 14:41, 17/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >[dependencies]
    >aya = "0.13"

    Ожидаемо уже из названия. Год назад писал "firewall" (скорее PoC) на нём - офигенная штука.

     
  • 1.36, asand3r (ok), 15:01, 17/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    За ayaFlow Роскомнадзор им говорит большие спасибо.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру