2024年、PicoRubyの圧倒的な進捗まとめ

hasumikin is a programmer.


この記事は、mrubyファミリ Advent Calendar 2024の24日目の記事です。


ことしはPicoRubyに圧倒的な進捗がでたので、まとめます。

新mrubyコンパイラ

ユニバーサルパーサであるPrismを利用してコンパイラを刷新。マイコン上での省メモリなコンパイルとCRuby互換のシンタックスを実現。

成果物:https://github.com/picoruby/mruby-compiler2

マイコンペリフェラルライブラリ

mrubyファミリ共通 I/O APIガイドライン1に準拠した GPIO, ADC, I2C, SPI, UART, PWM のRP2040向けライブラリを整備。

成果物:https://github.com/picoruby/picoruby/tree/master/mrbgems/picoruby-gpio など

標準ライブラリ

PicoRubyをよりRubyらしく使うために、標準ライブラリを充実(一部2023年に実装したものを含みます)。

  • Base 16, Base64
  • MbedTLS を使用したハッシュ関数や暗号関連機能
  • SQLite3(組み込みデータベース)
  • Dataクラス(イミュータブルな構造体)
  • JSON、YAML、JWT の各クラス (IoT フレームワークとしての実用性を向上)
  • Netクラス(HTTPS クライアントによるTLS通信。@s01氏ありがとう)
  • BLEクラス(CentralとPeripheral両方をPicoRubyで構成)
  • Picoline(Highline風の対話式設定構成ツール)
  • Picotest(Minitest風のユニットテストフレームワーク)
  • POSIX用IO/File, Dirの各クラス(mruby-ioとmruby-dirから移植)

成果物:https://github.com/picoruby/picoruby/tree/master/mrbgems この中にたくさんある

メタプログラミング機能

  • Object#methods
  • Object#instance_variables, instance_variable_get, instance_variable_set
  • Object#instance_eval
  • Object#respond_to?
  • Object#method_missing
  • Kernel.#caller
  • Kernel.#eval

…など(一部mruby/cへマージしたものを含みます)

成果物:(略)

Wasmへのポーティング

PicoRuby.wasmをつくりました。 これについてはあしたの記事に改めて書きます。

ドキュメンテーション

RBSファイルのシグネチャ情報を収集して自動生成されるAPIドキュメントを開発。

成果物:https://picoruby.github.io/


以上のような感じです。 開発しすぎたので忘れてることもありそうです。 あしたはアドベントカレンダー最終日。 巷で噂のPicoRuby.wasmについて書きます!