Aller au contenu principal

Rust dans HCR

Rust, du rejeu côté serveur au micrologiciel du robot

HCR utilise Rust à la jonction des règles, du rejeu, de l’état du protocole et du contrôle matériel validé. L’interface reste en React et Blockly ; Rust exécute le service et la passerelle embarquée.

Architecture technique

Deux environnements Rust, deux contraintes de déploiement

Le service de notation utilise le contrat additif hcr.v1 et un rejeu faisant autorité. La passerelle no_std ESP8266 actuelle exécute une API HTTP/JSON bornée ; MQTT et CBOR restent prévus.

Rust · MQTT over WebSocket · HTTP binding

Service

Rejoue les programmes côté serveur, exécute la banque adaptative et gère les échéances et classements des manches.

hcr-backend

hcr.v1 · JSON and CBOR

Protocole

Chaque message utilise une enveloppe et est corrélé par ULID. Les versions mineures ne font qu’ajouter des champs ; les récepteurs ignorent ce qu’ils ne reconnaissent pas au lieu d’échouer.

hcr-backend/schema

Rust (no_std) · ESP8266 · Arduino C++ as a hardware library

Matériel

Sur le bras physique à cinq servomoteurs, Rust gère le démarrage, le routage, HTTP/JSON et l’état des servos ; C++ reste derrière une ABI C orientée octets. MQTT n’est pas encore implémenté.

hcr-fw

Open source

L’écosystème Rust Hotaru derrière HCR

HCR publie son crate de service backend sur crates.io et construit ses couches de service et de protocole embarqué avec Hotaru. Découvrez le crate, le site du framework, le dépôt principal et l’implémentation MQTT maintenue séparément.

Conception

Rust gère la logique ; C++ sert de bibliothèque matérielle

La dépendance est unidirectionnelle. Un seul crate déclare les fonctions matérielles importées et la frontière ne transporte que des octets, jamais de chaînes Arduino, d’objets C++, de routes, de JSON ou d’état applicatif.

Rust prend en charge

  • Politique de démarrage et exécuteur coopératif
  • Routage et protocole Hotaru
  • Analyse et réponses HTTP
  • Validation et état des servos

C++ gère

  • Horloges, masquage des interruptions, watchdog, redémarrage, tas, aléatoire et liaison série
  • Modes point d’accès et station Wi-Fi, poignées TCP et UDP brutes
  • Poignées DNS captif et SPIFFS
  • GPIO, PWM, écriture des impulsions de servo et écriture OTA brute

Rust

Ce que signifie Rust dans HCR

HCR utilise Rust là où il faut un rejeu déterministe, des types de protocole explicites, une concurrence maîtrisée et une frontière embarquée étroite. C’est un choix d’architecture concret, pas l’affirmation que tout HCR est écrit en Rust.

L’interface du navigateur est conçue avec React et TypeScript. HCR est un projet indépendant, sans affiliation ni approbation du Rust Project ou de la Rust Foundation.

Matériel