mruby/c 4.0.0のリリース
mruby/c 4.0.0がリリースされていたので、3.4.1との違いをざっと調べてみた。 機能の点では、mrbcで生成されるバイトコードの対応するversionが変わったのが最も大きな違いだが、いくつかのmethodが追加されている。 機能とはあまり関係ないところでは、struct VMがmrbc_vmに、halがmrbc_halに名称が変わったり、小数への変換に使われていたatofが、floatかdoubleによってstrtofかstrtodに変更になったりしていた。
最近はmruby/cの3.4.1をch32funでコンパイルしていたが、それを多少修正して、4.0.0をコンパイルしてみた。 Floatは使えなくして、Taskとmrblibも除いた状態で比較して、1.6k大きくなっていた。 新しいmethodなどが増えると、どうしても大きくなってしまうのは仕方無いことではあるが、サイズはあまり増加しないで欲しいものである。 先日のブログで、console.cなどのファイルを修正すると、約0.4k減ることを紹介したが、これを適応すると、59kとなった。 ch32x035だとユーザーが使えるのは3kということになる。 このくらいあれば、なんとか使えるレベルかな。 でも、さらにmethodが増えると、容量が厳しくなるだろう。
vm_config.hの中には、FloatやStringをoffにする指定があるのだが、そのままではコンパイルできなかった。 4.0.0でも、同じ状況ではあったが、github上では、これらに対する修正が加わったようなので、次のリリースではそのままでFloatやStringをoffにできるようになるだろう。 Stringをoffにすると、大幅にサイズが小さくなるだろうから、flashの容量が厳しいときには、そうして使うと良いだろう。