Поскольку заголовочные файлы C написаны на C, а интерпретаторы Ruby интерпретируют только Ruby. Кроме того, файлы заголовков могут быть недоступны даже во время выполнения.
Там уже говорили об автоматической генерации attach_function
вызовов из заголовков. Однако, как я уже говорил выше, это в основном означает, что вы должны реализовать полноценный компилятор C (ну, точнее, полную переднюю половину единицы). В настоящее время разработчики Ruby более сосредоточены на том, чтобы заставить Ruby работать так же быстро, как и на C, чтобы облегчить необходимость использовать FFI в первую очередь, чем написание собственного компилятора C (что является нетривиальным мероприятием, даже если вам нужно только части лексизма, синтаксического анализа, семантического анализа и набора текста, а не фактическая генерация или оптимизация кода).