I just released Ocarina 6.4.3! My main project over the last several months has been converting Ocarina over to C, and as of this release one quarter of my Ocarina codebase has been converted.
I have several reasons for this conversion, the first being that my natural coding style tends towards writing very C-ish code. I don’t use a large number of classes or inheritance, and I find it easier to write a global function instead. This can work in C++ or Python, but sufficiently large projects tend to get messy.
Switching over to C also makes it easier to make an interface in GTK. Glade, the GTK interface designer, lets me assign callback functions in xml, cutting out a lot of code to wire everything up. This works great in C, but breaks in C++ due to how C++ code is compiled.
Converting everything from C++ to C is surprisingly easy thanks to the extern keyword in C++, which I use to include C files in my remaining C++ code:
extern "C" { #include <core/file.h> #include <core/tags/track.h> } #include <core/audio.h>
I have enough changes stacked up that I can have an Ocarina release every other week for the next several months. This should give me plenty of buffer time while I work on GUI code.