Through discussions at work, we've decided to target some additional improvements to Syntax for this quarter.
Restructuring Metadata
Though we have cached metadata already for the 1.0 release, our improvements were a hack. We're going to try to ease our transition to 2.0 by restructuring the metadata classes to have a central class that manages metadata collection and communication. This change should be invisible to the application author as well as be backward compatible with existing databases, so we're putting it in the 1.0 branch and not the 1.1 branch. They will require database changes to support, most likely, so we'll be incrementing the version number to trigger the upgrade script. However we're committed to keeping them backwards compatible.
Improving Filtering Performance
Actually, I'm pessimistic we can achieve that much here. I already have a design for a new, more optimized search class, and the changes we're making to metadata should help. However, it's a big project and it won't be easy. Additionally, it will be a new, coequal search class with some real limitations. The tradeoff will be increased speed for 80% of the work we do. This will also probably go into the 1.0 branch for 1.01 or 1.02, as it should be just an additional API for searching and filtering. No existing sites should break, but new code won't be back-portable without upgrading.
I've seen some other low-level things in the API that I think could be improved by not trying to be quite so general. There is a preg_match() and a eval() that get performed with alarming frequency in every syntax instance, and I'm not 100% convinced it's necessary, certainly for PHP 4+. Plus it annoyingly ties in Syntax data to the global scope, and that is always a Bad Thing. Fixing this will start us on the way to being able to root out the dependencies on register_globals that sadly exists in 1.0. Anybody interested in looking into it can examine the pxdb::import() and pxdb::import_var() methods.
Braindump complete.