* Reimplement tools, starting with a spiffy AJAX expression tester. Didn't bother implementing as non-AJAX, as it's just an extra.
* Change exchange protocol between native parser and PHP app. Resulted in 2-3-fold performance boost.
* Fix minor bug from last night.
* Revert r38187 for now:
** Introduced a memory leak.
** Used an unnecessary library. The point is taken, and this will be fixed in a few days (using glibc instead).
* Fix logic error in boolean ops.
* Integrate with the PHP abuse filter using AbuseFilterParserNative class.
* Fix memory leak.
* Fix a few miscellaneous bugs
* Add a bunch of profiling, so we can figure out where performance bottlenecks are.
* Cache the in-object token cache in memcached, bringing per-condition run times from 4ms to a cooler 296us
* Disallow more than 100 condition-checks per action.
* Disallow filters which are misbehaving (more than 5 matches, constituting more than 5% of recent actions)
* Display statistics for all filters (percentage of times the condition limit is reached, and percentage of times some filter is matched), and individual filters (percentage of times it's matched).