Обновить
256K+

Rust *

Мультипарадигмальный компилируемый язык

166,22
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

OfficeAI — виртуальный офис для ваших AI-агентов

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.3K

Настольное приложение, которое превращает AI-агентов в сотрудников изометрического офиса. Один взгляд — и видно, кто работает, кто думает, а кто зашёл на кухню за кофе. Это пет-проект, сделанный для фана: эксперимент с визуализацией работы нескольких AI-агентов одновременно, без коммерческих амбиций и без планов превращать его в продукт.

Читать далее

Новости

Вы неправильно используете clone() в Rust

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7K

clone() в Rust часто появляется в коде в тот момент, когда borrow checker снова «мешает просто дописать фичу». Компилятор успокаивается, задача закрывается, но в проекте постепенно накапливаются лишние копирования, аллокации и API, которые требуют владения там, где хватило бы ссылки. В статье разберём типичные места, где clone() используют как затычку: от Vec и String до замыканий, HashMap и многопоточного кода.

Читать далее

Zed 1.0: эпоха Electron-редакторов — всё

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели23K

Вчера вышел Zed 1.0. Пять лет работы, миллион с лишним строк на Rust, публичная превьюшка, которой ежедневно пользовались сотни тысяч разработчиков, и вот команда Zed Industries во главе с Натаном Собо запостила релиз 29 апреля 2026 года. Я лет пятнадцать живу в IDE от JetBrains. Пробовал VS Code. Пробовал Cursor. Гонял code-server на удалённой виртуалке. Ничего не приживалось. Zed прижился, и релиз 1.0 — нормальный повод объяснить, почему.

Если коротко: больше десяти лет любой «новый» редактор кода — это всё тот же продукт в новой обёртке. Обёртка зависит от того, что продают сегодня: AI, коллаборация, темы, новый вендор. А под обёрткой Electron. Тот же Chromium на каждое окно, тот же JavaScript на критическом пути исполнения, тот же RSS, к обеду уходящий в гигабайты. Sublime Text держал планку нативных редакторов все 2010-е, но это был закрытый продукт одного автора, без нормальной коллаборации и без AI истории. Zed стал первым за последние десять лет убедительным опенсорс-редактором с GPU-ускорением и AI на борту, который пересобрали с нуля и без всякого браузера под капотом. С релизом 1.0 эта ставка наконец сыграла.

Читать далее

Как использовать Rust внутри приложений на .NET MAUI

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.1K

Когда производительность начинает иметь значение

По производительности Rust находится в той же лиге, что и C++, но с заметно более дружелюбной моделью безопасности. Возможно, вы уже слышали о командах, которые постепенно переходят на Rust, заменяя существующий код. А если вам уже приходилось бороться с лагами от GC или пытаться сделать плавную анимацию, отсутствие сборщика мусора начинает выглядеть особенно заманчиво.

Но можно ли сделать так, чтобы использовать Rust внутри приложения .NET для Android, iOS, MacCatalyst и Windows было действительно удобно?

Читать далее

OptimaOS: архитектура Rust-ядра, которое загружается на реальном железе

Уровень сложностиСложный
Время на прочтение8 мин
Охват и читатели7.8K

Центральная идея: одно ядро, runtime-профили

Проблема, которую решает OptimaOS — фрагментация через форкинг. Android — форк Linux. Embedded-дистрибутивы — форки с кастомными патчами под каждый SoC. AI-стеки — отдельные кодовые базы. Каждый форк — это отдельный security-аудит, отдельная команда и свой накапливающийся регресс.

Читать далее

YAKE! вместо нейросети: как мы заменили 600 МБ ONNX-реранкера на 400 строк статистики

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели13K

В Yttri мы изначально использовали ONNX-реранкер bge-reranker-v2-m3 для RAG-поиска. Качество было хорошим, но цена для local-first desktop-приложения оказалась слишком высокой: около 600 МБ модели, до 1.8 ГБ RAM в пике и ощутимая нагрузка на CPU.

В статье разбираю, как мы заменили тяжёлый нейросетевой реранкер на собственную реализацию YAKE! на Rust: без модели, без прогрева, без внешних сервисов и с латентностью порядка микросекунд.

Показываю механику алгоритма, интеграцию в RAG, автотегирование, ограничения подхода и главный архитектурный вывод: не каждая AI-задача требует ещё одной нейросети. Иногда лучший AI-компонент - это тот, который удалось удалить.

Читать далее

Ржавый ассемблер

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели10K

