MicroRuby: 마이크로컨트롤러에서 Ruby의 가능성을 열다

[JA] MicroRuby: True Microcontroller Ruby / Hitoshi HASUMI @hasumikin

작성자
RubyKaigi
발행일
2025년 05월 27일

핵심 요약

  • 1 MicroRuby는 마이크로컨트롤러 환경에서 효율적인 Ruby 실행을 목표로 개발되었습니다.
  • 2 mruby의 메모리 사용 최적화 기술과 선점형 태스크 스케줄러 구현을 통해 대규모 애플리케이션 구동 가능성을 입증했습니다.
  • 3 R2P2와 같은 실제 애플리케이션 구동을 통해 MicroRuby의 실용성을 확인하고, 향후 발전 가능성을 제시합니다.

도입

이 발표는 마이크로컨트롤러 환경에서 루비(Ruby) 언어를 효율적으로 구동하기 위한 'MicroRuby'의 개발 과정과 그 실용성에 대해 다룹니다. 특히 저전력, 저사양 임베디드 장치에서 루비 애플리케이션을 안정적으로 실행하는 것을 목표로 하며, 기존의 PicoRuby 및 mruby(Mini Ruby)와의 차이점을 설명하고 MicroRuby가 지향하는 바를 명확히 제시합니다. 루비 개발자들이 임베디드 시스템 프로그래밍에 쉽게 접근할 수 있도록 하는 것이 이 프로젝트의 중요한 동기 중 하나입니다.

발표자는 먼저 mruby와 mrbc(mruby compiler) 간의 메모리 소비량 차이에 대한 기존의 오해를 재조명합니다. 과거에는 mruby가 mrbc보다 메모리 사용량이 크다고 알려졌으나, 실제 대규모 애플리케이션에서는 mruby의 ‘Pre-sym’ 기능(심볼 테이블 및 IREP를 ROM에 미리 배치) 및 ‘Object Space’ 할당 방식이 더 효율적일 수 있다는 가설, 즉 ‘건배 포인트(Kanpai Point)’ 이론을 제시합니다. 이 이론은 애플리케이션 규모가 커질수록 MicroRuby(mruby 기반)의 램(RAM) 소비가 PicoRuby(mrbc 기반)에 비해 완만하게 증가하여 특정 지점에서 역전될 수 있음을 시사합니다.

이 가설을 증명하기 위해 발표자는 MicroRuby에 ‘선점형 태스크 스케줄링(Preemptive Task Scheduling)’ 기능을 구현하는 과정을 상세히 설명합니다. 이는 마이크로컨트롤러 환경에서 여러 태스크를 병렬로 실행하기 위한 필수적인 기능으로, mruby의 mrb_context 구조체를 활용하여 스레드와 유사한 동작을 구현했습니다. 이를 통해 R2P2와 같은 복잡한 애플리케이션을 MicroRuby 상에서 구동할 수 있는 기반을 마련했습니다.

실제 구현 단계에서는 PicoRuby에서 사용되던 방대한 C 확장(C extensions) 라이브러리를 MicroRuby로 이식하는 데 많은 노력이 투입되었습니다. AI 도구의 도움 없이 수동으로 1만 2천 라인 이상의 코드를 포팅하는 어려운 과정을 거쳤습니다. 메모리 소비량 측정의 정확성을 확보하기 위해 마이크로컨트롤러 상에서 작동하는 맞춤형 메모리 할당자(est_alloc)를 개발하여 기존 newlib의 한계를 극복했습니다.

측정 결과, R2P2 애플리케이션이 로드된 상태에서 MicroRuby는 약 109KB의 램을 사용했으며, 이는 PicoRuby가 유사한 기능 로드 시 78KB를 사용하는 것과 비교할 때 약 30%의 차이로, 초기 예상보다 훨씬 적은 차이를 보였습니다. 이는 ‘건배 포인트’ 가설을 부분적으로 뒷받침하며, 대규모 애플리케이션에서는 MicroRuby의 효율성이 더욱 부각될 수 있음을 시사합니다. 발표자는 Raspberry Pi Pico W와 같은 실제 임베디드 장치에서 MicroRuby 기반의 IoT 애플리케이션(온도 센서 데이터 전송)이 성공적으로 작동하는 시연을 통해 MicroRuby의 실용성을 명확히 보여주었습니다.

결론

결론적으로, 이번 개발 프로젝트를 통해 MicroRuby는 마이크로컨트롤러 상에서 충분히 실용적인 램 소비량으로 R2P2와 같은 복잡한 애플리케이션을 구동할 수 있게 되었습니다. 이는 임베디드 환경에서 '풀 스펙 루비'의 언어 기능(객체 지향 등)을 활용할 수 있는 가능성을 열었으며, 루비 개발 커뮤니티에 새로운 지평을 제시합니다. 비록 아직 일부 버그가 남아있지만, 발표자는 MicroRuby가 곧 모든 개발자가 쉽게 사용할 수 있는 단계에 도달할 것이라고 강조했습니다. 마지막으로, 루비 어소시에이션의 개발 지원에 대한 감사와 함께 관련 서적(`월간 람다노트`, `루비로 시작하는 전기공작`) 홍보를 통해 임베디드 루비 분야의 지속적인 발전과 지식 공유를 독려하며 발표를 마무리했습니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!