Перейти к основному содержанию

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.

Архитектура

Политика принадлежит 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 и не одобренный ими.

Оборудование