Still, faced with a problem, I reach for Perl or, in small doses, the shell.
Having too much time on my hands, as it would seem, I find myself maintaining a large chunk of XS code. XS itself isn't too bad. It's not pretty, but if you don't need complex wrappers (and if someone's already written your typemap), it's fairly sane.
I've never liked the compile and link cycle in C, though. Getting the include paths correct in the right order is always a chore, for some reason. When that finally works, getting the library paths right is just as difficult.
With XS, you also have to make DynaLoader happy. All I can say is, "I hope I'm doing this wrong, because if I'm doing it correctly, yuck!"
Oh, and the problem I haven't quite solved is how to produce several individual shared libraries from one distribution. Recursive makefiles? No thank you. I'd really love to be able to do this from Module::Build, as MakeMaker while venerable and a very important part of the process, historically speaking is just... well, I'd almost rather make users write XML to configure the build. Almost.
Nevertheless, I present to you SDL Perl Snapshots. The only one there right now is SDL::OpenGL, but it compiles, links, and passes the tests on Linux PPC. It doesn't autodetect include paths, which is likely the next step, and the test suite does little more than check that it loads and defines at least one interesting constant.
They pass, though, which is more than I had yesterday. That's progress and I'll take it.