Become a Patron!

My Amazon wishlist can be found here.

Life Line

PHP Look Back 2004

Hello! Here is this years look back, it takes a little more work then Zend's weeklies, and I can not say that it is 100% objective but it should give a fairly good overview of this years developments in PHP. Here we go...

The year 2004 started in January with Andi wanting to release PHP 5 RC1 and Pierre-Alain announcing pecl/date which is still not finished, but that's more my fault ;-). A couple of days later Andi started another thread on "Ability to lower PHP memory usage" where he suggested to remove a couple of functions from ext/standard because they were hardly used. The thread went on for a while without concluding if it was a good idea (less memory) or not (more headaches and installation diversity). We also had a nice thread on SimpleXML in which Sterling wanted (and changed it) back to it's basics. We also voted to make SPL part of the standard PHP 5 distribution. And some guy wanting to have the $ as an optional thing in front of variables.

In February we had our first thread on Apache 2 and threads, certainly not the last one. We also decided on including SOAP into PHP 5 after dicussing RC1 again. We saw also some interesting behavior with "echo -2147483648/-1" giving a FPE. At the end of the month we discussed problems with signatures for inherited methods.

March started with more talks on RC1 and we decided to hold off until some little problems were fixed. We were also getting some problems with our bugs and master servers hosted at Redundant. Later we would move our bug system (and other services) to new servers. Boulat mailed the internals list about a new security related directive for PHP. Ilia answered that no new features are added to PHP 4.3.x any more, besides this there is also a architectural reason for it, and thus nothing was added in the end. John started a topic on "Studlycaps and MySQLi" with "Not to start a big flame war here...", but that didn't help. A long thread we had discussing if the new MySQLi extension should use suckyCaps for it's method and property names or not. In the end we ended not using the more readable underscore seperation as Georg smartly denied to change it.

On the first day of April Andi called for both PHP 5 RC2 and PHP 4.3.5pl1. The latter because PHP 4.3.5 had some problems with shared extensions and destructors for resources and some other issues. Instead of releasing PHP 4.3.5pl1, we instead released PHP 4.3.6. Somebody also suggested to make all normal functions also raise exceptions instead of throwing errors, the answer 'NO' was the answer (and not 42), although we had another thread started by John about extensions with an OO interface throwing exceptions instead of errors. Sterling argued that "Tidy's current error handling scheme is totally messed up" as too many things where not warnings but exceptions. This was fixed later by John. Jason Garber wrote to the list suggesting a new operator or construct to do "$nCustID = (integer) (isset($_POST['nCustID']) ? $_POST['nCustID'] : 0));". This sparked a long thread discussing a new construct or a new function. The conclusion is to go with a new function, but this has not been added yet.

In May David Sklar wrote to the list suggesting to add a form display and processing module to the PHP distribution. Wez pointed out that this is not desired as discussed before. Lukas was rallying to make require throw exceptions when a file could not be found. It stayed with a short thread, as this is obvious that we won't want internal functions suddenly to start throw exceptions. Marcus started a discussion about some mechanism to allow "null" variables together with classes as type hints. Current status: still nothing done with it. Rasmus sent a patch to the list to make PHP compile as a non-pic module for Apache, increasing performance up to 30%. This item came back a couple of times later, but it is still not added to CVS. Andrei added a patch to the INI system to allow already defined entries to be reused later on. After some discussion it was decided though to postpone this to PHP 5.1. We also spoke briefly about the strange hacks for floatingpoint and serialization. This issue is now finally fixed in PHP 4.3.10/PHP 5.0.3 due to our own implementation of a string to float algorithm. Wez cooked up a patch to fix the order in which extensions are initialized when starting PHP, to satisfy dependencies. This feature will be in PHP 5.1.

June was the month in which the internals list was receiving 'bugfixes', which weren't fixes at all, and some improvements which weren't improvements either. Some of the patches even broke BC. Christian summed it up nicely to the guy, but he didn't seem to get it. The discussion later turned into another discussion on Apache 2, in which Rasmus explained the problems once more. Andi suggested to upgrade to PHP 5 to show that it is ready, but we ended up not doing it.