При написании высокопроизводительных приложений на Расте иногда возникает необходимость проанализировать машинный код на уровне инструкций ассемблера, под катом мы возьмём несложный пример и проанализируем во что компилируется код на Расте и как можно повысить производительность.

Окунуться в небезопасный код

Как я экономлю 80% контекста нейросетей при работе с логами

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.6K

Разаработанная фоновая утилита позволяет производить вставку сжатых логов с абсолютной прозрачностью для восприятия AI агентами. В статье описал свой путь к оптимизации сжатия до 80%.

Читать далее

Лицензии уходят, музыка остаётся: как я превратил тему для музыкального клиента в runtime-аддон с блекджеком и WASM

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.6K

Около года назад моё желание кастомизировать десктопный клиент популярного музыкального сервиса привело меня в некое сообщество. Всё началось с попытки восстановить заброшенную тему «Blurity» после очередного обновления Electron-хоста, которое сломало все селекторы. Но проект быстро перерос рамки обычных правок CSS.

В этой статье я расскажу, как ChromaSync эволюционировал из простого визуального патча в полноценную инженерную систему — runtime-аддон со сложной архитектурой. Мы разберем «анатомию» плеера, создание декларативной системы из 70+ настроек и перенос тяжелой математики аудиореактивных эффектов в изолированное ядро на WASM. Это история о том, как 700 строк JavaScript превратились в 10 000, а обычная «разукрашка» — в оптимизированную экосистему, умеющую балансировать между визуальной насыщенностью и производительностью системы.

Читать далее

Что если собирать агентов как dbt-проект?

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8.3K

Что делать когда существующие инструменты бесят? Правильно, писать свои! Рассказываю про декларативный фреймворк, созданный, чтобы сделать процесс построения мультиагентных систем приятным. Или как минимум необычным для всех, кроме дата инженеров.

Читать далее

Приложение real-time face swap на чистом Rust: ONNX Runtime, lock-free потоки и 60 кадров в секунду

Время на прочтение3 мин
Охват и читатели5.1K

Большинство инструментов для замены лиц это Python-скрипты, склеенные из PyTorch, OpenCV и надежды. Они работают, но тащат за собой гигабайты зависимостей, требуют правильно настроенного CUDA и разваливаются в тот момент, когда ты пытаешься запустить их в реальном времени.

Мне стало интересно: можно ли собрать весь пайплайн на чистом Rust? Без Python. Без PyTorch. Без обёрток. Один бинарник, который скачал, распаковал и запустил.

Оказалось, можно. 60 fps на веб-камере.

Пайплайн

На каждом кадре последовательно отрабатывают четыре нейросети.

RetinaFace находит лица и извлекает пять ключевых точек. ArcFace вычисляет 512-мерный эмбеддинг исходного лица. InSwapper принимает регион целевого лица и эмбеддинг источника, на выходе отдаёт заменённое лицо. GFPGAN опционально улучшает результат для более высокого качества.

Все четыре модели работают через ONNX Runtime. Никаких кастомных CUDA-ядер, никакого оверхеда фреймворков. Тензор на вход, тензор на выход.

Архитектура потоков

Три потока, ноль блокировок на горячем пути.

Поток захвата получает кадры с веб-камеры через nokhwa и публикует их через ArcSwap. Поток пайплайна подхватывает новые кадры, прогоняет инференс и публикует обработанные кадры через второй ArcSwap. Поток UI читает актуальный буфер и рендерит через egui.

Никаких мьютексов на данных кадра. Никаких каналов. Никакого async. Только атомарные счётчики поколений и lock-free замена указателей.

Структуры разделяемого состояния занимают ровно по 64 байта каждая и выровнены по кэш-линиям, чтобы исключить false sharing между ядрами. Это проверяется compile-time ассертами.

Читать далее

Rust 1.95.0: макрос cfg_select!, if-let guards в match-выражениях

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.8K

Команда Rust рада объявить о новом выпуске Rust 1.95.0. Rust — это язык программирования, который дает каждому возможность создавать надежное и эффективное программное обеспечение.

Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1.95.0 командой:

$ rustup update stable

Если у вас еще не установлен Rust, вы можете получить rustup на соответствующей странице нашего сайта, а также ознакомиться с подробными примечаниями к выпуску 1.95.0.

Если вы хотите помочь нам, тестируя будущие релизы, попробуйте локально переключиться на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте о любых найденных ошибках!

Что вошло в стабильный 1.95.0

Rust 1.94.0: метод array_windows у массива, ключ include в конфигурационных файлах, поддержка TOML 1.1

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.1K

Команда Rust рада объявить о новом выпуске Rust 1.94.0. Rust — это язык программирования, который дает каждому возможность создавать надежное и эффективное программное обеспечение.

Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1.94.0 командой:

