본문으로 이동

HCR의 Rust

서버 재실행부터 임베디드 로봇 펌웨어까지 Rust로 구현

HCR은 정책, 재실행, 프로토콜 상태, 검증된 하드웨어 제어가 만나는 곳에 Rust를 사용합니다. 브라우저 UI는 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

하드웨어

실물 5서보 로봇 팔에서 Rust가 시작 정책, 라우팅, HTTP/JSON, 서보 상태를 담당하고 C++는 바이트 중심 C ABI 뒤로 제한됩니다. 게이트웨이의 MQTT는 아직 구현되지 않았습니다.

hcr-fw

오픈 소스

HCR을 뒷받침하는 Hotaru Rust 생태계

HCR은 백엔드 서비스 크레이트를 crates.io에 공개하고 Hotaru로 서비스와 임베디드 프로토콜 계층을 구축합니다. 크레이트, 프레임워크 웹사이트, 코어 저장소, 별도로 관리되는 MQTT 구현을 살펴보세요.

설계

정책은 Rust가, 하드웨어 기능은 C++가 담당

의존성은 한 방향으로만 흐릅니다. 외부 하드웨어 함수를 선언하는 crate는 하나뿐이며 경계에서는 Arduino 문자열, C++ 객체, 라우트, JSON, 애플리케이션 상태가 아닌 바이트만 전달합니다.

Rust 담당

  • 시작 정책 및 협력형 실행기
  • Hotaru 라우팅 및 프로토콜
  • HTTP 파싱 및 응답
  • 서보 검증 및 상태

C++ 담당

  • 클록, 인터럽트 마스킹, 워치독, 재시작, 힙, 난수, 직렬 통신
  • Wi-Fi 액세스 포인트 및 스테이션 모드, 저수준 TCP·UDP 핸들
  • 캡티브 DNS 및 SPIFFS 핸들
  • GPIO, PWM, 서보 펄스 쓰기, 저수준 OTA 쓰기

Rust

HCR에서 Rust가 의미하는 것

HCR은 결정론적 재실행, 명시적 프로토콜 타입, 통제된 동시성, 좁은 임베디드 경계가 필요한 곳에 Rust를 사용합니다. 이는 구체적인 아키텍처 선택이며 HCR 전체가 Rust로 작성됐다는 뜻은 아닙니다.

브라우저 UI는 React와 TypeScript로 구축됩니다. HCR은 독립 프로젝트이며 Rust Project 또는 Rust Foundation과 제휴하거나 보증받지 않습니다.

하드웨어