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 구현을 살펴보세요.
crates.io의 HCR 크레이트
hcr
카탈로그 접근, 권위 있는 재실행, 적응형 세션, 선택적 Hotaru HTTP 통합을 제공하는 공개 HCR 백엔드 서비스 코어입니다.
crates.io/crates/hcr프레임워크 웹사이트
hotaru.rs
no_std 준비 코어를 갖춘 작고 프로토콜 지향적인 Rust 프레임워크 Hotaru의 공식 다국어 소개입니다.
hotaru.rs/GitHub의 코어 및 HTTP
Hotaru
Hotaru 생태계에서 사용하는 프로토콜 중립 코어, 런타임 어댑터, HTTP 스택, 라우팅 및 엔드포인트 도구입니다.
github.com/Field-of-Dream-Studio/hotaruGitHub의 MQTT 및 브로커
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 핸들
- 캡티브 DNS 및 SPIFFS 핸들
- GPIO, PWM, 서보 펄스 쓰기, 저수준 OTA 쓰기
Rust
HCR에서 Rust가 의미하는 것
HCR은 결정론적 재실행, 명시적 프로토콜 타입, 통제된 동시성, 좁은 임베디드 경계가 필요한 곳에 Rust를 사용합니다. 이는 구체적인 아키텍처 선택이며 HCR 전체가 Rust로 작성됐다는 뜻은 아닙니다.
브라우저 UI는 React와 TypeScript로 구축됩니다. HCR은 독립 프로젝트이며 Rust Project 또는 Rust Foundation과 제휴하거나 보증받지 않습니다.
하드웨어