Arabica, my XML processing toolkit, has been in an unofficial maintenance mode for several years now. I never actually stopped working on it, but I wasn’t actively doing anything on it. My own work and interests had moved on to other things and, to be honest, I had (and still have) no idea how many people might be using it. I have had the occasional pull request, for which I’m very grateful, so obviously it was more than zero but people weren’t beating down the door asking for or providing updates and changes. (More significantly, nobody offered me money to do work on it. From my side money would have shown the toolkit’s importance, and definitely would have bought a disproportionate amount of time and effort. This is still true.)
But there it was - not dead but resting. The first Arabica release was back in October 2001 and so the code reflects the C++ of that time. One of my little hooks for Arabica was that it was written in Standard C++. Well, time moves on and, eventually, so did C++ and increasingly Arabica has come to be written in the Standard C++ of the past. There all kinds of ways the code could be modernised - use
auto and the range-for will do wonders by themselves. The
string_view can, I think, replace Arabica’s
string_adaptor and eliminate some if not all of the copying that goes on in the parser wrapper classes. More widely lambda expressions and
std::function suggest all kinds of interesting ways the SAX interfaces could be reworked, and that user functions could be bound into the XPath and XSLT engines. More immediately, Arabica uses
std::auto_ptr and those need to go in favour of
I have, because it was the easiest change, done that and expect to cut a new release shortly. I can’t promise that I’ll necessarily do any more, or any time soon, but it’s a start and starts are good.