Crystalを組み込みシステムでも使えるように努力している人たちが2024年後半から現れました。日本語で「Crystal 組み込み」などとGoogle検索する人たちがこのページを経由して情報にたどり着けるようにメモします。
私は「組み込み」については全く分からないので、上記フォーラムの内容を元にChatGPT(o1)に要約を書いてもらいました。これを修正した内容が以下になります。誰かの参考になりますように。
Crystalは、Ruby風の書き方で開発できるうえ、コンパイル言語として高速・省メモリを狙えるのが特徴です。
従来のCrystal標準ライブラリに依存しないよう再設計された「kecil.cr」を用いることで、マイコン向けに必要最低限のコードだけを搭載し、より小さなバイナリを生成する試みが進んでいます。
「svd.cr」というツールを使えば、ARMマイコンのレジスタ情報(SVDファイル)を基に型安全なアクセスコードを自動生成し、GPIOやタイマー、オペアンプなどのハードウェア制御をCrystalで行いやすくなります。
実際の事例では、最適化オプション(-Oz)を適用することで、LED点滅のような簡単なアプリを1KB程度のプログラムサイズに抑えられた例が報告されています。これはLLVMによる最適化が効いているおかげで、C++と大差ないバイナリサイズを実現できる見込みがあるということです。加えて、TI製MCUのMSPM0L、Raspberry Pi PicoのRP2040、STM32F303など、複数のプラットフォームでCrystalコードの動作が報告されています。
一方で、Windows環境でARM向けLLVMのビルドを行う手間や、ベンダーが提供するSVDファイルの不備への対応、さらにはGC(ガーベジコレクション)やFiberといったCrystal本来の機能をどこまで小さなマイコンでサポートできるかなど、多くの課題が残っています。より多くのチップや機能を扱うためにはコミュニティでの継続的な整備が不可欠です。
興味のある方は、kecil.crやsvd.crのGitHubリポジトリ、さらにCrystalの公式サイトやフォーラムをチェックしてみてください。
この記事は以上です。