The Gearman project has been slowly migrating from C to C++. This migration has gone under the radar due to the popularity of Cent OS 5 and given gearmand version of 0.14. This version of gearmand worked with any version of pecl/gearman and there was never any compelling reason to upgrade gearmand. That changed with the release of pecl/gearman 1.0
In my last post I explained how to build a development version of a pecl extension. Now we will go through the bug lifecycle in the pecl/memcache extension. Besides writing the actual C code to fix the bug, it is considered a best practice to write a test that verifies the bug has been fixed. I will use PECL bug #16442 - memcache_set fail with integer value as an example, even though it is already been fixed.
My last post I explained how to efficiently checkout the php svn repository. Now we need to start building pecl extensions and even php itself. I prefer to use Cent OS for my linux needs and naturally use rpm's to track all my packages. This means I have a stable version of php installed with all the various extensions that I could want. Rather than messing with this stable version, I am going to build a custom debug build of php in /usr/local. I say "debug", because this build of php will use the --enable-debug option to allow easy debugging using gdb. Since I am doing pecl extension development, I don't want to build the trunk version of php. I want to build my pecl extensions against the most recent stable version of php to isolate environmental issues as much as possible.
The svn repository for PHP is rather large. Trying to checkout the entire repo is both time consuming and wastes a lot of space. Most people, including myself, are only concerned with a subset of the repository. One of the advantages svn has over git is the ability to do partial checkouts of the repository. I am going to borrow from an old email Rasmus sent that details how to do a partial checkout of the PHP source code.
I just released memcache versions 2.2.6 and 3.0.5 in PECL. The 3.0.5 release fixed the delete weight bug that prevented people from upgrading to the latest version of the memcached daemon. I know this was a major issue for many shops and I hope it will allow people to continue to use the 3.0.x branch as we try to finish the non-blocking i/o changes.
These two releases are my first releases as part of the development team working on PECL memcache and the first releases in almost 20 months. I took over, along with Pierre-Alain Joye, when Antony Dovgal and Mikael Johansson went inactive back in March 2010. As luck would have it, I suddenly became busy myself. Inheriting a project, especially one that is half-done, takes quite a bit of time to get comfortable with. The 7 months since I have started have flown by and I wish I had gotten more done. Now that some critical bug fixes are out of the way, I hope to focus more on the non-blocking i/o branch development.
Pierre and I are working on a roadmap that focuses on getting much of the 3.0.x code into a stable state. The 2.2.x branch will probably not see any new development, but will continue to be maintained with bug fixes.