Rust в HCR
Rust: от серверного воспроизведения до встроенной прошивки робота
HCR использует Rust там, где сходятся правила, воспроизведение, состояние протокола и проверенное управление оборудованием. Интерфейс остаётся на React и Blockly, а сервис и встроенный шлюз работают на Rust.
Техническая основа
Две среды Rust, два набора ограничений
Сервис оценки использует расширяемый контракт hcr.v1 и авторитетное воспроизведение. Текущий шлюз no_std ESP8266 работает с ограниченным HTTP/JSON API; MQTT и CBOR остаются в планах.
Rust · MQTT over WebSocket · HTTP binding
Service
Воспроизводит программы на сервере, управляет адаптивным банком заданий, сроками раундов и таблицей результатов.
hcr-backend
hcr.v1 · JSON and CBOR
Протокол
Каждое сообщение помещается в конверт и связывается по ULID. Минорные версии могут только добавлять поля; получатели отбрасывают неизвестное содержимое, а не завершаются с ошибкой.
hcr-backend/schema
Rust (no_std) · ESP8266 · Arduino C++ as a hardware library
Оборудование
В физическом манипуляторе с пятью сервоприводами Rust управляет запуском, маршрутизацией, HTTP/JSON и состоянием сервоприводов; C++ остаётся за байтовым C ABI. MQTT пока не реализован.
hcr-fw
Открытый исходный код
Экосистема Hotaru Rust в основе HCR
HCR публикует крейт серверной службы на crates.io и строит сервисный и встроенный протокольный уровни на Hotaru. Изучите крейт, сайт фреймворка, основной репозиторий и отдельно поддерживаемую реализацию MQTT.
Крейт HCR на crates.io
hcr
Опубликованное ядро серверной службы HCR для доступа к каталогу, авторитетного воспроизведения, адаптивных сессий и необязательной HTTP-интеграции с Hotaru.
crates.io/crates/hcrСайт фреймворка
hotaru.rs
Официальное многоязычное введение в Hotaru — небольшой протокольно-ориентированный Rust-фреймворк с ядром, готовым к no_std.
hotaru.rs/Ядро и HTTP на GitHub
Hotaru
Протокольно-нейтральное ядро, адаптеры среды выполнения, HTTP-стек, маршрутизация и инструменты конечных точек экосистемы Hotaru.
github.com/Field-of-Dream-Studio/hotaruMQTT и брокер на GitHub
Hotaru MQTT
Отдельная реализация MQTT-клиента и брокера. Сейчас HCR использует HTTP; MQTT остаётся запланированным транспортом для устройств и приложения.
github.com/fds-pmine/hotaru_mqttАрхитектура
Политика принадлежит Rust; C++ служит аппаратной библиотекой
Зависимость направлена только в одну сторону. Импортированные аппаратные функции объявляет один crate, а через границу передаются байты, но не строки Arduino, объекты C++, маршруты, JSON или состояние приложения.
За что отвечает Rust
- Политика запуска и кооперативный исполнитель
- Маршрутизация и протокол Hotaru
- Разбор HTTP и ответы
- Проверка и состояние сервоприводов
C++ отвечает за
- Тактовые часы, маскирование прерываний, сторожевой таймер, перезапуск, куча, случайные числа, последовательный порт
- Режимы точки доступа и станции Wi-Fi, низкоуровневые дескрипторы TCP и UDP
- Дескрипторы captive DNS и SPIFFS
- GPIO, PWM, запись импульсов сервопривода, низкоуровневая запись OTA
Rust
Что означает Rust для HCR
HCR использует Rust там, где нужны детерминированное воспроизведение, явные типы протокола, управляемая конкурентность и узкая встроенная граница. Это конкретный архитектурный выбор, а не утверждение, что весь HCR написан на Rust.
Браузерный интерфейс создан на React и TypeScript. HCR — независимый проект, не связанный с Rust Project или Rust Foundation и не одобренный ими.
Оборудование