Hey Pierre, I was wondering if you'd be willing to pitch a rollback of r300894 post-code-freeze. If not, I'll start writing error detection code to accomodate for PHP 5.4 :^)
Thanks, Edward Excerpts from Edward Z. Yang's message of Sun Jan 08 11:41:50 -0500 2012: > Hello Pierre, > > The whole situation is a slightly complicated. One question to ask is: "Is > there code in PHP 5.3 that worked, which now no longer works in PHP 5.4?" The > answer to this question is *yes*, as seen by this example: > > var_dump(iconv("UTF-8", "ISO-8859-1//IGNORE", "\xE4\xB8\xAD")); > > Now, the reason why this worked in PHP 5.3 was because of a "bug", namely > #52211, so the situation in PHP 5.3 was "two wrongs make a right" (except, > of course, in the case where more than 8000 bytes are involved.) Fixing one > of the bugs causes "//IGNORE" to stop working entirely. So if you ask > another question, "Are there less bugs in PHP 5.4 than in PHP 5.3", the answer > is also yes. > > Now, consider the perspective of a library developer using iconv //IGNORE. In > PHP 5.3, effective workarounds exist: I can fix #52211 by checking for > captured > errors and returning false instead, I can fix #48147 by splitting my input > into > 8kb chunks (mumble utf-8 boundaries) and feeding it to iconv individually. > > In PHP 5.4, I am left with no such redress. Because iconv will now always > return false upon an input, regardless of whether or not //IGNORE is set, > I can no longer do conversions with invalid inputs. It's worth repeating: > #48147 is no longer "iconv with //IGNORE cuts string", it's "iconv with > //IGNORE doesn't work". At all. I *guarantee* you large amounts of PHP code > will be affected. > > It seems it would be better to wait for a complete fix, than to fix it > partially > and leave some (widely used) functionality completely broken. > > Is this a bug in glibc? I sincerely hope I can convince Ulrich Drepper > so, since I agree that his API is completely off the wall: > > http://sources.redhat.com/bugzilla/show_bug.cgi?id=13541 > > But as it stands, Ulrich does not seem to believe that there is any bug (see > that he's closed both of my upstream bugs; and, since //IGNORE is wholly > undocumented, there is not really any spec I can hold him to), so it would > seem > most advisable for PHP to play nice, since most users are not in the position > to patch their glibc installation. > > Cheers, > Edward > > Excerpts from Pierre Joye's message of Sun Jan 08 07:36:03 -0500 2012: > > hi, > > > > I closed one bug (unrelated to what you have) and added a comment to > > the /ignore issue. I do not see a bug in PHP but if you have any info > > that shows that PHP causes this problem, then please add them to the > > bug so we can fix it, if not I will bogus it as there is no bug in php > > but in iconv (glibc or other implementations). > > > > On Thu, Jan 5, 2012 at 7:42 PM, Edward Z. Yang <ezy...@php.net> wrote: > > > Hello all, > > > > > > I know it seems like there always is infinite pile of work to do before > > > the PHP 5.4 release comes out, but I think this bug is worth looking at. > > > > > > https://bugs.php.net/bug.php?id=52211 > > > > > > I suggest reverting r300894, since this causes //IGNORE to stop working. > > > Preserving functionality should probably be more important. > > > > > > The underlying cause of this bug is this one: > > > > > > https://bugs.php.net/bug.php?id=48147 > > > > > > But I don't think this feature is going to get implemented in time. > > > > > > Edward > > > > > > -- > > > PHP Internals - PHP Runtime Development Mailing List > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php