mrubyでssize_tが使われてコンパイルエラーになってしまいました。
issueを上げてみたのですが、matzさんが対応してくれました。
環境はgcc4+newlib3です。
C言語のintやlongはCコンパイラーの中で解釈されます。
しかしssize_tはコンパイラーの中ではなくて、libcのヘッダーで定義されたものになります。newlib3の場合
newlib/libc/include/sys/types.h
typedef _ssize_t ssize_t;
となっています。_ssize_tは
newlib/libc/include/sys/_types.h
typedef long _ssize_t;
となっています。
これまでmrubyでlibcのsys以下のヘッダーをincludeしているのはsrc/gc.cだけでした。
libcはnewlibが代表的な実装になりますが、他にもいろいろあります。私はsys以下のヘッダーはlibcの実装に依存する可能性が高くなりできる限り使わないほうが良いのではないかと思います。