Обновить
64K+

Rust *

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

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

Пишем мобильную ОС на Rust. Часть 3. Путь от bare-metal эксперимента к capability-based микроядру

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

В первой части мы загрузили своё ядро на настоящий телефон, вывели «Hello world» в UART и нарисовали квадратик на экране. Во второй — научили ядро управлять памятью и завели кучу.

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

В этой статье разберёмся, что такое capability и handle и при чём здесь seL4 и Zircon, запустим свой процесс-"калькулятор" на телефоне и поговорим с ним по IPC, а под конец напишем userspace-драйвер часов для устройства, про которое в ядре нет ни строчки.

Получить хэндл на статью

Новости

Я делал «nginx для телеграм‑ботов», а получился конструктор шлюзов на Rust

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

Это история о том, как я писал балансировщик нагрузки для телеграм-ботов, на полпути понял, что телеграм тут вообще ни при чём, выкинул половину проекта - и теперь у меня Rust-конструктор, из которого одинаково собирается реверс-прокси, самодельный ngrok, мост HTTP -> RabbitMQ -> Kafka и тот самый балансировщик ботов, с которого всё началось.

Проект называется tgin. Раньше это был Telegram Gateway Interface, теперь - Traffic Gateway Interface.

Читать далее

Gramps + Claude: self‑hosted генеалогия с ИИ‑помощником

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

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

Проект: gramps-web-mcp-rs

Читать далее

Iron Core. Часть 3: Бессмертная командная строка

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

Публикуем перевод третьей статьи из серии (первая часть, вторая), посвящённой информационным технологиям в авиаперевозках. Сегодня поговорим о режиме командной строки системы Amadeus, работа в которой опирается на язык, созданный для телетайпов. Этот язык до сих пор обеспечивает огромный процент бронирований билетов во всём мире — как тех, что выполняются различными агентствами, так и тех, что делаются посредством GDS.

Читать далее

Заметки о том, как я писал SFU на Rust (1 часть)

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

Как устроен SFU изнутри: Publisher, Subscriber, комната-маршрутизатор и никакого перекодирования. Дневник разработки на Rust.

Читать далее

Обзор изменений в новой версии Yttri

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

0.86.0-beta.1 - это большой бета-цикл: агент получил единый дом в интерфейсе, у Yttri появился первый плагин (интеграция с Obsidian) и сама платформа плагинов, на Mac с Apple Silicon заработал альтернативный локальный движок MLX, а голосовой ввод и запись прошли через плотную серию фиксов стабильности. Ниже - по разделам, что из этого видно пользователю.

Читать далее

Считаем пакеты на Rust

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

В последнее время все чаще попадаются статьи на тему сетевых технологий, от вдохновения захотелось что-нибудь смастерить. Выбор пал на приложение для мониторинга трафика на локальной машине – сколько отправили/получили и кому/от кого, писать будем на Rust.

Читать далее

Асинхронность в WebAssembly (WASM)

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

Обзор асинхронности WASM с выходом WASI 0.3

WASM уже вышел за пределы браузеров и выглядит как перспективная технология для серверной разработки. Однако в вопросе серверного компьюта рано или поздно встает вопрос асинхронной обработки I/O-bound нагрузки. В данной статье попробуем разобраться, что как отвечает экосистема WASM на данный вызов. Статья особенно актуальна в свете того, что совсем недавно официально представлен WASI 0.3

Читать далее

Антенный ротатор на PTZ 3050DZ

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

Недавно попалось на глаза поворотное устройство для видеокамер PTZ 3050DZ, которое заинтересовало меня невысокой стоимостью и приличным заявленным весом поворачиваемой видеокамеры в 10 килограмм. Подумалось, что оно вполне может подойти для использования с небольшими спутниковыми антеннами. По ходу дела пришлось смастерить для него еще и дистанционное управление с применением модулей LoRa. Жмите кнопку ниже, чтоб узнать подробности.

Читать далее

Hajiz: rootless Linux‑sandbox на Rust — namespaces, Landlock, seccomp‑BPF и eBPF‑аудит без sudo

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

Я написал с нуля инструмент для изоляции Linux‑приложений на Rust — Hajiz. Это учебный проект по системной безопасности, который вырос во что‑то, чем можно реально пользоваться. Хочу рассказать, как он устроен изнутри: почему порядок применения механизмов изоляции критичен, как работает eBPF‑аудит с privilege separation, и зачем всё это когда есть Docker.

github.com/hag19/hajiz

Читать далее

AngaraBase: новая HTAP СУБД

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

AngaraBase — OLTP/HTAP СУБД, написанная с нуля на Rust. Совместима с PostgreSQL по протоколу — работает с psql, JDBC, psycopg2 и стандартными драйверами. UNDO-log MVCC без VACUUM, векторизованный исполнитель с SIMD-батчами — транзакции и аналитика под одним SQL и одним снапшотом, без ETL и второго хранилища. Fail-closed контракты ресурсов, USDT-пробы без рестарта, EXPLAIN с разбивкой по фазам исполнения. Dev preview доступен на angarabase.dev.

