> would it make sense to replace gems that use c extensions with pure ruby implementations
I think that the best practice for C extensions when used for performance is that Gems have both a pure Ruby reference implementation and a C extension. This means all implementations can run them and more people can read the code. OilyPNG and PSD Native do this and it's been extremely helpful to my research.
C extensions, even when run in our interpreter, tend to run faster than Ruby code because C has simpler semantics and needs fewer guards (checks) when running code.
I haven't done a careful comparison of C extension performance compared to Ruby performance when both are running on Graal. I should do that.