Chapter 7: C Interoperability
This chapter is going to focus on one of the more advanced Crystal features: the ability to interop with existing C libraries by writing C Bindings. This Crystal feature allows you to reuse highly optimized and/or robust code within Crystal without writing a line of C or taking on the non-trivial task of porting all of it to Crystal. We will cover the following topics:
- Introducing C bindings
- Binding libnotify
- Integrating the bindings
libnotify provides a way to emit desktop notifications as a means to provide non-intrusive information to the user as events occur. We are going to leverage this library to emit our own notifications.
By the end of this chapter, you should be able to write C bindings for existing libraries and understand how to best hide the implementation details of the bindings from the end user. C bindings allow Crystal code to leverage highly optimized C code, or simply allow reusing code without needing to port...