Re: PHP-5.5 unpack change broke pecl/pear

From: Date: Mon, 24 Dec 2012 18:58:38 +0000
Subject: Re: PHP-5.5 unpack change broke pecl/pear
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-64429@lists.php.net to get a copy of this message
On Mon, 24 Dec 2012 12:13:35 -0000, Anthony Ferrara <ircmaxell@gmail.com> wrote:
You're right. It does break BC, but this was a bug fix.
https://bugs.php.net/bug.php?id=61038 The behavior is incorrect in that regard.
However in this case that *bug* does have fairly significant BC implications. In fact, how I read the specification is that the original binary format is NULL padded, not the resulting string. Therefore, you could make the argument that the new behavior is wrong.
The Perl docs say:
´A´ strips trailing whitespace and nulls, ´Z´ strips everything after the first null, and ´a´ returns data with no stripping at all.
PHP docs are silent on this matter. Yes, PHP does not have to follow Perl's specification, but 1) PHP's pack/unpack was clearly modeled after Perl 2) is desirable to have close semantics to Perl's implementation as it benefits those who use both languages like the submitter of #61038 Given 1), perl's docs and implementation and the absence of evidence to the contrary (like PHP tests and documentation), it's clear to me that pre-5.5 behavior is a bug (no quotes). Now you may think that the cost of fixing this bug does not cover its benefits, possibly given alternative solutions. What I can say about that is that I think that the alternative solution that you propose (switching the behavior of "a" and "Z") would be trading a relatively minor short term inconvenience (this will affect several orders of magnitude less people than the htmlentities() change in 5.4) for one that will exist indefinitely and I consider that a poor choice. -- Gustavo Lopes

« previous php.internals (#64429) next »