First, I finally went back and added support for clang in my
whole-program-llvm wrapper.
Usage is easy: just set LLVM_COMPILER=clang
and it should Just Work.
In the process of implementing this clang support I ended up feeling
pretty bad about some of the old code. I ended up refactoring out
quite a bit and it is definitely cleaner now. I'm still not sold on
this whole "object-oriented programming" thing, but it worked
tolerably for a small chunk of Python code. The resulting objects
are, of course, completely arbitrary bundles of functionality.
I also fixed a bug in taffybar
that prevented non-ASCII window titles in xmonad from rendering
properly in the XMonadLog widget. It turns out that xmonad lies about
the types of strings it gets from X. While the type signature claims
that they are String
s (lists of Char
), they are actually lists of
bytes stuffed into Char
. That is, the underlying utf-8 string was
not decoded before being converted into a String
. A simple call to
decodeString
from
the utf8-string library fixed the issue.