$ rustup update stable

Если у вас еще не установлен Rust, вы можете получить rustup на соответствующей странице нашего сайта, а также ознакомиться с подробными примечаниями к выпуску 1.94.0.

Если вы хотите помочь нам, тестируя будущие релизы, попробуйте локально переключиться на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте о любых найденных ошибках!

Что вошло в стабильный 1.94.0

Ближайшие события

Мой 14-летний путь отказа от ORM: череда инсайтов, приведшая к созданию SQL-First кодогенератора для PostgreSQL

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели14K

История о том, как я выпустил популярный ORM в 2012 году… потом похоронил его… потом осознал, что база данных должна быть единственным источником правды. И к чему это привело.

Читать далее

Почему баг в imageproc потребовал изменения API в image-rs

Время на прочтение5 мин
Охват и читатели8.3K

Иногда баг оказывается не ошибкой реализации, а ограничением API. Разбираем кейс из imageproc и image-rs.

Почему фикс оказался невозможен без изменения контракта библиотеки.

Разбор бага и изменения API

Как написать собственную версию Traceroute

Время на прочтение13 мин
Охват и читатели11K

Я никогда не понимал, как именно traceroute обнаруживает каждый сетевой переход. Оказывается, всё дело в хитром трюке с TTL и примерно в 80 строках на Rust.

Читать далее

Как Rust реализует трейт-объекты и почему dyn Trait медленнее дженериков

Время на прочтение11 мин
Охват и читатели9.6K

Спросите разработчика: «Почему dyn Trait медленнее дженериков?», в 9 из 10 случаях услышите: «Потому что косвенный вызов через vtable». Один дополнительный переход по указателю, промах по кешу, вот и вся разница. Звучит убедительно, и кстати процентов на десять правда.

Настоящая цена динамической диспетчеризации не в самом прыжке через vtable, а в том, что этот прыжок прячет от оптимизатора. LLVM видит непрозрачный call по указателю и пасует. Не может встроить тело, не может раскрутить цикл, не может протащить константу через границу вызова. Один косвенный вызов и целый каскад оптимизаций становится невозможным.

Но чтобы понять, почему так происходит, нужно сначала разобраться, как dyn Trait устроен внутри. Что лежит в этом толстяке, как выглядит vtable в памяти, и чем всё это отличается от того, что делает компилятор с дженериками.

Читать далее

Колобок-стек: от Nexus ушёл, от Artifactory ушёл — написал свой реестр на Rust

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели12K

Нужен был реестр артефактов. Показать студентам цепочку поставки софта: сборка, тесты, push в реестр, деплой. Стандартная задача, казалось бы. "Вошли и вышли, приключение на 20 минут."

Растянулось на несколько месяцев.

В итоге написал свой реестр. Один бинарник. 7 форматов. 12 МБ RAM. Без базы данных.

Покатились →

Когда на Rust уже всё переписали

Время на прочтение5 мин
Охват и читатели10K

Мем про переписывание всего на Rust в итоге стал индустриальным стандартом. Безопасность памяти и строгий компилятор реально решают кучу проблем. Но на практике регулярно всплывают задачи, где архитектурные рамки Раста только мешают и заставляют бороться с языком.

Писать системные сетевые сервисы на C в 2026ом году можно, но CVE на переполнение буфера вам выпишут быстрее, чем вы допишете свой Makefile.

Как говорится: Rust не позволит вам выстрелить себе в ногу. Zig позволит с радостью, но перед этим попросит явно передать аллокатор.

В двух последних проектах, в разработке которых я участвую, был выбран Zig. Я не буду продавать язык как идеальный (он объективно сырой), но ниже будет разбор реального опыта. 

Читать далее

Volga: движок обработки real-time данных для AI/ML — аналог Spark и Flink на Rust (Arrow + DataFusion)

Время на прочтение21 мин
Охват и читатели5.5K

Volga — open-source движок обработки данных, созданный как альтернатива Apache Spark и Apache Flink и ориентированный на требования real-time AI/ML систем: консистентное вычисление фичей между online и offline режимами, point-in-time корректные агрегации, длинные скользящие окна, а также ML-ориентированные функции, такие как top- и категориальные агрегации.

В статье рассматриваются мотивация и история разработки, архитектура системы и её ключевые компоненты, а также проводится сравнение с ML-ориентированными решениями (Chronon, OpenMLDB) и универсальными стриминговыми движками (Apache Flink, Apache Spark, Arroyo).

Читать далее
1
23 ...