I synch'ed CVS with the latest version of the code last night. There's still a few bugfixes that I've since written, but not yet committed, but they too will be in CVS a little later tonight. Changelogs are here.
Through judicious use of the Observer pattern, I replaced the polling loop in the IOEventStream class with a loop that locks a ConditionVariable. The condition variable is signalled whenever one of the Subject objects calls update(), so now IO is only done when there are actual pending events. It had the side-effect of cleaning up the code, too, which is always a good sign. Load average in the IOEventStream test harness with no keyboard activity: 0.02.
I'm now working through some issues with the way login events are handled, and I realized that the reconnect() method is too tightly coupled to the SocketOutputFilter, so I'll see if I can come up with a more elegant implementation tonight.
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!