Current publish / subscribe systems offer a range of expressive subscription languages for constraints. However, classical systems restrict the publish operation to be a single published object that contains only constants and no constraints. We introduce symmetric publish / subscribe, a novel generalization of publish / subscribe where both publications and subscriptions contain constraints in addition to constants. Published objects are matched to subscriptions by computing the intersection of their constraints. This generalization improves the performance of classical publish / subscribe systems and introduces a new class of applications for publish / subscribe. This paper describes the core algorithms of our publish / subscribe implementation, evaluates the performance of these algorithms both analytically and empirically, and documents cases where the additional expressive power of symmetric publish / subscribe can be gained with minimal additional computational cost compared to...