Nearly all our development has been on the HN application rather than on Arc itself. Of course, in a Lisp, the line between application and language is blurred. Many of our changes have a language-like quality, but because they're implemented in macros, they haven't involved modifying Arc itself.
We did make one change to Arc proper: we added syntax for binding thread-local variables in function signatures, analogous to how optional arguments are declared. This adds a limited kind of dynamic scoping to Arc. That is useful when you have some 'top level' state (e.g. the basic parameters involved in making an HN web request: username, item id, etc.) that you'd like not to have to pass down every chain of function calls that's going to need it at some point. We originally added this as an experiment to see whether it would simplify or complicate the code. It simplified it very nicely, so we kept it. I can describe this in more detail later if anyone's interested.
>"I can describe this in more detail later if anyone's interested."
Yes, please.
BTW, that was some of the best nerd sniping I've seen.