Частая дилемма в Rust: Tokio отлично подходит для async I/O, Rayon для тяжёлых CPU-задач. Но как связать их так, чтобы не заблокировать async runtime? 🦀
Команда Tantivy, поискового движка на Rust, показала, как решила это в продакшене.
Проблема:
Tokio-задачи не должны блокироваться. Тяжёлая CPU-работа может подвесить весь async runtime.
Rayon-потоки не понимают async. Внутри rayon thread нельзя просто взять и сделать
Передать результат обратно между этими мирами тоже не так очевидно.
Решение - мост через `oneshot`-канал.
Tokio запускает задачу и ждёт результат из
Rayon выполняет CPU-работу в своём пуле потоков.
Когда работа завершена, Rayon отправляет результат обратно через канал.
Tokio продолжает выполнение, при этом executor всё это время не блокировался.
Очень полезный паттерн для всех, кто пишет async-код на Rust.
🔗 reddit.com/r/rust/comments/1ulo7pr
Команда Tantivy, поискового движка на Rust, показала, как решила это в продакшене.
Проблема:
Tokio-задачи не должны блокироваться. Тяжёлая CPU-работа может подвесить весь async runtime.
Rayon-потоки не понимают async. Внутри rayon thread нельзя просто взять и сделать
.await.Передать результат обратно между этими мирами тоже не так очевидно.
Решение - мост через `oneshot`-канал.
Tokio запускает задачу и ждёт результат из
oneshot.Rayon выполняет CPU-работу в своём пуле потоков.
Когда работа завершена, Rayon отправляет результат обратно через канал.
Tokio продолжает выполнение, при этом executor всё это время не блокировался.
Очень полезный паттерн для всех, кто пишет async-код на Rust.
🔗 reddit.com/r/rust/comments/1ulo7pr
👍33❤12🔥10
Rust классный. У него сильная модель памяти, мощная типизация, zero-cost abstractions и нормальная история с безопасностью без GC.
Но мем «переписать всё на Rust» давно пора закопать.
Язык не выбирают потому, что он модный. Его выбирают потому, что он подходит под задачу.
Для системного кода, инфраструктуры, embedded, CLI, высоконагруженных сервисов и мест, где цена ошибки высокая, Rust может быть отличным выбором.
Но для простого CRUD, быстрых MVP, внутренних админок или команды без Rust-экспертизы он легко превращается не в преимущество, а в налог на разработку.
Хороший инженер не спрашивает: «на чём хайповее написать?»
Он спрашивает:
• какие ограничения у задачи
• какая команда будет это поддерживать
• насколько важны производительность и безопасность памяти
• сколько стоит скорость разработки
• что проще дебажить и развивать через год
Rust - мощный инструмент. Но инструмент, а не религия.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45💊25❤9👏7🖕4🥱3💯2
LLM уже находят реальные memory safety баги в Rust-коде.
И, что неожиданно, это работает очень хорошо.
Сергей Давыдов, руководитель Rust Secure Code Working Group, использовал GPT-5.5 и Claude Opus для аудита unsafe-блоков в популярных Rust-крейтах.
В итоге нашлись десятки реальных багов:
• use-after-free
• чтение за пределами буфера
• data races
• неправильные реализации Send / Sync
Все находки проверялись через miri, чтобы убрать ложные срабатывания.
Почему в Rust это работает лучше, чем в C?
• unsafe явно помечен и изолирован, поэтому LLM сразу понимает, где искать
• miri может точно подтвердить, настоящий баг или нет
• не нужно отслеживать data flow по всей кодовой базе, как часто бывает в C
Получается, дизайн Rust случайно сделал его почти идеальным языком для LLM-аудита безопасности.
Стоит прочитать всем, кто думает про AI в security tooling.
https://gist.github.com/Shnatsel/eb0a4be79a0657e4eb67c4f085f991bc
https://shnatsel.medium.com/the-unreasonable-effectiveness-of-llms-for-auditing-rust-code-d4df8bf0afd3
#Rust #RustLang #MemorySafety #Security #LLM
И, что неожиданно, это работает очень хорошо.
Сергей Давыдов, руководитель Rust Secure Code Working Group, использовал GPT-5.5 и Claude Opus для аудита unsafe-блоков в популярных Rust-крейтах.
В итоге нашлись десятки реальных багов:
• use-after-free
• чтение за пределами буфера
• data races
• неправильные реализации Send / Sync
Все находки проверялись через miri, чтобы убрать ложные срабатывания.
Почему в Rust это работает лучше, чем в C?
• unsafe явно помечен и изолирован, поэтому LLM сразу понимает, где искать
• miri может точно подтвердить, настоящий баг или нет
• не нужно отслеживать data flow по всей кодовой базе, как часто бывает в C
Получается, дизайн Rust случайно сделал его почти идеальным языком для LLM-аудита безопасности.
Стоит прочитать всем, кто думает про AI в security tooling.
https://gist.github.com/Shnatsel/eb0a4be79a0657e4eb67c4f085f991bc
https://shnatsel.medium.com/the-unreasonable-effectiveness-of-llms-for-auditing-rust-code-d4df8bf0afd3
#Rust #RustLang #MemorySafety #Security #LLM
👍35🤔8💊7🔥5
Amazon Kani для Rust получил академическую статью, принятую на ASE 2026. 🦀
Kani пытается формально доказать корректность Rust-кода математически.
Что умеет:
* доказывать отсутствие panic, overflow и нарушений memory safety
* проверять, что `unsafe`-код действительно безопасен
* гонять 16 000+ harness’ов на каждый commit в Rust standard library
* находить баги, которые раньше не видели в промышленных Rust-проектах
Главное отличие простое:
fuzzing пытается найти баги через множество входных данных.
Kani проверяет свойства кода формально, в рамках заданного harness’а.
Kani интегрирован в CI стандартной библиотеки Rust.
Каждый commit в
🔗 arxiv.org/abs/2607.01504
Kani пытается формально доказать корректность Rust-кода математически.
Что умеет:
* доказывать отсутствие panic, overflow и нарушений memory safety
* проверять, что `unsafe`-код действительно безопасен
* гонять 16 000+ harness’ов на каждый commit в Rust standard library
* находить баги, которые раньше не видели в промышленных Rust-проектах
Главное отличие простое:
fuzzing пытается найти баги через множество входных данных.
Kani проверяет свойства кода формально, в рамках заданного harness’а.
Kani интегрирован в CI стандартной библиотеки Rust.
Каждый commit в
std проходит формальную проверку.🔗 arxiv.org/abs/2607.01504
❤18👍11🔥9👏2
Borrowed & Owned
Новый open-source каталог для изучения Rust.
Внутри собраны книги, видео, курсы, репозитории, блоги и другие материалы по Rust.
Что есть:
• поиск и фильтры
• learning paths
• категории и теги
• страницы отдельных ресурсов
• starter kits для быстрого старта
• changelog новых материалов
• dark / light theme
• добавление ресурсов через GitHub
По сути, аккуратная база знаний для тех, кто учит Rust и не хочет тонуть в случайных ссылках.
https://github.com/panditdhamdhere/borrowed_and_owned
Новый open-source каталог для изучения Rust.
Внутри собраны книги, видео, курсы, репозитории, блоги и другие материалы по Rust.
Что есть:
• поиск и фильтры
• learning paths
• категории и теги
• страницы отдельных ресурсов
• starter kits для быстрого старта
• changelog новых материалов
• dark / light theme
• добавление ресурсов через GitHub
По сути, аккуратная база знаний для тех, кто учит Rust и не хочет тонуть в случайных ссылках.
https://github.com/panditdhamdhere/borrowed_and_owned
👍17🔥5🫡3👏1