Читать далее

Свой VPN на Rust: как я спорил с сетью, TLS и самим собой

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

Если совсем коротко: я написал свой VPN на Rust — побайтово-корректный TLS 1.3 с заёмом чужого сертификата, гибридное постквантовое рукопожатие, пять режимов маскировки и под 700 Мбит/с на скачивание. Ниже — как это устроено изнутри и десяток шишек, на которых я учился. Но начать хочется издалека.

Читать далее

Доступ к VirtualBox и Hyper-V без агента в гостевой ОС — на примере клиента EvertyDesk Lite

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

Как дать админу доступ к виртуальным машинам на удалённом хосте без агента внутри гостевой ОС — на примере VirtualBox и Hyper-V. Один RDP-движок на оба гипервизора, три бага VirtualBox по дороге и таймаут, который переписал всю архитектуру.

Читать далее

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

Зоопарк каналов в Rust: какой выбрать и как не споткнуться

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

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

На практике же стоит копнуть глубже, и оказывается, что каналов в экосистеме Rust целый зоопарк: std::sync::mpsc, crossbeam-channel, tokio::sync, flume, async-channel, kanal и ещё несколько менее известных. Они отличаются моделью, поддержкой асинхронности, скоростью и кучей мелких деталей, о которые легко споткнуться. В этой статье разберёмся, какие каналы бывают, чем они отличаются и какой брать под конкретную задачу.

Читать далее

Бесплатное lo-fi радио + живые обои на рабочий стол: собрал десктоп-приложение на Tauri 2 (форк lofi-engine)

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

Я хотел одну простую вещь: чтобы на втором мониторе тихо играло lo-fi, а за виджетами крутилась уютная анимированная сцена. Готового решения не нашлось — зато нашёлся чужой MIT-проект, у которого я в итоге выкинул главный модуль и собрал из остатков совсем другой продукт. Это девлог о том, что я удалил, что добавил и на каких граблях потанцевал.

Под задачу подходящих инструментов хватало, но каждый закрывал только часть. Wallpaper Engine — живые обои, но без радио. Lofi.co — музыка в браузере, но не обои рабочего стола. Noisli — эмбиент, но без всего остального. Покупать три подписки ради фона под код было жалко, поэтому я полез на GitHub смотреть, что можно собрать самому.

Нашёл meel-hd/lofi-engine под MIT — аккуратный Tauri-проект со встроенным генеративным движком, который синтезировал lo-fi прямо в браузерном рантайме. Идея красивая, но мне быстро стало понятно, что я хочу совсем другого продукта. Так появился форк, который я в итоге назвал LoFiTyan.

Читать далее

Я запускаю второй открытый бета-тест

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

В феврале я публиковал первую статью про Yttri: что это за приложение, зачем я его делаю и почему мне не хватало Obsidian, Notion, почтового клиента, таск-трекера и AI-чата по отдельности.

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

С тех пор Yttri сильно изменился. Это уже не просто «единый интерфейс для всего», а более взрослая local-first среда: с открытыми markdown-данными, локальными моделями, агентом, почтой, задачами, заметками, финансами, записями встреч и нормальной доставкой тяжёлых AI-компонентов.

Сейчас я расширяю бета-тестирование и хочу позвать новых пользователей.

Читать далее

Как на самом деле работает .await: пишем свой async-рантайм на Rust с нуля

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

Каждый раз, когда вы пишете .await, происходит не магия, а вполне конкретный механизм: Future, Waker и опрос состояния. Чтобы увидеть это своими глазами, я написал собственный async-рантайм на Rust с нуля - с executor, reactor на epoll и рабочим TCP-эхо-сервером. По пути разобрался, как именно tokio будит ваши задачи, и нашёл баг, который тихо висел у меня в проде. Внутри - весь код целиком и объяснение без отсылок к чёрным ящикам.

Читать далее

Создание приложения на Rust с помощью GPUI

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

GPUI является быстрым и производительным UI фреймворком на Rust c GPU ускорением от команды разработчиков, создавших редактор кода Zed, который как раз его использует для UI части. Данный фреймворк вышел относительно недавно, поэтому его API немного нестабильный, во многих источниках, на которые Вы могли наткнуться на просторах Интернета, включая примеры в официальном репозитории, написаны на более старой версии, из-за чего изучать данный фреймворк становится ещё сложнее. Он поддерживает такие платформы как macOS, Windows, Linux и FreeBSD. В данной работе применяется версия 0.2.2.

Читать далее

Как я случайно написал что-то быстрое и декларативное (на Rust)

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

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

Читать далее

Целая прорва связных списков, чтобы выучить Rust

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

Я публиковал перевод Too Many Linked Lists по мере готовности, поэтому каждая отдельная глава представлена отдельной статьёй на Хабре.

Книгу в таком виде читать неудобно, так как приходиться искать статьи в ленте автора. Поэтому я собрал Оглавление в одном месте, а именно здесь. Теперь не заблудитесь!

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