In Ruby, native extensions (also known as C extensions or native gems) allow you to write parts of your code in the C programming language, which can be linked and executed as part of a Ruby program. Native extensions are typically used for performance-critical tasks, interacting with low-level system libraries, or providing access to functionality not available in the Ruby standard library. A native extension is simply C code that needs to be compiled and that might link a Ruby gem library or component to a non-Ruby library.

A Ruby machine is built in C, you need to understand that every Ruby programming code is combined into instructions for the C – built Ruby virtual machine to execute. So native extensions are libraries built in the same C which Ruby was built in other to enhance the function of the gems. They are simply compiled C code that a Ruby gem needs to interact with a non-Ruby component or that needs to be run in C for speed (C code is much faster than Ruby normally).

Some reasons to use native extensions in Ruby:

  1. Performance: Native extensions can significantly improve the performance of specific tasks, especially when compared to pure Ruby code. This is because C code is compiled to machine code, which is generally faster than interpreted Ruby code.

  2. Interaction with C Libraries: Native extensions are often used to interact with external C libraries or system APIs. They provide a bridge between Ruby and the lower-level functionality of these libraries.