The memory leaks were fixed in July, but Andi decided to turn it off for 5.0.0 anyway. We received a funny CVS account request just after we discussed about the ifsetor() operator again. On July 13th PHP 5 was finally released. Marcus tried a patch to speed up null, true and false but this was reverted. George Wiffen wrote a very intersting mail discussing all the different problems with floating point numbers in PHP, but we did not do any changes related to this. On the 20th we had some moron spamming the bug system because he did not agree on his bugs being bogussed. Sara wrote code for a goto operator, which we later removed as we could not agree on the implementation of it, this spawned Stefan's reaction to kill exceptions too.

In August Jason asked about better date/time support in PHP. This got myself working on the date parsing stuff in PHP again, but I did not have the time to finish it yet. Andi also rolled PHP 5.0.1, but still not everybody was happy with namespaces not being in PHP 5. Adam Q started a thread about SQLite's insecurity because it could be downloaded from the webroot. Both Zeev and Ilia told him that was non-sense. At the end of the month Roshan wrote a rant to the mailinglist about extensions being "experimental" for too long. Rasmus pointed out once more that we're just a bunch of volunteers, and both Sterling and Robert Amos summerize things nicely. Sebastian wrote to the list about adopting PEP (Python Enhancement Proposals) for PHP to structurize development a bit. And although some ideas might be useful it's unlikely they will be adopted any time soon. We also discussed multi-byte support again, and it looks like some people are going to kick start this for PHP 5.2 finally.

In September Andi committed a new VM for PHP 5.1, including an explanation. This new VM should perform better in a lot of cases. After some discussions Andi modified it so that the old executor can still be used for debuggers and the like. Also Joe's DVAL_TO_LVAL patch was committed, which would later cause quite some problems with code using the 32th bit in integer values. Subsequently this patch was reverted later. I put some work in converting Rasmus' statcallpatch to something usable with a configure switch. Although this patch really does quite a lot for FreeBSD systems, the patch was discarded unfortunately. Andi did put some work into a realpatch cache which solves a bit of the problems. Joe submitted a patch to build PHP as a non-PIC DSO, but again, nothing was done with this patch even though it's proven to be 10-30% faster. Hans Zaunere wrote about problems on 64bit platforms' library locations. Support for a different library directory than /lib was added in PHP 4.3.10 and PHP 5.0.3 in December. Andrey was claiming that "Only bugs are backported to 4.3", which is ofcourse not true ;-).

Sebastian ran some benchmarks in October with different GCC optimization flags showing interesting results. Andi added another performance patch to PHP 5.1, but unfortunately this one breaks listing used variables in Xdebug. Ron suggested to extend empty() to use multiple arguments, but this was discussed a lot in the past already. Kamesh from the Netware porting team wanted to add two new switches to the CLI SAPI of PHP for special Netware related problems. In the end we ended up not doing it because it's not CLI's task. We also discussed plans for PHP 5.1. One of the things is unicode support, but we will most likely do that for PHP 5.2. At the end of the month Sean forwarded a note about curl not caring about safemode. Adam Greenfeld summarizes all the points why it should not be PHP's job to guard against. Besides that you can configure cURL to not allow file:// URLs.

In November Klaus sent in an "Upload Meter Patch" but it can not work at all, or atlease not reliable. We also had somebody wanting fork() for Windows - but that concept does not exist and emulating it is quite impossible too. We also went ahead exporting iconv functions, and installing headers for them. This will be useful for unicode support later on.

In December Alan suggested the outsourcing the activation of new CVS accounts, to which Nuno suggested to clean up non-used accounts. Rasmus was wondering what problem he was trying to solve. Sebastian forwarded a link to one of the Apache developers' posting about the "anti-Apache 2 FUD". This spawned a discussion about why people are not switching to Apache 2. The reasons is simply that PHP developers don't really need it. The same discussion also touched why people are not switching to PHP 5. Although Jochem used the wrong example application. PHP 4.3.10 and PHP 5.0.3 were released as a result of a list of security platforms. At the same time the Santy worm was attacking phpBB. Although the phpBB people put out a totally bogus statement, more bad things about PHP were said. I wrote a little FUD buster and now also has a statement.


This article has a short URL available:


No comments yet

Add Comment


Will not be posted. Please leave empty instead of filling in garbage though!

Please follow the reStructured Text format. Do not use the comment form to report issues in software, use the relevant issue tracker. I will not answer them here.

All comments are moderated