mageekblog - Mot-clé - bugsLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearMort de PHP6 + 120 joursurn:md5:d8e62a56d614b7135f22e026a6adad992010-07-09T11:30:00+02:002010-07-09T11:30:00+02:00mageekguyPHP Xarginfobugsinternals@mysqliPHPPHP 5.2PHP 5.3PHP XPHP6testfest<p>Les développeurs étant actuellement <a href="http://blog.mageekbox.net/?post/2010/07/07/RC-2-pour-PHP-5.2-et-5.3">très occupés par PHP 5.2 et PHP 5.3</a>, le rythme d'évolution du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> de <a href="http://www.php.net">PHP</a> n'a guère <a href="http://blog.mageekbox.net/?post/2010/06/30/Mort-de-PHP6-110-jours">évolué</a> sur les dix jours qui viennent de s'écouler, puisqu'il n'y a eu encore qu'une trentaine de modifications effectuées.</p>
<p>Les développeurs se <q>contentent</q> en effet pour l'essentiel de répercuter les évolutions et les corrections effectuées sur PHP 5.2 et PHP 5.3 sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>En conséquence, l'intégralité des modifications effectuées sur ce dernier sont soit des corrections de bugs, soit du nettoyage ou de l'optimisation.</p> <p>Ainsi, les bugs <a href="http://bugs.php.net?id=48930">#48930</a>,
<a href="http://bugs.php.net?id=48930">#48930</a>,
<a href="http://bugs.php.net?id=33210">#33210</a>,
<a href="http://bugs.php.net?id=52211">#52211</a>,
<a href="http://bugs.php.net?id=52238">#52238</a>,
<a href="http://bugs.php.net?id=52240">#52240</a>,
<a href="http://bugs.php.net?id=52237">#52237</a>,
<a href="http://bugs.php.net?id=51697">#51697</a>,
<a href="http://bugs.php.net?id=52262">#52262</a> et
<a href="http://bugs.php.net?id=50827">#50827</a> ont été corrigés.</p>
<p>Il y a eu également énormément de tests ajoutés, peut-être grâce à la <a href="http://blog.mageekbox.net/?post/2010/06/27/C-est-la-f%C3%AAte-du-test"><q>testfest</q> 2010</a> actuellement en cours.</p>
<p>C'est d'ailleurs le cas du test relatif au bug <a href="http://bugs.php.net/bug.php?id=52013">52013</a> qui a servi de support pour l'écriture du billet <a href="http://blog.mageekbox.net/?post/2010/06/27/C-est-la-f%C3%AAte-du-test"><q>C'est la fête du test</q></a> :</p>
<blockquote><pre>r300927 | ericstewart | 2010-07-02 04:45:56 +0200 (Fri, 02 Jul 2010) | 1 line<br />Changed paths:<br /> A /php/php-src/trunk/ext/phar/tests/bug52013.phpt<br /><br />Added test for bug 52013 to trunk.</pre></blockquote>
<p>Au total, il y a eu une cinquantaine de fichiers de test ajoutés ou modifiés sur la période qui vient de s'écouler.</p>
<p>Encore une fois, il n'y a donc eu rien de révolutionnaire au cours des dix derniers jours, les seules modifications notables a mon sens étant la migration de la bibliothèque <a href="http://fr.wikipedia.org/wiki/PCRE">PCRE</a> fournit avec <a href="http://www.php.net">PHP</a> en version 8.10 et l'ajout du support de <a href="http://www.hristov.com/oblog/blog/post/2010/07/08/mysqli-got-arginfo/"><code>arginfo</code></a> dans <code><a href="http://fr2.php.net/mysqli">mysqli</a></code>.</p>
<p>Si le passage en version 8.10 de la bibliothèque <a href="http://fr.wikipedia.org/wiki/PCRE">PCRE</a> ne change rien pour l'utilisateur du langage, il n'en va pas de même avec le support de <a href="http://www.hristov.com/oblog/blog/post/2010/07/08/mysqli-got-arginfo/"><code>arginfo</code></a> par <code><a href="http://fr2.php.net/mysqli">mysqli</a></code>.</p>
<p>En effet, grâce à <a href="http://www.hristov.com/oblog/blog/post/2010/07/08/mysqli-got-arginfo/"><code>arginfo</code></a>, <a href="http://www.php.net/">PHP</a> est capable de fournir un certain nombre d'informations au sujet des fonctions, des classes et des extensions, en ligne de commande, grâce aux options suivantes :</p>
<blockquote>
<ul>
<li><code>--rf nomDeFonction</code>, qui permet d'obtenir des informations au sujet d'une fonction.</li>
<li><code>--rc nomDeClasse</code>, qui permet d'obtenir des informations au sujet d'une classe.</li>
<li><code>--re nomExtension</code>, qui permet d'obtenir des informations sur une extension.</li>
<li><code>--ri nomExtension</code>, qui permet d'obtenir la configuration d'une extension.</li>
</ul>
</blockquote><p>Il est donc maintenant possible d'obtenir la totalité des informations relatives à <code><a href="http://fr2.php.net/mysqli">mysqli</a></code> en ligne de commande, puisque cette dernière supporte <a href="http://www.hristov.com/oblog/blog/post/2010/07/08/mysqli-got-arginfo/"><code>arginfo</code></a> totalement, alors que jusqu'alors, son support n'était que partiel.</p>
<p>Il est à noter que <a href="http://www.hristov.com/oblog/blog/post/2010/07/08/mysqli-got-arginfo/"><code>arginfo</code></a> sera par la suite utilisé dans le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> pour valider le type des arguments passés aux fonctions et aux méthodes.</p>
Enfin, il y a bien eu quelques optimisations au niveau de la gestion de la mémoire, mais rien de suffisamment significatif pour que cela vaille le coup de s'y attarder.
<p>La liste de diffusion des contributeurs, <a href="http://news.php.net/group.php?group=php.internals">internals@</a>, est également très calme, puisque la majorité des discussions concernent les prochaines versions de PHP 5.2 et PHP 5.3.</p>
<p>Je pense que cette période de stagnation dans le développement du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> de <a href="http://www.php.net/">PHP</a> perdurera jusqu'à ce que <a href="http://blog.mageekbox.net/?post/2010/07/07/RC-2-pour-PHP-5.2-et-5.3">les prochaines versions </a>de PHP 5.2 et PHP 5.3 soient sorties.</p>
<p>En effet, les développeurs concentrent leurs efforts sur ces dernières afin de sortir des versions les plus fiables possibles.</p>
<p>Une fois que cela sera fait, ils seront alors beaucoup plus disponibles pour faire évoluer le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> rapidement et revenir à un rythme de développement plus normal.</p>
<p>Personnellement, j'avoue, très égoïstement, que cette situation m'arrange, même si j'aimerais que le langage continue à évoluer rapidement.</p>
<p>En effet, les vacances se profilent à l'horizon, et en conséquence, je n'aurais pas forcément le temps et les moyens nécessaires pour suivre aussi bien et régulièrement que d'habitude le développement du langage.</p>
<p>Un rythme de développement moins soutenu me permettra donc de ne pas prendre trop de retard dans mes <q>chroniques</q>, comme certains aiment à les appeler.</p>http://blog.mageekbox.net/?post/2010/07/07/Mort-de-PHP6-120-jours#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/154Mort de PHP6 + 90 joursurn:md5:9366f6505eb1580f0b0fd8cb5151afb32010-06-11T08:00:00+02:002010-06-11T08:59:46+02:00mageekguyPHP XbugsGearmanLukas Kahwe SmithPDOPHPPHP XPHP-FPMPHP6Pierre JoyeRasmus Lerdorfsessionthreadingtraits<p>Le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> de <a href="http://www.php.net">PHP</a> a subit peu de changements sur la période qui vient de s'écouler.</p>
<p>En effet, un peu plus d'une quarantaine de modifications ont été faites, ce qui représente la moitié de celles qui ont été réalisées sur <a href="http://blog.mageekbox.net/?post/2010/06/03/Mort-de-PHP6-80-jours">la période précédente</a>.</p>
<p>Cependant, moindre quantité ne veut aucunement dire moindre qualité.</p> <p>Afin de ménager le suspense, je vais commencer, une fois n'est pas coutume, par le moins intéressant, à savoir les corrections de bugs, qui représente un peu moins de 25% des modifications.</p>
<p>Ainsi, les bugs <a href="http://bugs.php.net?id=51991">#51991</a>, <a href="http://bugs.php.net?id=51276">#51276</a>, <a href="http://bugs.php.net?id=50101">#50101</a>, <a href="http://bugs.php.net?id=51168">#51168</a>, <a href="http://bugs.php.net?id=51273">#51273</a>, <a href="http://bugs.php.net/?id=52001">#52001</a>, <a href="http://bugs.php.net/?id=51822">#51822</a> et <a href="http://bugs.php.net?id=52010">#52010</a> ont été corrigés, le plus important étant à mon sens le <a href="http://bugs.php.net/?id=51991">#51991</a> qui concerne <a href="http://fr.php.net/spl_autoload"><code>spl_autoload()</code></a>.</p>
<p>Un test, que <a href="http://www.php.net">PHP</a> ne passe pas pour le moment, a par ailleurs été ajouté dans le but de corriger le bug <a href="http://bugs.php.net/?id=39863">#39863</a>, qui concerne <a href="http://fr2.php.net/file_exists">file_exists()</a>.</p>
<p>Dans la continuité des corrections de bugs, le code a comme d'habitude été nettoyé par de petites corrections et optimisations qui permettront de compiler le langage plus facilement ou de supprimer des erreurs lors de la compilation.</p>
<p>Dans un tout autre registre, <a href="http://blog.thepimp.net/">Pierre Joye</a> a amélioré la fiabilité du générateur de nombre aléatoire du langage sous windows, afin de sécuriser un peu plus les sessions.</p>
<p>Du coup, la version du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> de <a href="http://www.php.net">PHP</a> pour windows dispose maintenant également des directives <code><a href="http://fr2.php.net/manual/fr/session.configuration.php#ini.session.entropy-file">session.entropy*</a></code>.</p>
<p>L'implémentation des <a href="http://blog.mageekbox.net/?post/2010/05/17/Et-si-on-tirait-des-traits">traits</a> poursuit quant à elle son cours, avec la prise en compte des variables statiques de classe.</p>
<p>Cependant, tout cela n'est que du petit lait par rapport à l'implémentation du déférencement des tableaux (sic) lorsqu'ils sont en valeur de retour d'une fonction ou d'une méthode.</p>
<p>En effet, sous ce terme barbare, issue de ma traduction très personnelle de la <a href="http://wiki.php.net/rfc/functionarraydereferencing"><abbr title="Request For Comment">RFC</abbr> correspondante</a>, se cache une amélioration syntaxique très demandée depuis très longtemps, à savoir la possibilité d'accèder à l'index d'un tableau directement lorsque ce dernier est le résultat d'une fonction ou d'une méthode.</p>
<p>En clair, il est maintenant possible de faire avec la version du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> cela :</p>
<blockquote><pre><code><?php<br /> <br />function fruit ()<br />{<br /> return array('a' => 'apple', 'b' => 'banana');<br />}<br /> <br />echo fruit()['a']; // apple<br /> <br />?><br /></code></pre></blockquote>
<p>Cerise sur le gâteau, le chaînage est supporté, de la manière suivante :</p>
<blockquote><pre><code><?php<br /> <br />class foo {<br /> public $array = array();<br /> <br /> public function __construct() {<br /> $this->array = array(1, 2.3);<br /> }<br /> <br /> public function bar() {<br /> return $this->array;<br /> }<br />}<br /> <br />$foo = new foo;<br />var_dump($foo->bar()[1]); // float(2.3)<br />$foo->array[] = $foo;<br />var_dump($foo->bar()[2]->bar()[2]->array[0]); // int(1)<br /> <br />?><br /></code></pre></blockquote>
<p>Les choses pourraient de plus ne pas s'arrêter là, puisqu'il y a actuellement une discussion pour supporter cela :</p>
<blockquote><pre><code><?php<br /><br />$result = new (ResultMaker()->getIt());<br />// or<br />$result = (new ResultMaker())->getIt();<br /><br />?><br /></code></pre></blockquote>
<p>Cependant, comme le montre l'exemple ci-dessus, il y a débat par rapport à la précédence de <code>new</code> par rapport aux parenthèses, et en conséquence, tant que cette ambiguïté n'est pas réglée, il y a peu de chances de voir une implémentation arriver dans le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.
</p>
<p>Malgré cela, cet ajout a été unanimement salué sur <a href="http://news.php.net/php.internals/">internals@</a>, qui est par ailleurs toujours engluée dans le débat concernant le contrôle du type des arguments, malgré <a href="http://news.php.net/php.internals/48700">plusieurs demandes de vote</a> de la part de <a href="http://pooteeweet.org/">Lukas Kahwe Smith</a> afin que la question soit réglée une bonne fois pour toute.</p>
<p><a href="http://pooteeweet.org/">Lukas Kahwe Smith</a> suit en effet de très prés le débat, malgré l'annonce <a href="http://blog.mageekbox.net/?post/2010/05/06/Un-coup-dur-pour-PHP">de son départ</a> de la communauté des contributeurs.</p>
<p>Il est difficile de dire si c'est parce qu'il est l'auteur <a href="http://wiki.php.net/rfc/typecheckingstrictandweak">de l'une des <abbr title="Request For Comment">RFC</abbr> sur le sujet</a>, ou s'il ne s'agissait que d'un faux départ, mais dans tous les cas, il est fidèle à sa réputation de <q>process guy</q> et tente de structurer le débat.</p>
<p>En parlant de débat, celui concernant l'intégration dans les pilotes de <a href="http://fr2.php.net/pdo">PDO</a> de fonctionnalités spécifiques au <abbr title="Système de Gestion de Base de Données">SGBD</abbr> sous-jacent est apparament terminé, puisque des fonctions spécifique à <a href="http://www.postgresql.org/">postgresql</a> ont été ajoutées dans le pilote <a href="http://fr2.php.net/pdo">PDO</a> correspondant.</p>
<p>J'ai par ailleurs eu <a href="http://news.php.net/php.internals/48697">la satisfaction d'apprendre</a> toujours via <a href="http://news.php.net/php.internals/">internals@</a> qu'il serait techniquement possible de modifier le moteur de <a href="http://www.php.net">PHP</a> afin de pouvoir définir la valeur d'une constant à l'aide d'une expression, de la manière suivante :</p>
<blockquote><pre><code><?php<br /><br />namespace foo\bar\directories {<br /> const tmp = __DIR__ . '/tmp';<br />}<br /><br />?><br /></code></pre></blockquote>
<p>Je sais donc maintenant que si j'arrive à en trouver le temps, cela vaudra le coup que je me replonge en profondeur dans le code du <a href="http://fr.wikipedia.org/wiki/Zend_Engine">Zend Engine</a>.</p>
<p>Enfin, <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> a dernièrement proposé de modifier <a href="http://wiki.php.net/rfc/fpm">PHP-FPM</a> afin de pouvoir l'interfacer facilement avec <a href="http://gearman.org/">Gearman</a>.</p>
<p><a href="http://www.php.net">PHP</a> n'étant pas parallélisable, puisqu'il ne gère pas les <a href="http://fr.wikipedia.org/wiki/Thread_%28informatique%29">threads</a>, la solution passerait par l'affectation d'un processus FPM à un script <a href="http://www.php.net">PHP</a> spécifique correspondant à une tâche dévolue à <a href="http://gearman.org/">Gearman</a>.</p>
<p>J'avoue que l'idée est intelligente, mais je pense qu'il est dommage de limiter une telle fonctionnalité à <a href="http://wiki.php.net/rfc/fpm">PHP-FPM</a>.</p>
<p>J'ai bien <a href="http://news.php.net/php.internals/48726">évoqué</a> le <a href="http://fr.wikipedia.org/wiki/Thread_%28informatique%29">threading</a> comme alternative plus généraliste, mais comme d'habitude, <del>la colère divine a frappé</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Ramus</a> a <a href="http://news.php.net/php.internals/48727">refusé net</a> l'idée.</p>
<p>Cette rétrospective est maintenant terminée, vous pouvez reprendre une activité normale.</p>http://blog.mageekbox.net/?post/2010/06/11/Mort-de-PHP6-90-jours#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/140