I started on a series to learn by reversing a native Ruby gem. Part 3 is now published! The step continues the examination by seeing how we package and ensure that the native extension is actually built during installation. Also, why are there 2 Makefiles?
Part 3 - How do we ensure that we have everything and that it actually gets built at installation?
Link: Ruby Learning by Reversing: Native Gems, Part 3
The first 2 parts are also online on my blog:
* Part 1 - This covers the background to the gem we explore
Link: Ruby Learning by Reversing: Native Gems, Part 1
* Part 2 - This goes into the details of how ruby loads the native gem and extension (and includes a nice sequence diagram of how all the bits happen together)
Link: Ruby Learning by Reversing: Native Gems, Part 2
Future posts are planned to go into details like:
* The interface between Ruby and C
* The Development Makefile and a Makefile that also works on Windows
* Running the specs and the performance benchmark
- Providing an executable
- A gem that also works on JRuby
- Making the gem ractor friendly
- Patching an existing gem rather than a new module
Comments on the posts or the plans welcome. I'm @onghu on Twitter or @firstname.lastname@example.org on Mastodon if you're on either.