mageekblog - Mot-clé - Rasmus Lerdorf
Le blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.
2021-12-02T08:20:54+01:00
Frédéric Hardy
urn:md5:26874ca5b8cd4cac8d08b0e68e64f63a
Dotclear
Rasmussisme #9
urn:md5:dc84164e3f38ff2eb98cb58ae14560d5
2012-02-15T09:00:00+01:00
2012-02-15T09:00:00+01:00
mageekguy
PHP
Rasmus LerdorfRasmussisme
<blockquote><pre><code>18:03 <Rasmus> compared to French grammar, nothing is hard</code></pre></blockquote>
http://blog.mageekbox.net/?post/2012/02/15/Rasmussisme-9#comment-form
http://blog.mageekbox.net/?feed/atom/comments/327
Rasmussisme #7
urn:md5:19e3ce6e26e833a415f682ef49ca747e
2011-10-05T07:30:00+02:00
2011-10-05T07:30:00+02:00
mageekguy
PHP
PHPRasmus LerdorfRasmussisme
<blockquote><pre><code>juin 30 00:55:59 <rasmus> Yup, this -S thing is going to snowball on us<br />juin 30 00:56:02 <rasmus> no way around it<br />juin 30 00:56:28 <rasmus> Just like PHP was not supposed to have user-definable variables in the beginning</code></pre></blockquote>
http://blog.mageekbox.net/?post/2011/08/09/Rasmussisme-7#comment-form
http://blog.mageekbox.net/?feed/atom/comments/285
Rasmussisme #5
urn:md5:3a5ac06a84b9da12cd887e03162a373e
2011-09-06T10:00:00+02:00
2011-09-06T10:00:00+02:00
mageekguy
PHP
PHPRasmus LerdorfRasmussisme
<blockquote><pre><code>mai 16 02:02:13 <Rasmus> I'm always afraid of letting the magic smoke out of the auto* toolchain whenever I touch it</code></pre>
</blockquote>
http://blog.mageekbox.net/?post/2011/08/09/Rasmussisme-5#comment-form
http://blog.mageekbox.net/?feed/atom/comments/283
Rasmussisme #4
urn:md5:0f00fa6a4e392da1ca79da1142444925
2011-08-22T10:30:00+02:00
2011-08-22T10:30:00+02:00
mageekguy
PHP
Rasmus LerdorfRasmussisme
<blockquote><pre><code>mars 18 23:00:20 <Rasmus_> we are an open source project and we have to rely on people to first not flake out and commit crazy things on their own
mars 18 23:00:45 <Rasmus_> and second to stay aware and catch when someone does either flake out and commit weird shit or have their accounts jacked
</code></pre></blockquote>
http://blog.mageekbox.net/?post/2011/08/09/Rasmussisme-4#comment-form
http://blog.mageekbox.net/?feed/atom/comments/282
Rasmussisme #3
urn:md5:33c05eeac03e6db1ea3bc54ebc0346a0
2011-08-16T09:00:00+02:00
2011-08-18T07:32:22+02:00
mageekguy
PHP
Rasmus LerdorfRasmussisme
<blockquote><pre><code>févr. 23 20:37:40 <Rasmus> that machine is quite unhappy<br />févr. 23 20:37:49 <Rasmus> and it has 885M of ram?<br />févr. 23 20:37:51 <Rasmus> wtf?</code></pre>
</blockquote>
http://blog.mageekbox.net/?post/2011/08/09/Rasmussisme-3#comment-form
http://blog.mageekbox.net/?feed/atom/comments/281
La feuille de route officielle de PHP 5.4
urn:md5:44bd0f1597dfdbfbc7fd5a37a2b83a82
2011-06-21T13:15:00+02:00
2011-06-21T15:20:36+02:00
mageekguy
PHP X
internals@PHPPHP XRasmus LerdorfRobert EiseleStephan Marrtraitstrunk
<p>Peu de gens semblent s'en rendre compte, mais la façon dont <a href="http://www.php.net">PHP</a> est développé évolue fortement depuis quelques années.</p>
<p>De nouveaux outils et processus ont été mis en place, dans l'optique de structurer plus fortement la conception fonctionnelle et technique du langage.</p>
<p>Le <a href="http://wiki.php.net">wiki</a> est l'un de ces outils, et s'il a été considérablement sous-utilisé à mon sens depuis sa création, il devient depuis quelques temps une vraie mine d'or pour celui qui souhaite trouver des informations sur le développement du langage.</p>
<p>Pour preuve, j'y ai trouvé aujourd'hui <a href="https://wiki.php.net/todo/php54">la feuille de route de PHP 5.4</a>, dont la version alpha 1 <a href="http://blog.mageekbox.net/?post/2011/06/20/PHP-5.4-alpha-1"><del>est sortie</del> a été annoncée il y a peu</a>, et elle est très intéressante.</p> <p>Elle nous apprend en effet que la première <q>release candidate</q> est prévue pour septembre 2011, et qu'elle devrait être suivie par d'autres toutes les deux semaines jusqu'à ce que la stabilité du langage soit jugée satisfaisante.</p>
<p>D'ici là, nous devrions pouvoir nous mettre sous la dent fin juillet une autre version alpha, suivie par une beta fin août.</p>
<p>Le calendrier est donc clair, mais j'éviterais de trop m'y fier, car par le passé, de tels jalons ont déjà été posés et n'ont jamais été atteints.</p>
<p>La situation d'aujourd'hui est cependant très différente de celle de l'époque, car beaucoup de problèmes ont été résolus depuis, notamment au niveau de la gestion du projet.</p>
<p>La <abbr title="Request For Comments">RFC</abbr> relative <a href="https://wiki.php.net/rfc/releaseprocess">au processus de release</a> du langage est en cours de validation, et <a href="https://wiki.php.net/rfc/releaseprocess/vote">les premiers votes</a> semblent indiquer un consensus majeur autour de cette question, même si le nombre de votants est relativement faible pour le moment et que des contributeurs historiques ne sont pas encore exprimés.</p>
<p>J'ai donc bon espoir que le calendrier soit finalement respecté, même si je prédis quelques difficultés d'ici la sortie de la version finale, d'autant qu'elle est sous la responsabilité des <q>release managers</q> Stanislav Malyshev, <abbr title="Also Known As">aka</abbr> <a href="http://www.ohloh.net/p/php/contributors/120259094156">stas</a>, et David Soria Parra, <abbr title="Also Known As">aka</abbr> <a href="http://www.ohloh.net/p/php/contributors/120259169917">dsp</a>, qui sont plus actifs sur <a href="http://news.php.net/php.internals">internals@</a> que sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>Outre le calendrier, la feuille de route nous apprend également ce qu'il reste à faire au niveau technique et fonctionnel d'ici septembre 2011.</p>
<p>Elle nous apprend notamment que faire passer un maximum de tests unitaires au vert reste une préoccupation forte depuis <a href="http://news.php.net/php.internals/52328">la remarque</a> de <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> à ce sujet.</p>
<p>La gestion des <a href="http://blog.mageekbox.net/?post/2010/05/17/Et-si-on-tirait-des-traits">traits</a>, et plus particulièrement de leur interaction avec <a href="http://fr.php.net/reflection">l'introspection</a>, est aussi au menu des contributeurs.</p>
<p>Ce point semble d'ailleurs être relativement délicat, car les choses ne semblent pas avoir évoluées depuis ma discussion à ce sujet avec <a href="http://www.stefan-marr.de">Stephan Maar</a>, l'auteur de l'implémentation des traits dans <a href="http://www.php.net">PHP</a>, lors du <a href="http://blog.mageekbox.net/?post/2010/12/06/Nouvelle-conf%C3%A9rence-%21">rendez-vous AFUP correspondant</a>.</p>
<p>Cela confirme cependant que les traits feront bien partis de la version 5.4, sauf problème majeur.</p>
<p>Du nettoyage est en outre prévu, notamment au niveau des <abbr title="Server Application Programming Interface"><a href="http://en.wikipedia.org/wiki/Server_Application_Programming_Interface">SAPI</a></abbr> qui ne sont plus maintenues et qui devraient donc être supprimées.</p>
<p>Il reste de plus quelques patches à intégrer, relatif à la gestion des signaux au niveau du Zend Engine et à la gestion des erreurs, qui devraient être plus explicite avec cette nouvelle version.</p>
<p>Un <a href="https://wiki.php.net/rfc/instance-method-call">patch</a> permettant également de faire appel à un attribut ou une méthode de classe aussitôt un appel à l'opérateur <code>new</code> devrait également être intégré.</p>
<p>Enfin, il faut également que les contributeurs s'assurent que la documentation relative à l'installation de PHP 5.4 est à jour.</p>
<p>La liste des choses à faire au niveau technique est donc encore longue, et la liste fonctionnelle n'est pas en reste, car de nombreux points, souvent très conflictuels au sein de la communauté, doivent encore être évoqués.</p>
<p>Les contributeurs semblent vouloir entre autre réserver un espace de nom au langage, qui pourrait être <code>\php</code>.</p>
<p>Cependant, pour l'instant, il n'est pas précisé l'usage qu'il pourrait en être fait à l'avenir dans la feuille de route, et je n'ai pas encore pris le temps de rechercher des informations complémentaires.</p>
<p>Ils doivent également discuter de la pertinence de transformer <code>int</code>, <code>float</code> et les autres types natifs en mot réservé, dans l'optique de mettre en place un jour le contrôle de type sur les arguments.</p>
<p>L'idée n'est donc pas encore abandonnée, malgré les débats houleux qu'elle a suscité par le passé parmi les développeurs de <a href="http://www.php.net">PHP</a>.</p>
<p>L'erreur <code>E_STRICT</code> pourrait de plus faire parti de <code>E_ALL</code> avec PHP 5.4, et il pourrait être possible d'avoir au sein de <code>$_POST</code> les données brutes reçues par le serveur.</p>
<p>Le support de la notation binaire pour les entiers est également au programme et viendrait, si elle était adoptée, compléter la notation octale et hexadécimale.</p>
<p>Les <q>magic quotes</q>, l'un des plus gros boulets historiques du langage, pourrait de plus venir s'ajouter à la liste des boulets supprimés, qui contient déjà les directives <code>safe_mode</code>, <code>register_globals</code> ainsi qu ses dérivés.</p>
<p>En terme de syntaxe, la possibilité d'utiliser une syntaxe plus courte pour la définition des tableaux devrait être à nouveau discutée, peut être grâce à l'arrivée sur <a href="http://news.php.net/php.internals">internals@</a> de <a href="http://www.xarg.org">Robert Eisele</a>, l'auteur du <a href="http://www.xarg.org/2011/06/php-hacking/"><q>fork</q></a> récent de <a href="http://www.php.net">PHP</a> qui intègre une telle fonctionnalité.</p>
<p>Et si les discussions aboutissent, PHP 5.4 devrait disposer d'un serveur web intégré destiné au développement (et uniquement au développement).</p>
<p>Enfin, les contributeurs veulent également parler de l'utilisation d'une classe native pour la gestion des sessions, et du fait de pouvoir imposer un type <code>callback</code> pour un argument de fonction ou de méthode.</p>
<p>Le programme pour les mois à venir est donc précis, mais chargé.</p>
http://blog.mageekbox.net/?post/2011/06/21/La-feuille-de-route-officielle-de-PHP-5.4#comment-form
http://blog.mageekbox.net/?feed/atom/comments/266
PHP : les nouvelles du front #420
urn:md5:775675c091a202ec40c14b5041c42805
2011-05-27T09:00:00+02:00
2011-05-27T12:54:34+02:00
mageekguy
PHP X
GCCinternals@OracleparfaitPHPPHP 6Pierre JoyeRasmus LerdorfRFCshort_open_tagstrunk
<p>10 jours viennent une nouvelle fois de s'écouler depuis <a href="http://blog.mageekbox.net/?post/2011/05/15/PHP-%3A-les-nouvelles-du-front-410">mon précédent billet</a> relatif au développement de <a href="http://www.php.net">PHP</a>.</p>
<p>À l'époque, les échanges sur la liste de diffusion des contributeurs, <a href="http://news.php.net/php.internals">internals@</a>, commençait à se calmer, après une période d'effervescence déclenchée par la volonté affichée des contributeurs de sortir une nouvelle version du langage basée sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>De vieux débats avaient alors ressuscité, notamment au sujet des annotations et du contrôle du type des arguments, ce qui avait entrainé des discussions parfois virulentes s'étalant sur plusieurs jours.</p>
<p>Des compromis avaient cependant finalement été trouvés, et <a href="http://news.php.net/php.internals">internals@</a> semblait donc bien partie pour retrouver son calme relatif habituel.</p>
<p><a href="http://blog.mageekbox.net/?post/2011/05/15/PHP-%3A-les-nouvelles-du-front-410">J'avais alors supposé</a> que ce n'était que temporaire, car <a href="http://blog.thepimp.net">Pierre Joye</a>, l'un des développeurs principaux du langage, ne s'était pas exprimé puisqu'il était en vacances.</p>
<p>Il semble cependant que je me sois trompé, car son retour n'a pas pour l'instant relancé les débats, même si quelques indices me laisse supposer que des discussions sont en cours en dehors d'<a href="http://news.php.net/php.internals">internals@</a>.</p> <p>Il n'y a donc pas eu de remises en cause, pour le moment, des décisions prises au cours de la période précédente, et pour l'instant, il semble bien que <a href="http://www.php.net">PHP</a> supportera un jour <a href="https://wiki.php.net/rfc/annotations-in-docblock">les annotations sous la forme de commentaires</a> dans le code.</p>
<p>Pour autant, d'autres décisions ont été prises, suite à des propositions ou à des questions posées sur la liste de diffusion.</p>
<p>Ainsi, les messages d'erreurs relatifs à l'analyse du code source d'un script vont (enfin) être amélioré afin d'être plus explicite.</p>
<p>La prochaine version du langage signera donc peut être bien la fin du <a href="http://www.google.fr/?q=T_PAAMAYIM_NEKUDOTAYIM#sclient=psy&hl=fr&site=&source=hp&q=T_PAAMAYIM_NEKUDOTAYIM&btnG=Recherche+Google&aq=f&aqi=&aql=&oq=T_PAAMAYIM_NEKUDOTAYIM&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=e9ecfc087bf1bb74&biw=1920&bih=964">fameux message</a> d'erreur suivant :</p>
<blockquote><pre><code>Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in Command line code on line 1</code></pre></blockquote>
<p>Il devrait en effet être avantageusement remplacé par :</p>
<blockquote><pre><code>Parse error: syntax error, unexpected :: in Command line code on line 1</code></pre></blockquote>
<p>Et plus généralement, les noms des symboles correspondant aux instructions du langage devrait être remplacé par un descriptif explicite, tel qu'expliqué dans la <a href="https://wiki.php.net/rfc/improved-parser-error-message"><abbr title="Request For Comments">RFC</abbr> correspondante</a>.</p>
<p>La <abbr title="Standard PHP Libray">SPL</abbr>, et plus généralement les constructeurs des classes qui la compose, ont également fait l'objet d'un débat.</p>
<p>En effet, la documentation indique que plusieurs de ses classes disposent d'un constructeur, ce qui ne réflète pas forcément la réalité.</p>
<p>C'est par exemple le cas de la classe <code><a href="http://fr.php.net/splobjectStorage">\SplObjectStorage</a></code>, et en conséquence, dans une classe dérivée de cette dernière, un appel au constructeur de la classe <code><a href="http://fr.php.net/splobjectStorage">\SplObjectStorage</a></code> génère une erreur :</p>
<blockquote><pre><code><?php<br /><br />class mySplObjectStorage<br />{<br /> public function __construct()<br /> {<br /> parent::__construct(); // provoque une erreur.<br /> }<br />}<br /><br />?>></code></pre></blockquote>
<p>La discussion a rapidement débordé du cadre de la <a href="http://fr2.php.net/spl"><abbr title="Standard PHP Libray">SPL</abbr></a> pour aborder le problème de manière plus globale.</p>
<p>Il en est <a href="http://news.php.net/php.internals/52422">ressortie</a> que dans un premier temps, la <abbr title="Standard PHP Libray">SPL</abbr> devrait être modifiée pour ajouter les constructeurs manquant, et que dans un second temps, il soit étudié la possibilité qu'un appel à un constructeur ou à un destructeur absent d'une classe parente ne génére plus d'erreur.</p>
<p>Dans un autre registre, le débat concernant l'avenir de la syntaxe <code><?=</code> a également été relancé au cours de ces 10 jours.</p>
<p>Il était en effet prévu pour <a href="http://www.php.net">PHP</a> 6 que la directive <a href="http://php.net/manual/en/ini.core.php"><code>short_open_tags</code></a> soit supprimée de <a href="http://www.php.net">PHP</a>.</p>
<p>Or, la gestion de la notation <code><?=</code> est actuellement dépendante de l'implémentation de cette directive, et cette notation est très utilisée.</p>
<p>Les contributeurs ont donc décidé de découpler les deux fonctionnalités afin de pouvoir supprimer la directive <a href="http://php.net/manual/en/ini.core.php"><code>short_open_tags</code></a> de la prochaine version du langage tout en conservant la notation <code><?=</code>.</p>
<p>C'est d'ailleurs <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> lui-même qui a mis fin au débat en <a href="http://svn.php.net/viewvc?view=revision&revision=311260">effectuant la modification nécessaire</a> sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>Cette période a également vu une amélioration des performances de <a href="http://www.php.net">PHP</a> pour tout ce qui concerne les calculs arithmètiques, grâce à l'utilisation de directive de compilation spécifique.</p>
<p>Pour l'instant, seules les versions du langage compilée avec <a href="http://fr.wikipedia.org/wiki/GNU_Compiler_Collection"><abbr title="Gnu Compiler Collection">GCC</abbr></a> pourront en bénéficier, mais il est prévu également <a href="http://news.php.net/php.internals/52473">le même type d'optimisation</a> pour Visual Studio.</p>
<p>Le gain est <a href="http://news.php.net/php.internals/52470">de l'ordre de 10%</a> lors de l'exécution d'un script spécifique destiné à mesurer les performances de <a href="http://www.php.net">PHP</a>.
</p>
<p>Cependant, pour des scripts ne faisant pas appel massivement à des calculs arithmétiques, soit la grande majorité des scripts existant, le gain n'est pas significatif.</p>
<p>Enfin, tout comme il sera possible d'écrire <code>myFunction()['myKey']</code> avec la prochaine version du langage, il sera possible d'instancier un classe et d'utiliser l'instance créer dans la foulée, sans passer par une variable intermédiaire :</p>
<blockquote><pre><code><?php<br /><br />new \myClass()->doSomething();<br /><br />// Remplace :<br />// $instance= new \myClass();<br />// $instance>doSomething();<br /><br />?></code></pre></blockquote>
<p>Le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> a quand a lui été modifié une soixantaine de fois sur la période qui vient de s'écouler.</p>
<p>Parmi ces modifications, il y a évidemment le lot habituel de corrections, puisque les bugs <a href="http://bugs.php.net?id=42060">#42060</a>, <a href="http://bugs.php.net?id=50363">#50363</a>, <a href="http://bugs.php.net?id=53782">#53782</a>, <a href="http://bugs.php.net?id=54269">#54269</a>, <a href="http://bugs.php.net?id=54529">#54529</a>, <a href="http://bugs.php.net?id=54721">#54721</a>, <a href="http://bugs.php.net?id=54727">#54727</a>, <a href="http://bugs.php.net?id=54804">#54804</a>, <a href="http://bugs.php.net?id=54895">#54895</a>, <a href="http://bugs.php.net?id=54912">#54912</a> et <a href="http://bugs.php.net?id=54924">#54924</a> ont été corrigés.</p>
<p>Des fuites de mémoire ont par ailleurs été colmatées, grâce à la mise en œuvre de <a href="http://labs.oracle.com/projects/parfait/">parfait</a>, un outil d'analyse de code C/C++ développé par <a href="http://labs.oracle.com/">Oracle</a> pour détecter entre autre ce genre de problème.
</p>
<p>Par ailleurs, l'interface <a href="http://php.net/manual/fr/install.fpm.php"><abbr title="FastCGI Process Manager">FPM</abbr></a> et le support de <a href="http://www.mysql.com/">MySQL</a>, via des corrections et des optimisations sur <a href="http://fr.php.net/manual/fr/book.mysqlnd.php">mysqlnd</a>, <a href="http://fr.php.net/manual/fr/book.mysql.php">mysql</a>, <a href="http://fr.php.net/manual/fr/book.mysqli.php">mysqli</a> et <a href="http://fr.php.net/manual/fr/book.pdo.php"><abbr title="<a href="http://blog.mageekbox.net/?post/2011/05/27/ http:="" www.php.net="">PHP</abbr></a> Data Object">PDO, ont été les plus gros bénéficiaires du travail effectué par les contributeurs sur ces 10 jours.</p>
<p>Enfin, Suite à la demande de <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> lors de la période précédente, les tests unitaires du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> continuent à être corrigés.</p>
<p>Cette rétrospective est maintenant terminée, vous pouvez reprendre une activité normale.</p>
http://blog.mageekbox.net/?post/2011/05/27/PHP-%3A-les-nouvelles-du-front-420#comment-form
http://blog.mageekbox.net/?feed/atom/comments/261
PHP : les nouvelles du front #410
urn:md5:674789d1979473e22253625e233c8742
2011-05-15T22:00:00+02:00
2011-05-16T08:30:17+02:00
mageekguy
PHP X
annotationsinternals@PHP XPierre JoyeRasmus Lerdorftrunk
<p>Encore une fois, j'ai un peu de retard dans la publication de ce billet.</p>
<p>J'ai cependant une <s>bonne</s> excuse, puisque c'est actuellement un peu le chaos au sein de la communauté des développeurs de <a href="http://www.php.net">PHP</a>.</p>
<p>J'ai donc différé la rédaction de ce billet, dans l'espoir d'avoir une vision plus claire de la situation et des informations plus fiables. </p>
<p>Cependant, je suis au regret de devoir dire que ma stratégie n'a guère porté ses fruits, car malgré le délai que je me suis accordé, et une lecture attentive de la liste de diffusion <a href="http://news.php.net/php.internals">internals@</a>, les informations dont je dispose actuellement sont toujours sujettes à caution.</p>
<p>Attendre a donc été inutile, et comme rien n'indique pour le moment que les choses vont se clarifier dans les jours qui viennent, j'ai décidé de publier maintenant les informations dont je dispose.</p> <p>Comme vous l'avez compris à la lecture de ce qui précède, après <a href="http://blog.mageekbox.net/?post/2011/05/02/PHP-%3A-les-nouvelles-du-front-400">une période de calme relatif</a>, l'activité a repris en force au sein de la communauté des contributeurs à <a href="http://www.php.net">PHP</a>, aussi bien au niveau de la liste de diffusion <a href="http://news.php.net/php.internals">internals@</a> qu'au niveau du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>, qui contient le code source de ce qui sera la prochaine version du langage.</p>
<p>La recrudescence d'activité sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> est d'ailleurs en grande partie liée à celle <a href="http://news.php.net/php.internals">internals@</a>, car elle a débuté suite à la <a href="http://news.php.net/php.internals/51929">proposition</a> faite sur cette dernière de lancer le processus de release de PHP 5.4.</p>
<p>En effet, cette proposition a, si je puis dire, dégénéré en plusieurs fils de discussions plus ou moins interconnectés au sein d'<a href="http://news.php.net/php.internals">internals@</a> et qui ont généré en une dizaine de jours approximativement 450 messages.</p>
<p>Il est donc devenu très délicat de suivre les choses dans le détails mais j'ai tout de même réussi à extraire plusieurs informations.</p>
<p>Tout d'abord, les contributeurs semblent d'accord sur le fait qu'il est nécessaire de sortir une nouvelle version <q>significative</q> du langage, basée sur une partie ou la totalité du code présent dans le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>La difficulté pour les contributeurs est donc de se décider sur les nouvelles fonctionnalités, présentes ou non dans le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>, qui feront effectivement parties de cette future version.</p>
<p>C'est la raison pour laquelle de vieux débats sont revenus à la surface, tels que celui sur le contrôle du type des arguments lors de l'exécution, ou bien encore au sujet des <a href="http://news.php.net/php.internals/52146">traits</a> et des <a href="http://news.php.net/php.internals/52147">annotations</a>, et ce sont ces débat qui sont à l'origine du grand nombre de messages échangés entre les contributeurs.</p>
<p>Le débat sur les annotations a été, et de loin, le plus enflammé, au propre comme au figuré, et il a même été le lieu de plusieurs mises au point, <a href="http://news.php.net/php.internals/52210">plus</a> ou <a href="http://news.php.net/php.internals/52149">moins</a> <a href="http://news.php.net/php.internals/52169">violentes</a>, entre les contributeurs.</p>
<p>Cependant, cela n'a pas changé fondamentalement la situation, et pour résumer, la communauté est divisée plus ou moins grossièrement en quatre camps au sujet des annotations.</p>
<p>Il y a tout d'abord ceux qui ne savent pas ce qu'est réellement une annotation, parce que le concept ne les intéressent absolument pas, et qui en conséquence ne participe au débat, dans le meilleur des cas, qu'en tant que modérateur ou bien pour <a href="http://en.wikipedia.org/wiki/PHPDoc">recadrer</a> les discussions.</p>
<p>Il y a ensuite ceux qui sont convaincus que l'ajout des annotations est <a href="http://news.php.net/php.internals/52169">absolument nécessaire</a>.</p>
<p>À contrario, il y a ceux qui sont contre cet ajout car <a href="http://news.php.net/php.internals/52156">ils ne sont pas convaincus</a> de l'utilité de cette fonctionnalité.</p>
<p>Et entre les deux, il y a ceux qui reconnaissent que les annotations sont potentiellement une fonctionnalité intéressante mais qui pensent que <a href="http://news.php.net/php.internals/52233">l'implémentation proposée n'est pas la bonne</a> et qu'il faut se reposer sur les commentaires dans le code pour les gérer, à la manière des <q><a href="http://en.wikipedia.org/wiki/PHPDoc">DocBlock</a></q>, soit parce qu'il en va de leur <a href="http://news.php.net/php.internals/52205">intérêt</a>, soit parce qu'il pense <a href="http://news.php.net/php.internals/52199">qu'il n'est pas utile</a> de faire autrement.</p>
<p>Après bien des <a href="http://news.php.net/php.internals/52209">palabres</a> et des <a href="http://news.php.net/php.internals/52212">digressions</a>, les pro-annotations semblent avoir accepté de se reposer sur les <q><a href="http://en.wikipedia.org/wiki/PHPDoc">DocBlock</a></q> pour définir les annotations, certainement car ils se disent qu'avoir des annotations basée sur cette solution est mieux que de ne pas disposer du tout des annotations nativement dans <a href="http://www.php.net">PHP</a>.</p>
<p>Une <a href="https://wiki.php.net/rfc/annotations-in-docblock">nouvelle <abbr title="Request For Comments">RFC</abbr></a> concernant la définition d'annotations via les <q><a href="http://en.wikipedia.org/wiki/PHPDoc">DocBlock</a></q> a donc été rédigée par <a href="http://blog.bisna.com/">Guilherme Blanco</a>, le créateur de Doctrine et l'un des concepteurs de <a href="http://blog.mageekbox.net/?post/2010/10/02/Un-petit-point-sur-les-annotations">l'implémentation proposée précédemment</a>.</p>
<p>Cependant, rien ne dit que cette solution sera acceptée, et surtout qu'elle sera intégrée dans la prochaine version du langage.</p>
<p>D'ailleurs, il n'y a rien de certain concernant cette fameuse version, et je prend avec des pincettes tout ce qui se dit à son sujet malgré la <a href="http://news.php.net/php.internals/52138">feuille de route</a> proposée qui prévoie une sortie officielle de la version finale en octobre ou en novembre de cette année.</p>
<p>Elle a en effet été déjà annoncée précédemment à plusieurs reprises, et pour autant, il ne s'est rien passé, pour diverses raisons.</p>
<p>De plus, <a href="http://blog.thepimp.net/">Pierre Joye</a>, l'un des contributeurs les plus actifs et engagés dans le développement de PHP n'a pas pris part aux différents débats, car il est actuellement en vacances.</p>
<p>Il est donc possible que son retour provoque des remous, car je sais, par exemple, qu'il n'est pas partisan de l'utilisation des commentaires pour la définition des annotations.</p>
<p>Il semble cependant acquis qu'APC <a href="http://news.php.net/php.internals/52257">ne sera pas intégré au langage</a> dans cette future version, car de l'aveu même de <s>Dieu</s> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a>, les ressources humaines nécessaires pour cela ne sont pas disponibles.</p>
<p>Par la même occasion, <s>Dieu</s> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a> semble confirmé la rumeur que j'ai déjà entendu par ailleurs disant que cette prochaine version ne sera pas une version majeure (mais dans ce cas, je me demande ce que contiendra une version du langage méritant le qualificatif de majeure).</p>
<p><s>Dieu</s> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a> a d'ailleurs été inhabituellement très actif au cours des débats, soit en <a href="http://news.php.net/php.internals/52285">apportant des précisions</a>, soit en jouant <a href="http://news.php.net/php.internals/52172">le rôle de tampon</a>, notamment dans celui concernant les annotations.</p>
<p>Il est vrai qu'il a u<a href="http://news.php.net/php.internals/52306">n intérêt personnel</a> à suivre de très près cette discussion, car si la solution technique finalement retenue avait nécessité une modification de la grammaire de PHP, il aurait été certainement obligatoire de <a href="http://news.php.net/php.internals/52204">modifier le code d'APC</a>, dont il est l'un des développeurs, ce qui ne semble pas être une sinécure.</p>
<p>Dernièrement, il a également demandé à ce que <a href="http://news.php.net/php.internals/52328">les tests unitaires en erreur</a> dans la <a href="http://svn.php.net/viewvc/php/php-src/branches/PHP_5_3/">branche 5.3</a> et le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> soient corrigés, ce qui est à l'origine d'un grand nombre des modifications subies par ce dernier.</p>
<p>Suite à sa demande, il semble qu'un tableau de bord permettant d'obtenir le statut des tests pour les différentes branches de PHP, basé sur <a href="http://phpqa.ajeux.net/">le travail de Olivier Doucet</a>, soit en train d'être mis en place. </p>
<p>Enfin, il a <s>enfin</s> modifié les scripts de configuration relatifs à la compilation de PHP pour qu'ils supportent les versions d'<code><a href="http://fr.wikipedia.org/wiki/Autoconf">autoconf</a></code> <a href="http://news.php.net/php.internals/52374">supérieures ou égales à 2.60</a>, ce qui permettra de le <a href="http://blog.mageekbox.net/?post/2010/10/11/Comment-utiliser-l-autoconf-de-son-choix-pour-compiler-PHP">compiler plus facilement</a>.</p>
<p>L'actualité de la liste de diffusion est donc relativement brulante, même si les choses se sont un peu calmées dernièrement, et le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> en a subit les conséquences, comme je l'ai évoqué précédemment. </p>
<p>Tout d'abord, près de la moitié des modifications concerne des corrections effectuées dans les tests unitaires.</p>
<p>Ensuite, vu qu'il n'y a eu aucun consensus au sein des contributeurs en ce qui concerne le contrôle du type des arguments d'une méthode ou d'une fonction, le code correspondant a été retiré du <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a>.</p>
<p>Il y a également eu du nettoyage d'effectué dans la documentation présente dans le source concernant le processus de sortie d'une nouvelle version.</p>
<p>L'extension SNMP a également subie un petit lifting, puisque la méthode S<code>NMP::open()</code> a été supprimée car elle faisait doublon avec le constructeur de la classe, et que les méthodes <code>SNMP::get_errno()</code> et S<code>NMP::get_error()</code> ont été respectivement renommées en <code>SNMP::getErrno()</code> et <code>SNMP::getError()</code>.</p>
<p>Les bibliothèques <a href="http://fr2.php.net/sqlite">SQLite</a> et <a href="http://fr2.php.net/en/pcre">PCRE</a> intégrées au code de <a href="http://www.php.net">PHP</a> ont par ailleurs été mises à jour respectivement en version 3.7.6.2 et 8.12.</p>
<p>Enfin, il y a également eu le lot habituel de corrections et d'optimisations, avec notamment la résolution des bugs <a href="http://bugs.php.net?id=54623">#54623</a>,
<a href="http://bugs.php.net?id=54580">#54580</a>,
<a href="http://bugs.php.net?id=54681">#54681</a>,
<a href="http://bugs.php.net?id=54644">#54644</a>,
<a href="http://bugs.php.net?id=54692">#54692</a> et
<a href="http://bugs.php.net?id=54723">#54723</a>.</p>
<p>Cette rétrospective est maintenant terminée, vous pouvez reprendre une activité normale.</p>
http://blog.mageekbox.net/?post/2011/05/15/PHP-%3A-les-nouvelles-du-front-410#comment-form
http://blog.mageekbox.net/?feed/atom/comments/260
Rasmussisme #1
urn:md5:5e634a8aba72aadf87e46b9f293a03fd
2011-05-10T15:09:00+02:00
2011-05-11T08:09:27+02:00
mageekguy
PHP
citationPHPRasmus LerdorfRasmussisme
<blockquote cite="http://news.php.net/php.internals/52204"><p>I also have a personal problem with code that needs to introspect on every web request in order to run. But that is likely because I am old and gray and used to stare sceptically at the assembly output of the first C compilers to see if I could come up with an alternative that would take fewer cycles.</p>
</blockquote>
http://blog.mageekbox.net/?post/2011/05/10/Rasmussisme-1#comment-form
http://blog.mageekbox.net/?feed/atom/comments/258
Mort de PHP6 + 360 Jours
urn:md5:a3c937c8264ba4e8e461175765f25d96
2011-03-18T13:30:00+01:00
2011-03-18T13:36:06+01:00
mageekguy
PHP X
annotationsinternals@Olivier HoareauPHPPierrick CharronRasmus Lerdorf
<p>Suite à ma petite virée à <a href="http://blog.mageekbox.net/?post/2011/03/16/Il-y-a-la-ConFoo-pour-%C3%A7a-%21">Montréal</a>, j'ai pris beaucoup de retard dans la rédaction de mon billet des 350 jours concernant le développement de la prochaine version majeure de <a href="http://www.php.net">PHP</a>.</p>
<p>Du coup, j'ai décidé de passer directement au billet des 360 jours, d'autant que la <a href="http://fr.wikipedia.org/wiki/Loi_de_Murphy">loi de Murphy</a> a une fois de plus été vérifiée, puisque les contributeurs ont été très actifs dernièrement, notamment sur leur liste de diffusion, <a href="http://news.php.net/group.php?group=php.internals">internals@</a>, alors que je n'étais pas disponible pour suivre les débats.</p>
<p>J'ai donc beaucoup à dire au sujet des vingts jours qui viennent de s'écouler, ce qui contraste fortement avec le peu d'informations que j'avais à communiquer au sujet des <a href="http://blog.mageekbox.net/?post/2011/02/14/Mort-de-PHP6-330-jours">deux</a> <a href="http://blog.mageekbox.net/?post/2011/02/24/Mort-de-PHP6-340-Jours">périodes</a> de 10 jours précédentes.</p> <p>Je ne vais cependant pas mettre la charrue avant les bœufs, et je vais commencer par présenter le travail effectué sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> de <a href="http://www.php.net">PHP</a>, afin de garder le meilleur pour la fin.</p>
<p>Il y a eu un peu plus d'une cinquantaine de modifications effectuées sur le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> au cours des vingts derniers jours.</p>
<p>La grande majorité de ces modifications sont des optimisations ou des corrections visant à éliminer des problèmes à la compilation ou bien à l’exécution.</p>
<p>Nous retrouvons donc le la litanie habituelle de corrections de bugs, puisque ceux correspondant aux identifiants <a href="http://bugs.php.net?id=54108">#54108</a>,
<a href="http://bugs.php.net?id=54092">#54092</a>,
<a href="http://bugs.php.net?id=54089">#54089</a>,
<a href="http://bugs.php.net?id=54118">#54118</a>,
<a href="http://bugs.php.net?id=54167">#54167</a>,
<a href="http://bugs.php.net?id=54193">#54193</a>,
<a href="http://bugs.php.net?id=49608">#49608</a>,
<a href="http://bugs.php.net?id=54152">#54152</a>,
<a href="http://bugs.php.net?id=54180">#54180</a>,
<a href="http://bugs.php.net?id=54242">#54242</a>,
<a href="http://bugs.php.net?id=54242">#54242</a>,
<a href="http://bugs.php.net?id=40510">#40510</a>,
<a href="http://bugs.php.net?id=54247">#54247</a>,
<a href="http://bugs.php.net?id=51958">#51958</a>,
<a href="http://bugs.php.net?id=54262">#54262</a> et
<a href="http://bugs.php.net?id=54265">#54265</a> ont été fixés.</p>
<p>Parallèlement, des régressions apparues lors du développement ont été supprimées, des tests unitaires ont été ajoutés ou corrigés, et des optimisations ont été effectuées, notamment au niveau de l'extension <a href="http://fr2.php.net/snmp"><abbr title="Simple Network Management Protocol">SNMP</abbr></a>.</p>
<p>Rien de bien croustillant donc à se mettre sous la dent, mais comme je l'ai déjà dit en introduction, la liste de diffusion des contributeurs, <a href="http://news.php.net/group.php?group=php.internals">internals@</a>, a été beaucoup plus intéressante, car très active.</p>
<p>La discussion au sujet de la <a href="http://wiki.php.net/rfc/enum"><abbr title="Request For Comments">RFC</abbr></a> relative aux <a href="http://en.wikipedia.org/wiki/Enumerated_type">énumérations</a>, commencée lors de <a href="http://blog.mageekbox.net/?post/2011/02/24/Mort-de-PHP6-340-Jours">la période précédente</a>, s'est poursuivie, mais pour l'instant, il n'y a pas encore eu de consensus, que ce soit sur la nature d'une <a href="http://en.wikipedia.org/wiki/Enumerated_type">énumération</a>, ou bien sur la façon de les implémenter au sein du langage.</p>
<p>Il faut dire que la discussion a dérivé à un moment donné sur le contrôle du type des arguments des fonctions et des méthodes, et que ce sujet est encore apparemment toujours très sensible au sein de la communauté.</p>
<p>De plus, d'autres débats ont débuté à propos de plusieurs nouvelles propositions, ce qui a en quelque sorte étouffé celui concernant les <a href="http://en.wikipedia.org/wiki/Enumerated_type">énumérations</a>.</p>
<p>Ainsi, il a été proposé d'utiliser l'algorithme de <a href="http://volnitsky.com/project/str_search/">Voltnitsky</a> dans les fonctions permettant de localiser une sous-chaîne dans une chaîne de caractères, car il est censé être plus efficace que celui utilisé jusqu'à présent, notamment dans le cas de longues chaînes.</p>
<p>Dans l'absolu, cette suggestion a été accueillie favorablement, même si les contributeurs sont relativement frileux du fait de la jeunesse de l'algorithme.</p>
<p>Une <a href="http://wiki.php.net/rfc/builtinwebserver"><abbr title="Request For Comments">RFC</abbr></a> visant à intégrer un serveur <abbr title="HyperText Transfer Protocol">HTTP</abbr> au sein de PHP via l'interface en ligne de commande, <abbr title="Also Known As">aka</abbr> <abbr title="Command Line Interface">CLI</abbr>, a également été rédigée.</p>
<p>Elle a reçu un accueil chaleureux, notamment de la part de <del>Dieu</del> <a href="http://news.php.net/php.internals/51547">Rasmus Lerdorf</a>, ce qui explique peut être son succès auprès des autres contributeurs.</p>
<p>Cependant, des limites très claires concernant les cas d'utilisation de ce serveur ont été posées.</p>
<p>En effet, , si jamais il est un jour effectivement intégré au langage, il ne sera conçu que pour être utilisé en phase de développement et aucunement en production.</p>
<p>Il a également été <a href="http://news.php.net/php.internals/51562">proposé</a> d'utiliser le concept d'<a href="http://fr.wikipedia.org/wiki/Encapsulation_%28programmation%29">encapsulation</a> au niveau des classes, ce qui permettrait de rendre ces dernières publiques, internes et privées.</p>
<p>Pour le moment, le concept a été jugée intéressant par quelques développeurs, mais il semble nécessaire de pousser <a href="http://news.php.net/php.internals/51646">un peu plus loin</a> la réflexion initiale afin de comprendre toutes les implications, et d'autres s'interroge sur <a href="http://news.php.net/php.internals/51647">son utilité</a>.</p>
<p>Il a également été demandé d'ajouter aux <a href="http://fr2.php.net/stream">flux</a> le support des méta-données liées à des fichiers, ce qui permettrait d'utiliser ces derniers avec des fonctions telles que chmod(), chown() ou bien encore touch().</p>
<p>Cette suggestion a provoqué une petite bataille rangée au sein de la communauté.</p>
<p>En effet, techniquement, il est <a href="http://news.php.net/php.internals/51598">très délicat</a>, voir impossible, d'implémenter un support exhaustif à ce niveau pour tout les systèmes d'exploitation et l'ensemble des systèmes de fichiers existant.</p>
<p>Un camp milite donc pour <a href="http://news.php.net/php.internals/51606">une implémentation à minima</a>, qui permettrait de manipuler les méta-données d'un fichier à l'aide d'un <a href="http://fr2.php.net/stream">flux</a> pour les configurations les plus répandues, tandis que l'autre ne veut pas en entendre parler, car cela pourrait potentiellement poser des <a href="http://news.php.net/php.internals/51618">problèmes à l'avenir</a>.</p>
<p>Finalement, après quelques <a href="http://news.php.net/php.internals/51626">échanges tendus</a> entre les leaders de chaque camp, <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> a, pour une fois, <a href="http://news.php.net/php.internals/51627">tranché dans le vif</a> en proposant que chaque camp rédige une <abbr title="Request For Comments">RFC</abbr>, afin de pouvoir choisir la meilleure solution en toute connaissance de cause aux alentours du 21 mars 2011.</p>
<p>Un autre <a href="http://news.php.net/php.internals/51672">débat</a> a eu lieu concernant l'implémentation de l'interface <code>\countable</code> au niveau la classe <code>\splFIleObject</code> afin qu'un appel à <code>sizeof()</code> ou <code>count()</code> retourne le nombre le ligne contenues dans le fichier considéré.</p>
<p>Dans ce cas, si l'intérêt fonctionnel n'a pas été discuté, il n'a pas encore été trouvé de consensus au niveau de l'implémentation.</p>
<p>En effet, <a href="http://news.php.net/php.internals/51675">certain</a> considère que ce n'est pas le rôle de <code>sizeof()</code> ou de <code>count()</code> de retourner ce type d'information mais plutôt celui d'une méthode nommé par exemple <code>\splFileObjet::getLineCount()</code>, alors que d'autres considère que ce n'est pas le rôle de la classe <code>\splFileObject</code> de gérer cette fonctionnalité, mais celui d'une <a href="http://news.php.net/php.internals/51695">autre classe</a> qui n'existe pas encore.</p>
<p>Enfin, le débat sur les annotations a <a href="http://news.php.net/php.internals/51673">redémarré</a> (coïncidence troublante, j'en avais justement parlé avec <a href="http://www.adoy.net">Pierrick Charron</a> lors de la <a href="http://blog.mageekbox.net/?post/2011/03/16/Il-y-a-la-ConFoo-pour-%C3%A7a-%21">ConFoo</a> quelques jours auparavant).</p>
<p>Cependant, la discussion n'est malheureusement pas allé très loin, même si celui qui a relancé la discussion semble <a href="http://news.php.net/php.internals/51687">très motivé</a>.</p>
<p>Notre <a href="http://blog.phppro.fr/">Olivier Hoareau</a> national a de son côté <a href="http://news.php.net/php.internals/51701">demandé</a> sur <a href="http://news.php.net/group.php?group=php.internals">internals@</a> s'il était possible d'embarquer au sein d'un même exécutable un binaire PHP spécifique ainsi que le code PHP correspondant sous la forme d'un <a href="http://fr2.php.net/phar"><abbr title="PHP Archive">PHAR</abbr></a>, le tout sous différents systèmes d'exploitation.</p>
<p>Il a reçu un certain nombre de réponses, mais aucune ne permet de résoudre l'ensemble du problème, même si <a href="http://www.winbinder.org">winbinder</a> semble être une solution sous <a href="http://fr.wikipedia.org/wiki/Microsoft_Windows">Windows</a>.</p>
<p>Dans un autre registre, la discussion concernant la possibilité de laisser au développeur la possibilité de définir le type de balise PHP qui sera utilisé dans un fichier a été <a href="http://news.php.net/php.internals/51653">relancée</a> par l'auteur de la proposition.</p>
<p>Cependant, le débat a <a href="http://news.php.net/php.internals/51663">tourné court</a> car la <abbr title="Request For Comments">RFC</abbr> correspondante n'existe pas dans le <a href="http://wiki.php.net/rfc">wiki</a> et elle ne pourra reprendre que lorsqu'elle aura été ajoutée.</p>
<p>Et pour terminer, un vieux serpent de mer a refait surface durant ces vingts derniers jours.</p>
<p>En effet, historiquement, <a href="http://www.php.net">PHP</a> supprime automatiquement l'éventuel caractère <code><abbr title="End Of Line">EOL</abbr></code> présent après la balise fermante <code>?></code>.</p>
<p>Une nouvelle fois, ce comportement étrange a suscité une <a href="http://news.php.net/php.internals/51658">interrogation</a>, qui a reçu la <a href="http://brian.moonspot.net/php-history-newline-closing-tag">réponse habituelle</a>.</p>
<p>Cette rétrospective est maintenant terminée, vous pouvez reprendre une activité normale.</p>
http://blog.mageekbox.net/?post/2011/03/16/Mort-de-PHP6-360-Jours#comment-form
http://blog.mageekbox.net/?feed/atom/comments/245
PHP, Python et PHP Solutions
urn:md5:a74bb1e39a213dd496c9b8e5741c40b0
2011-03-02T14:00:00+01:00
2011-03-03T14:45:19+01:00
mageekguy
PHP
PHPPHP SolutionsPythonRasmus LerdorfStéphane Planqart
<p>Dans le numéro de mars 2011 de PHP Solutions, il y a un article titré <q><a href="http://phpsolmag.org/system/articles/attachment1s/14156/original/Samba_PHP_PHP_03_2011.pdf">Python est l'avenir de PHP ?</a></q>, rédigé par <a href="http://www.planquart.com/">Stéphane Planquart</a>.</p>
<p>Sous le couvert de la fiction, il présente ce que pourrait être la prochaine version majeure de <a href="http://www.php.net">PHP</a>, tant au niveau syntaxique que fonctionnel, si les développeurs du langage s'inspirait des meilleurs langages existant, avant d'enchainer plus ou moins adroitement sur le fait que, d'après lui, cette version parfaite de <a href="http://www.php.net/">PHP</a> existe déjà et qu'elle porte le nom de <a href="http://www.python.org/">Python</a>.</p>
<p>Il est possible d'ergoter longuement sur la forme choisie par <a href="http://www.planquart.com/">Stéphane</a>, qui est à tout le moins originale et pourrait très bien servir le fond de son article, mais il aurait fallu pour cela qu'il fasse preuve d'un peu plus d'objectivité et se renseigne un minimum avant d'énoncer certaines choses.</p>
<p>En effet, si je ne peux me permettre de critiquer la partie de l'article concernant <a href="http://www.python.org/">Python</a>, car c'est un langage que je ne maîtrise pas suffisamment pour cela, je connais très bien <a href="http://www.php.net/">PHP</a>, à tout point de vue.</p>
<p>Je vais donc me permettre d'apporter quelques précisions et rectifications à l'article de <a href="http://www.planquart.com/">Stéphane</a>.</p> <p>Et je vais commencer avec l'introduction, puisqu'il commence ainsi :</p>
<blockquote><p>[...]En mars 2010 Rasmus Lerdorf annonçait l'arrêt
du développement de PHP6 à cause de difficultés
insurmontables dans l'implémentation de l'Unicode.[...]
</p>
</blockquote>
<p>Or, <a href="http://www.php.net/">PHP</a> n'a pas été abandonné pour cette raison.</p>
<p>Lors de l'arrêt du développement, le support d'<a href="http://fr.wikipedia.org/wiki/Unicode">Unicode</a> au niveau du moteur de PHP 6 était même pleinement fonctionnel, et j'ajouterais qu'il ne restait même <a href="http://pooteeweet.org/blog/1689">qu'un peu plus de 2%</a> des fonctionnalités du langage à mettre à niveau lorsque le développement a été arrêté.</p>
<p>La raison de l'abandon de PHP 6 n'est donc nullement technique, mais humaine.</p>
<p>En effet, ce sont les contributeurs qui ont tué PHP 6, car ils ont jugé que le travail demandé pour migrer vers cette version était trop complexe et trop long pour un gain fonctionnel peu significatif, et j'ai pour preuve le nombre de modifications absolument ridicule effectué sur <a href="http://svn.php.net/viewvc/php/php-src/branches/FIRST_UNICODE_IMPLEMENTATION/">le dépôt de PHP 6</a> sur les mois précédents son abandon.</p>
<p><a href="http://www.planquart.com/">Stéphane</a> enchaîne ensuite en indiquant que la prochaine version majeure de PHP intégrera enfin, comme tout bon langage moderne, une console interactive, comme si <a href="http://www.php.net/">PHP</a> n'en disposait pas depuis 2005, via l'option <code>-a</code> en ligne de commande.</p>
<p>Il poursuit ensuite avec cela :</p>
<blockquote><p>[...]Plutôt que de modifier un fichier,
de l’enregistrer et de rafraîchir son navigateur, on peut
maintenant exécuter directement du code dans une
console interactive[...]</p>
</blockquote>
<p>Je ne sais pas comment <a href="http://www.planquart.com/">Stéphane</a> travaille avec <a href="http://www.php.net/">PHP</a>, mais depuis 2005 et l'apparition de la <abbr title="Command Line Interface">CLI</abbr>, je ne travaille plus de cette façon, et que je ne quitte même plus <a href="http://www.vim.org">VIM</a> pour exécuter du code.</p>
<p>Je passerais sur sa proposition de remanier la syntaxe, qui est une pure affaire de goût personnel, et qui en conséquence ne supporte aucune discussion, et cela même si je trouve son idée de proposer deux syntaxes en fonctions du contexte complètement stupide, d'autant que <a href="http://www.php.net/">PHP</a> le fait déjà via l'utilisation de la balise <code><?=</code>.</p>
<p>Il poursuit ensuite son article en partant du postulat que <a href="http://www.php.net/">PHP</a> a été conçu pour le web.</p>
<p>Pourtant, <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> a toujours présenté son langage comme <a href="http://articles.sitepoint.com/article/phps-creator-rasmus-lerdorf/2">une colle entre plusieurs technologies</a> qui permet de développer rapidement, et non comme un langage propre dédié au développement web, même s'il est parfaitement capable d'assurer dans ce domaine.</p>
<p>Ses remarques sur l'API du langage sont cependant pertinentes, même si elles sont récurrentes depuis des années, et je suis l'un des premiers à militer pour son homogénéisation, et cela même si <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> a dit très clairement lors de sa conférence au <a href="http://blog.mageekbox.net/?post/2010/11/15/Compte-rendu-du-forum-PHP-2010-1">dernier forum PHP</a> que les développeurs qui veulent pouvoir coder proprement ne devrait pas être dans la salle, comprendre ne devrait pas utiliser <a href="http://www.php.net/">PHP</a>.</p>
<p>Cependant, le fait qu'il reproche au langage de parler hébreux est tout de même un peu gros.</p>
<p>Le fameux <code>T_PAAMAYIM_NEKUDOTAYIM</code> dont Stéphane parle dans son article est en effet bien <a href="http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=google#sclient=psy&hl=en&q=t_paamayim_nekudotayim&fp=eda1291fdd569703">connus</a>, et il est de plus une <q>private joke</q> qui circule au sein de la communauté du langage en raison des origines des développeurs du <a href="http://en.wikipedia.org/wiki/Zend_Engine">Zend Engine</a>.</p>
<p>J'ajouterais que le <a href="http://fr2.php.net/manual/en/book.tokenizer.php">tokenizer</a> de <a href="http://www.php.net/">PHP</a> n'y fait pas appel et utilise en remplacement son équivalent en langage commun, à savoir <code><a href="http://fr2.php.net/manual/en/tokens.php">T_DOUBLE_COLON</a></code>.</p>
<p>Cependant, ce n'est pas aussi gros que de dire que la gestion des erreurs telle qu'elle existe aujourd'hui dans le langage rend ce dernier inefficace et difficile à utiliser.</p>
<p>En plus de 10 ans de développement, <a href="http://www.php.net/">PHP</a> m'a effectivement posé bien des problèmes, et il continue toujours aujourd'hui, mais leurs origines n'avaient rien à voir avec la gestion des erreurs.</p>
<p>À tout le moins, j'aurais préféré que <a href="http://www.planquart.com/">Stéphane</a> dise dans son article que la gestion des erreurs de <a href="http://www.python.org/">Python</a> était bien meilleure que celle de <a href="http://www.php.net/">PHP</a> en donnant des arguments objectifs, plutôt que de dire une telle bêtise.</p>
<p>D'autant qu'il poursuit ensuite en critiquant le processus de développement de <a href="http://www.php.net/">PHP</a>, qui ne reposerait que sur la liste de diffusion des contributeurs, au contraire de celui de <a href="http://www.python.org/">Python</a> qui utilise des <abbr title="Python Enhancement Proposals">PEP</abbr>.</p>
<p>Je voudrais alors que quelqu'un m'explique la différence entre les <abbr title="Python Enhancement Proposals">PEP</abbr> de <a href="http://www.python.org/">Python</a> et les <a href="http://wiki.php.net/rfc"><abbr title="Request For Comments">RFC</abbr></a> de <a href="http://www.php.net/">PHP</a>, parce que j'avoue avoir un peu de mal à voir la différence.</p>
<p><a href="http://www.planquart.com/">Stéphane</a> poursuit ensuite en disant que <a href="http://www.php.net/">PHP</a> est un tellement mauvais langage qu'il nécessite le recours systématique à un framework.</p>
<p>Donc, en suivant son raisonnement, <a href="http://www.ruby-lang.org/fr/">Ruby</a>, <a href="http://www.python.org/">Python</a> et tous les langages pour lesquels il existe des frameworks ne sont pas mieux que <a href="http://www.php.net/">PHP</a>.</p>
<p>Est-il vraiment nécessaire que je dise explicitement ce que je pense de cela ?</p>
<p>Pire encore, selon lui, sans framework, le développeur est exposé à un échantillon des mauvaises pratiques :</p>
<blockquote><p>[...]Dans le cas contraire, le développeur est
en contact permanent avec un échantillon des mauvaises pratiques de développement[...]</p>
</blockquote>
<p>Il est vrai que les mauvaises pratiques ne se trouvent que dans du code <a href="http://www.php.net/">PHP</a>, et que le développeur n'a aucun esprit critique lui permettant de comprendre que le code qu'il a sous les yeux n'est peut être pas le plus pertinent qui soit.</p>
<p>D'ailleurs, vu que j'utilise le langage depuis des années, je dois être un très mauvais développeur, d'autant que, comble du pire, je l'ai utilisé sans framework plus d'une fois.</p>
<p>Bref, je ne suis absolument pas contre le fait que l'on critique <a href="http://www.php.net/">PHP</a>, et ce serait d'ailleurs mal venu de ma part puisque je le fais très régulièrement.</p>
<p>Je ne suis pas non plus contre le fait que l'on s'appuie sur ses faiblesses pour promouvoir une technologie alternative, bien au contraire.</p>
<p>La concurrence a du bon, et je suis persuadé qu'une bonne remise en question induite par la montée en puissance significative d'un langage alternatif ferait énormément de bien à <a href="http://www.php.net/">PHP</a>.</p>
<p>Encore faut-il que le sujet soit maîtrisé, ce qui n'est visiblement pas le cas pour la partie concernant <a href="http://www.php.net/">PHP</a> de l'article, et que cela soit fait correctement, avec des informations valides, précises, et fiables ainsi qu'une argumentation qui tient la route.</p>
http://blog.mageekbox.net/?post/2011/03/02/PHP%2C-Python-et-PHP-Solutions#comment-form
http://blog.mageekbox.net/?feed/atom/comments/242
Interview avec Rasmus, Ilia et Derick
urn:md5:59961964a0d2646dd2672cc019395d16
2010-12-20T22:00:00+01:00
2010-12-21T08:53:40+01:00
mageekguy
PHP X
Derick Rethansforum PHP 2010Ilia Alshanetskyinternals@interviewPHPPHP XRasmus LerdorfZeev Suraski
<p>Lors du <a href="http://blog.mageekbox.net/?post/2010/12/20/?post/2010/11/15/Compte-rendu-du-forum-PHP-2010-1">forum PHP 2010</a>, j'ai eu l'occasion de discuter avec <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a>, <a href="http://ilia.ws/">Ilia Alshanetsky</a> et <a href="http://derickrethans.nl/">Derick Rethans</a>.</p>
<p>Il est ressorti de ces discussions un article au sujet de <a href="http://www.php.net/">PHP</a>, de son avenir et de sa communauté, destiné à paraître dans <a href="http://www.programmez.com/">Programmez!</a>, mais qui n'a apparemment pas été retenu.</p>
<p>Je vous en propose donc ici une version légèrement remaniée, afin que
le temps que j'ai passé à l'écrire durant le forum au lieu d'assister
aux conférences qui m'intéressaient ne soit pas entièrement perdu.</p>
<p>Je précise que cet article a été écrit il y a plus d'un mois, au moment du forum, et que depuis, l'actualité du langage a beaucoup évoluée.</p>
<p>En conséquence, les informations qu'il contient ne sont plus d'actualité pour certaines, et je vous invite donc à lire les <a href="http://blog.mageekbox.net/?post/2010/12/13/Mort-de-PHP6-270-jours">billets</a> <a href="http://blog.mageekbox.net/?post/2010/12/01/Mort-de-PHP6-260-jours">relatifs</a> <a href="http://blog.mageekbox.net/?post/2010/11/21/Mort-de-PHP6-250-jours">à</a> l'évolution du développement afin de faire le tri.</p> <p>Le <a href="http://www.afup.org/pages/forumphp2010/">forum PHP 2010</a>, qui a eu lieu les 9 et 10 novembre derniers, a accueilli quatre figures emblématiques de la communauté des développeurs de <a href="http://www.php.net">PHP</a>.</p>
<p><a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a>, le créateur du langage, et <a href="http://en.wikipedia.org/wiki/Zeev_Suraski">Zeev Suraski</a>, l'un des deux pères du <a href="http://en.wikipedia.org/wiki/Zend_Engine">Zend Engine</a>, avaient ainsi fait le déplacement jusqu'à Paris.
</p>
<p>De plus, <a href="http://derickrethans.nl/">Derick Rethans</a>, notamment connu pour avoir développé <a href="http://www.xdebug.org">Xdebug</a>, et <a href="http://ilia.ws/">Ilia Alshanetsky</a>, qui participe au développement du langage dans sa globalité, ont participé à l'événement, qui fêtait cette année les 15 ans d'existence du langage et les 10 ans de l'<a href="http://www.afup.org"><abbr title="Association Française des Utilisateurs de PHP">AFUP</abbr></a>.</p>
<p>J'ai donc profité de cette occasion pour discuter physiquement, avec <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a>, <a href="http://derickrethans.nl/">Derick</a> et <a href="http://ilia.ws/">Ilia</a> de l'avenir de <a href="http://www.php.net">PHP</a> et du fonctionnement de la communauté des développeurs, sans passer par mes outils de communication habituels que sont <a href="http://en.wikipedia.org/wiki/IRC">IRC</a> et la liste de
diffusion des développeurs du langage, <a href="http://news.php.net/group.php?group=php.internals">internals@</a>.</p>
<p>Je vous livre donc dans les lignes qui suivent une synthèse de ces discussions très informelles, puisqu'elles ont eu lieu en dehors des conférences.</p>
<p>J'ai ainsi eu au cours de nos conversation la confirmation qu'il y avait 90% de chances pour que <a href="http://derickrethans.nl/">Derick Rethans</a> soit le <q>release master</q> de la prochaine version du langage.</p>
<p>Cette version, fruit du travail énorme effectuée par la communauté des développeurs depuis <a href="http://blog.mageekbox.net/?post/2010/03/17/Repose-en-paix%2C-PHP-6">l'abandon du développement de PHP 6</a>, sera certainement nommée PHP 5.4 et sa sortie est prévue pour la première moitié de l'année 2011.</p>
<p>Elle proposera entre autre chose un modèle objet renforcé, via le concept de <a href="http://blog.mageekbox.net/?post/2010/12/16/Rendez-vous-AFUP-du-15/12/2010">traits</a>, ainsi que le support de <a href="http://blog.mageekbox.net/?post/2010/06/16/DTrace-un-peu-plus-dans-le-d%C3%A9tail">DTrace</a>, la possibilité <a href="http://wiki.php.net/rfc/functionarraydereferencing">d’accéder directement</a> aux éléments d'un tableau renvoyé par une fonction ou une méthode, et des améliorations au niveau du support <a href="http://wiki.php.net/rfc/closures/object-extension">des fonctions anonymes et des fermetures</a>.</p>
<p>Elle donnera également la possibilité de définir le type numérique des arguments des méthodes et des fonctions, et elle proposera l'interface <a href="http://wiki.php.net/rfc/jsonable"><code>jsonable</code></a> qui permettra de définir le comportement d'un objet lorsqu'il sera sérialisé au format <a href="http://en.wikipedia.org/wiki/JSON"><abbr title="JavaScript Object Notation">JSON</abbr></a>.</p>
<p>Cependant, tout cela n'a pas été fait au détriment des performances, puisqu'elles sont en nette hausse, grâce à une optimisation poussée de la gestion de la mémoire.</p>
<p>PHP 5.4 sera donc plus rapide, mais surtout beaucoup moins gourmand en mémoire, puisque les tests montrent que suivant le contexte d'exécution, il est susceptible de consommer jusqu'à 30% de mémoire de moins que la précédente version.</p>
<p>Enfin, certains <q>boulets</q> historiques de <a href="http://www.php.net">PHP</a>, comme la directive <q>register_globals</q>, le <q>safe mode</q> ou les <q>magic quotes</q> ont été supprimés, mais en contrepartie, le code existant reposant sur ces fonctionnalités ne fonctionnera plus.</p>
<p><a href="http://ilia.ws/">Ilia</a> m'a d'ailleurs indiqué que ce nettoyage devrait se poursuivre avec les prochaines versions, de façon à assainir le langage, mais cependant, cela ne provoquera jamais de cassure brutale de la compatibilité.</p>
<p>La communauté a en effet la volonté de faire cela de manière très progressive afin de permettre une mise à jour en douceur des quelques
milliards de lignes de code <a href="http://www.php.net">PHP</a> existantes dans le monde.</p>
<p>Et de plus, le périmètre de cet assainissement n'est pas clairement défini puisque le développement du langage suit à l'heure actuelle une politique très pragmatique.</p>
<p>Ainsi, toute modification ou un évolution doit absolument répondre à une problématique réelle et sérieuse qui ne peut pas être résolue par un autre moyen, tout en ayant un impact minimal sur les performances du langage et ne pas rendre le langage plus complexe.</p>
<p>L'ajout de l'interface <a href="http://wiki.php.net/rfc/jsonable"><code>jsonable</code></a> est l'exemple parfait de cette politique, car elle permet de répondre simplement à une problématique concrète dans le monde du développement web d'aujourd'hui, induite l'utilisation massive d'<abbr title="Asynchronous Javascript And XML">AJAX</abbr> qui nécessite de faire transiter dans un format simple un volume de données important entre des clients et un serveur.</p>
<p>En conséquence, la décision de supprimer une fonctionnalité jugée comme dangereuse ou comme étant une erreur de conception ne sera prise qu'uniquement en fonction de cet aspect pragmatique.</p>
<p>C'est la raison pour laquelle il y a peu de chances de voir un jour la règle de nommage des fonctions de <a href="http://www.php.net">PHP</a> uniformisée, alors que c'est une demande récurrente des utilisateurs du langage.</p>
<p>En effet, les fonctions concernées fonctionnent parfaitement, et la correction de cet aspect purement esthétique n'est pas jugée comme primordiale, même si <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a> avoue que s'il en avait la possibilité, il réécrirait <a href="http://www.php.net">PHP</a> en suivant une politique de nommage des fonctions beaucoup plus rigoureuse.</p>
<p>Cette philosophie est également la cause du refus de l'implémentation des annotations proposée récemment.</p>
<p>D'une part, les partisans des annotations n'ont pas su convaincre les contributeurs de la pertinence de ce qu'ils proposaient, tant au niveau fonctionnel que technique.</p>
<p>D'autre part, les annotations peuvent être émulée à l'aide d'outils déjà présent dans le langage, et notamment <a href="http://fr2.php.net/manual/en/reflectionclass.getdoccomment.php">l'introspection</a>.</p>
<p>Il est cependant possible d'espérer voir arriver un jour les annotations dans <a href="http://www.php.net">PHP</a>, car <a href="http://derickrethans.nl/">Derick Rethans</a> a posé le dossier sur la table lorsqu'il a proposé une feuille de route pour la publication de la prochaine version du langage, dont
la première version alpha doit être diffusée à la fin de novembre 2010.</p>
<p>Il a également proposé d'intégrer <a href="http://en.wikipedia.org/wiki/Alternative_PHP_Cache#Alternative_PHP_Cache">APC</a>, l'un des systèmes de cache d'opcode disponible sur le marché, dans le cœur du langage.</p>
<p>Cependant, aucune décision définitive n'a été prise à ce niveau, car certain problème sont à régler, le premier d'entre eux étant que pour l'instant, <a href="http://en.wikipedia.org/wiki/Alternative_PHP_Cache#Alternative_PHP_Cache">APC</a> ne fonctionne pas avec la version de développement de <a href="http://www.php.net">PHP</a>.</p>
<p>Et pour en revenir à l'aspect pragmatique du développement du langage, <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a> le justifie très simplement.</p>
Pour lui, <a href="http://www.php.net/">PHP</a> doit être un outil simple et efficace, qui doit permettre avant tout de résoudre des problèmes réels rapidement.
<p>En conséquence, il ne faut développer que l'indispensable, et peu importe si l'implémentation sous-jacente n'est pas <q>belle</q>.</p>
<p>De son point de vue, un code mal écrit qui résout un problème vite et bien vaut mieux qu'aucune solution.</p>
<p>De plus, il pense qu'il est inutile de perdre du temps à développer des fonctionnalités qui ne présente pas une valeur ajoutée suffisante ou à rendre le code plus esthétique : la résolution du problème prévaut sur la beauté de la solution.</p>
<p>Les membres de la communauté des développeurs appliquent également cette philosophie, même si <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a> avoue qu'ils sont certainement beaucoup moins extrémistes que lui.</p>
<p>Et d'après <a href="http://ilia.ws/">Ilia</a> et <a href="http://derickrethans.nl/">Derick</a>, ils l'appliquent d'autant mieux que la plupart d'entre sont des bénévoles qui développent le langage sur leur
temps libre.</p>
<p>Ils préfèrent donc ne pas perdre leur temps à refaire plus proprement des choses qui fonctionnent alors qu'elles sont mal
implémentées, et à contrario se concentrer sur des développements à forte valeur ajoutée pour le plus grand nombre plutôt que sur des choses plus exclusives fonctionnellement et nécessaires uniquement à une minorité.</p>
<p>Le support d'<a href="http://fr.wikipedia.org/wiki/Unicode">Unicode</a>, qui devait être la fonctionnalité phare de PHP 6, fait d'ailleurs les frais de cette politique, puisque les développeurs du langage considèrent que les outils présent dans <a href="http://www.php.net/">PHP</a> actuellement pour manipuler des chaînes de caractères dans ce format sont suffisants pour répondre à la majorité des besoins.</p>
<p>En conséquence, depuis l'arrêt du développement de PHP 6, la communauté des contributeurs n'a fait aucun développement pour implémenter ou améliorer son support dans le langage, et il ne faut donc pas compter voir ce dernier être intégré plus fortement à <a href="http://www.php.net/">PHP</a> à court terme.</p>
<p><a href="http://fr.php.net/pdo"><abbr title="PHP Data Object">PDO</abbr></a>, la couche d'abstraction dédiées aux bases de données, fait également les frais de cette approche pragmatique.</p>
<p>Il existe en effet une <a href="http://wiki.php.net/rfc/pdov1"><abb title="Request For Comment">RFC</abb></a> datant de deux ans, qui pose les bases de sa réécriture complète afin de lui ajouter de nouvelles fonctionnalités.</p>
<p>Cependant, le développement est au point mort, notamment à cause du fait que la version actuelle est fonctionnelle et
couvre un spectre suffisant des besoins des utilisateurs du langage.</p>
<p>Autre conséquence, la feuille de route concernant l'ajout de fonctionnalité est complètement vierge actuellement, et aussi bien <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a> que <a href="http://ilia.ws/">Ilia</a> ou <a href="http://derickrethans.nl/">Derick</a> n'ont pu me donner la moindre indication sur une quelconque orientation.</p>
<p>J'ai donc lancé quelques <q>sondes</q> pour connaître leur ressenti par rapport à quelques technologies émergentes dans le web actuellement.</p>
<p>En effet, la volonté de la communauté des développeurs est de faire évoluer le langage en même temps que le web, et il m'a donc semblé pertinent de leur demander ce qu'ils pensaient d'une technologie comme <a href="http://nodejs.org/">node.js</a>, par exemple, qui permet d'exécuter du code <a href="http://en.wikipedia.org/wiki/JavaScript">Javascript</a> au niveau du serveur avec une gestion des entrées/sorties non bloquante.</p>
<p><a href="http://ilia.ws/">Ilia</a> et <a href="http://derickrethans.nl/">Derick</a> pensent que c'est une technologie très intéressante, mais que, pour l'instant, l'intérêt d'intégrer tout ou partie des concepts sous-jacents de <a href="http://nodejs.org/">node.js</a> n'est pas démontré.</p>
<p><a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a> est quand à lui beaucoup plus intéressé par <a href="http://en.wikipedia.org/wiki/Gearman">Gearman</a>, qui permet faire de la distribution de tâches de manière asynchrone
sur un ou plusieurs serveurs.</p>
<p>Il voit en effet cette technologie comme une alternative crédible aux <a href="http://en.wikipedia.org/wiki/Thread_%28computer_science%29">threads</a>, qu'il considère en conséquence comme complètement inutile
au niveau de <a href="http://www.php.net">PHP</a>.</p>
<p>J'ai également évoqué le départ de <a href="http://blog.mageekbox.net/?post/2010/05/06/Un-coup-dur-pour-PHP">Lukas Kahwe Smith</a> de la communauté des développeurs avec <a href="http://ilia.ws/">Ilia</a>.</p>
<p>Pour mémoire, <a href="http://blog.mageekbox.net/?post/2010/12/20/?post/2010/05/06/Un-coup-dur-pour-PHP">Lukas</a> est celui qui avait une réelle volonté de structurer le développement du langage.</p>
<p> Pour cela, il a mis en place divers outils de suivi, ainsi que le principe des <q>release masters</q> et des <a href="http://wiki.php.net/rfc"><abbr title="Request For Comments">RFC</abbr></a>.</p>
<p>Le fait qu'il quitte le projet pouvait donc potentiellement avoir un impact important sur le développement du langage.</p>
<p>Cependant, <a href="http://ilia.ws/">Ilia</a> considère que ce type d'événement est parfaitement normal dans le sens ou il fait parti du cycle de vie d'un projet libre, et qu'en conséquence, son impact est nul.</p>
<p>Le futur de <a href="http://www.php.net/">PHP</a> s'annonce donc intéressant, car si pour son créateur, le langage est mature et ne nécessite plus d'évolution majeure, car il lui permet de résoudre l'ensemble de ses problèmes, la porte n'est pas fermée, bien au contraire.</p>
<p>L'ajout de fonctionnalités ou les évolutions devront juste être en accord avec la politique de développement pragmatique appliquée par les
contributeurs.</p>
<p>De plus, les problèmes rencontrés ces derniers mois dans le développement du langage et par sa communauté n'a pas perturbé fortement son évolution, puisqu'une nouvelle version proposant de nouvelles fonctionnalités va voir prochainement le jour, et cela même si elle n'implémentera pas Unicode ou certaines évolutions réclamées par certains utilisateurs, car jugées peu pertinentes, aussi bien fonctionnellement que techniquement.</p>
http://blog.mageekbox.net/?post/2010/12/20/Interview-avec-Rasmus%2C-Ilia-et-Derick#comment-form
http://blog.mageekbox.net/?feed/atom/comments/220
Compte-rendu du forum PHP 2010
urn:md5:349e2a62d23f21d355f6386c0b4c8805
2010-11-15T09:00:00+01:00
2010-11-15T09:00:00+01:00
mageekguy
Conférences
Derick Rethansforum PHP 2010Ilia AlshanetskyPHPRasmus Lerdorf
<p>Certainement bien après tout le monde, voici donc mon compte-rendu du <a href="http://www.afup.org/pages/forumphp2010/">forum PHP 2010</a>.</p>
<p>Et je suis en retard, mais j'ai non pas une bonne excuse, mais plusieurs.</p>
<p>Tout d'abord, j'ai souhaité profiter ces quatre derniers jour de ma
famille, que je n'avais pas vu depuis plusieurs semaine, suite à ma
transhumance vers Lyon pour travailler pour <a href="http://www.pmsipilot.com/">PMSIpilot</a>.</p>
<p>Ensuite, ce forum a été <q>intense</q> physiquement, et j'avais
besoin de me reposer puisqu'en 36 heures, j'ai parcouru pas loin de 800
kilomètres, et j'ai dormi environs 7 heures, sans compter ce qu'il s'est
passé durant le <a href="http://www.afup.org/pages/forumphp2010/">forum</a>, et j'avais donc besoin de récupérer.</p>
<p>Enfin, je savais que <a href="http://www.mikaelrandy.fr/2010/11/11/forum-php-2010/">tout</a> <a href="http://www.freeblogware.org/2010/11/forum-php-2010-la-grosse-edition.html">le</a> monde allait en parler pendant le
restant de la semaine, et j'ai donc pensé qu'en conséquence, il n'y
avait pas le feu au lac pour en remettre une couche.</p>
<p>Cependant, la fièvre semble maintenant retombée, et j'ai à nouveau des neurones capable d'aligner des idées de manière cohérente.</p>
<p>Il est donc temps pour moi de vous faire profiter de <q>mon</q> <a href="http://www.afup.org/pages/forumphp2010/">forum PHP 2010</a>.</p> <p>Et autant vous le dire tout de suite, je n'ai pas du tout suivi <a href="http://blog.mageekbox.net/?post/2010/11/06/Le-forum-PHP-2010%2C-c-est-trois-deux-jours-%21">le programme</a> que je m'étais concocté avant mon départ pour le <a href="http://www.afup.org/pages/forumphp2010/">forum</a>.</p>
<p>En effet, si j'ai effectivement fait le voyage vers Paris en compagnie de mon collègue <a href="http://geoffreybachelet.com/">Geoffrey Bachelet</a>, <abbr title="Also Known As">aka</abbr> <a href="http://twitter.com/ubermuda">@ubermuda</a>, comme prévu initialement, et que nous avons fait le trajet en retouchant nos présentations respectives, la suite de mon voyage est parti relativement vite en vrille.</p>
<p>Mais en réalité, je brûle les étapes.</p>
<p>En fait, tout a commencé à partir en vrille dès 13 h 43 le lundi 8 novembre lorsque <a href="http://www.cyruss.com/">Cyril Pierre de Geyer</a> m'a demandé par courrier électronique si j'étais partant pour <del>recueillir la parole Divine</del> interviewer <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> dans le cadre d'un article pour <a href="http://www.programmez.com/magazine.php"><q>Programmez!</q></a> à rendre au plus tard pour le 15 novembre, puisque l'article en question doit paraître dans le prochain numéro du magazine.</p>
<p>À partir de ce moment, j'ai su que ce forum allait être particulier.</p>
<p>Et les faits m'ont donné raison, lorsqu'après avoir déposé mes bagages à l'hôtel, j'ai rejoint <a href="http://www.jmfontaine.net/blog/">Jean-Marc Fontaine</a>, <a href="http://www.cyruss.com/">Cyril Pierre de Geyer</a>, <a href="http://julien-pauli.developpez.com/">Julien Pauli</a>, <a href="http://www.freeblogware.org/">Gauthier Delamarre</a>, <a href="http://blog.strategeek.fr/">Nicolas Silberman</a> et quelques autres joyeux drilles, dont <a href="http://derickrethans.nl/">Derick Rethans</a> et <a href="http://ilia.ws/">Ilia Alshanetsky</a>, pour un dîner tardif mais fort amusant.</p>
<p>Et comme d'habitude, mais avec un jour d'avance, ce dîner s'est poursuivi devant <del>un</del> plusieurs verres de bière en compagnie de <a href="http://www.freeblogware.org/">Gauthier</a>, pour des discussions très passionnantes sur, entre autre chose, <a href="http://en.wikipedia.org/wiki/Neil_Young">Neil Young</a>, la supériorité des disques vinyle sur le CD audio, <a href="http://blog.mageekbox.net/?post/2010/10/11/Teasing-4">Atoum</a> et les patrons de restaurant ayant le <abbr title="Quotient Intellectuel">QI</abbr> d'une huître.</p>
<p>Ces discussions ce sont poursuivies jusqu'à une heure très avancée, et la nuit fut courte, d'autant que le train m'a réveillé aux environs de 6 h 30 du matin.</p>
<p>C'est donc bien frais, aux environs de 8 h du matin, que j'ai forcé le barrage à l'entrée de la cité des sciences et de l'industrie en me faisant passer effrontément pour un membre de l'organisation du forum.</p>
<p>J'y ai retrouvé <a href="http://twitter.com/xgorse">Xavier Gorse</a>, <a href="http://blog.strategeek.fr/">Nicolas Silberman</a>, <a href="http://www.hugohamon.com/">Hugo Hamon</a> et quelques autres en plein préparatif, avant de commencer à préparer ma conférence.</p>
<p>J'ai ensuite enchaîné, après un café et quelques conversations, sur la conférence d'ouverture et celle de <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a>, avant de suivre la conférence de <a href="http://www.jmfontaine.net/blog/">Jean-Marc Fontaine</a> au sujet <a href="http://www.afup.org/pages/forumphp2010/sessions.php#441">des revues de code</a>.</p>
<p>J'ai ensuite embrayé sur <a href="http://www.afup.org/pages/forumphp2010/sessions.php#378">ma propre conférence</a>, qui s'est bien déroulé et au sujet de laquelle j'ai eu de bons retours, malgré le fait que je n'avais pas répété et que j'ai eu quelques problèmes techniques au démarrage.</p>
<p>Je profite d'ailleurs de l'occasion pour préciser que mon support de conférence est maintenant <a href="http://www.slideshare.net/impossiblium/plein-phar">disponible en ligne</a> et que je suis à votre disposition pour toutes questions ou précisions. </p>
<p>Une fois ma conférence terminée, j'ai pris un repas rapide en compagnie, entre autre, d'<a href="http://hoa-project.net/Contact.html">Ivan Enderlin</a>, le papa de <a href="http://hoa-project.net/">Hoa</a>, ainsi que de <a href="http://ljouanneau.com/blog/">Laurent Jouanneau</a> et son équipe de <a href="http://www.jelix.org">jelixiens</a> toujours aussi sympathiques.</p>
<p>Une fois le repas terminé, qui a été ponctué de discussions diverses et variées mais toujours intéressante, j'ai ensuite eu la volonté de me rendre à la prochaine conférence.</p>
<p>Sauf que j'ai croisé dans la salle des conférenciers <a href="http://ilia.ws/">Ilia</a> et <a href="http://derickrethans.nl/">Derick</a>, avec lesquels j'ai débuté une discussion au sujet de <a href="http://www.php.net">PHP</a> qui a duré très longtemps.</p>
<p>J'ai donc loupé quasiment la totalité des conférences du mardi après-midi, mais en contrepartie, j'ai appris énormément de choses au sujet de la communauté des contributeurs et de la philosophie de développement de <a href="http://www.php.net/">PHP</a>, ce qui m'a permis de comprendre bon nombre de choses sur la façon dont il est développé.</p>
<p>Je vous ferait d'ailleurs une synthèse de ces conversations dans un prochain billet, car je pense avoir entre autre découvert, sinon la totalité, au moins une partie du <a href="http://www.python.org/dev/peps/pep-0020/"><q>zen</q></a> du langage.</p>
<p>J'ai cependant réussi à voir une partie de la conférence de <a href="http://geoffreybachelet.com/">Geoffrey</a>, ainsi que celle de Bruno Michel, <q><a href="http://www.afup.org/pages/forumphp2010/sessions.php#412">45 technologies en 45 minutes</a></q>.</p>
<p>J'avoue d'ailleurs avoir été déçu par cette dernière, que je n'ai pas suivi jusqu'à la fin.</p>
<p>En effet, le format m'a frustré, de plus, il s'agissait à mon sens de la présentation d'outils et non de technologies, et enfin, je connaissais grâce à ma veille technologique au moins 90% de ce qui a été présenté.</p>
<p>La journée s'est terminé par un apéritif, au cours duquel j'ai eu une discussion captivante au sujet des salaires et du marché de l'emploi avec <a href="http://eric.daspet.name/">Éric Daspet</a>, <a href="http://www.bastnic.info/">Bastien Jaillot</a> et <a href="http://blog.pascal-martin.fr/">Pascal Martin</a>, apéritif qui été suivi du repas des conférenciers qui n'a pas failli à sa réputation.</p>
<p>L'ambiance était en effet au rendez-vous, et j'ai partagé mon temps entre, notamment et non exclusivement, <a href="http://www.limbourg.com/arnaud/blog/">Arnaud Limbourg</a>, <a href="http://www.freeblogware.org/">Gauthier Delamarre</a>, <a href="http://www.bastnic.info/">Bastien Jaillot</a>, <a href="http://twitter.com/rik24d">Anthony Ricaud</a> et <a href="http://eric.daspet.name/">Éric Daspet</a>, avant de finir la soirée à plus de 4 h du matin en compagnie de <a href="http://www.freeblogware.org/">Gauthier</a>, comme d'habitude, mais aussi avec <a href="http://www.jmfontaine.net/blog/">Jean-Marc Fontaine</a>.</p>
<p>C'est donc évidemment très frais que j'ai franchi le barrage de sécurité de la cité des sciences et de l'industrie à 8 h 30 du matin, pour commencer à préparer mon article pour <a href="http://www.programmez.com/magazine.php"><q>Programmez!</q></a> et surtout mon interview avec <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a>, prévu pour 14 h 30.</p>
<p>J'ai donc passé ma mâtiné à rédiger les grandes lignes de mon article, et j'ai juste pris le temps de suivre la conférence de <a href="http://www.freeblogware.org/">Gauthier</a> au sujet du <a href="http://www.afup.org/pages/forumphp2010/sessions.php#485">Zend Framework</a> en compagnie de mon chef <a href="http://www.glagla.org/weblog/">Olivier Mansour</a>, afin de vérifier que la revue de sa présentation que nous avions effectué <a href="http://www.jmfontaine.net/blog/">Jean-Marc</a> et moi en état d'ébriété avancé vers 3 h 30 du matin avait porté ses fruits.</p>
<p>Évidemment, tout stressé qu'il soit, <a href="http://www.freeblogware.org/">Gauthier</a> a fait une présentation parfaite, et c'est donc rassuré que j'ai repris le chemin de la salle des conférenciers pour finaliser mon article et reposer quelques questions à Ilia avant de partir manger.</p>
<p>C'est donc après un autre repas rapide que j'ai interviewé <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> au sujet, entre autre, de l'avenir de <a href="http://www.php.net">PHP</a>, en compagnie de <a href="http://fr.linkedin.com/in/damienseguy">Damien Séguy</a>, que je remercie d'ailleurs une nouvelle fois pour son <q>assistance psychologique</q>.</p>
<p>Au cours de cette discussion avec <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a>, j'ai appris beaucoup de choses et ce qu'il m'a dit a complété en partie ce qu'<a href="http://ilia.ws/">Ilia</a> et <a href="http://derickrethans.nl/">Derick</a> m'avaient déjà raconté.</p>
<p>Nous avons également parlé d'autres choses que de <a href="http://www.php.net/">PHP</a>, et si je réserve l'exclusivité d'une bonne partie des informations qu'il m'a donné à mon article pour <a href="http://www.programmez.com/magazine.php"><q>Programmez!</q></a>, j'ai tout de même quelques perles à vous faire partager, toujours dans un prochain billet.</p>
<p>Une fois l'interview terminée, j'ai finalisé mon article, pour ensuite faire un dernier tour rapide pour remercier l'<a href="http://www.afup.org">AFUP</a> pour son accueil exemplaire, avant de rejoindre la gare du Nord au plus vite pour rentrez chez moi.</p>
<p>Enfin, J'ai tiré quelques leçon de ce forum :</p>
<ol><li>Il faut que j'abandonne tout espoir de rédiger des billets en temps réels au sujet de ce type d'événement. En effet, hormis le fait que le réseau Wi-Fi de la cité des sciences
n'a pas tenu la charge, je passe tout simplement trop de temps à suivre
les conférences et à discuter avec les uns et les autres pour pouvoir le
faire.</li>
<li>Il faut que j'abandonne toute velléité de planification, car je n'arrive jamais à suivre mon programme.</li>
<li>Il faut toujours venir à sa conférence avec sa présentation au format PDF.</li>
<li>C'est vraiment une bonne idée d'avoir un câble Ethernet avec
soi, car encore une fois, il m'a permis d'avoir un accès fiable à
Internet.</li>
<li>Dormir, c'est tricher ! (© <a href="http://fr.linkedin.com/pub/jerome-marteaux/2/705/ba1">Jérome Marteaux</a> 2005-2010)</li>
</ol>
<p>Cette édition 2010 du forum PHP aura donc été pour moi très physique, intense et plein de surprises, et je suis très content d'y avoir participé, même si je n'ai pas pu parler autant que je l'aurais voulu avec des gens comme <a href="http://hoa-project.net/Contact.html">Ivan Enderlin</a>, <a href="http://ljouanneau.com/blog/">Laurent Jouanneau</a>, <a href="http://www.bastnic.info/">Bastien Jaillot</a> ou <a href="http://eric.daspet.name/">Éric Daspet</a>, puisque j'ai été monopolisé par la rédaction de mon article et mes discussions avec <del>Dieu</del> <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus</a>, <a href="http://ilia.ws/">Ilia</a> et <a href="http://derickrethans.nl/">Derick</a>, que je remercie d'ailleurs pour leur patience.</p>
http://blog.mageekbox.net/?post/2010/11/15/Compte-rendu-du-forum-PHP-2010-1#comment-form
http://blog.mageekbox.net/?feed/atom/comments/209
Mort de PHP6 + 180 jours
urn:md5:1f978bcab6a75ba3392939f1e01333c5
2010-09-10T13:50:00+02:00
2010-09-10T13:50:00+02:00
mageekguy
PHP X
internals@PHPPHP XPHP-FPMPHP6Rasmus LerdorfZend Engine
<p>Encore une fois, dix jours viennent de s'écouler, et l'air de rien, cela fait maintenant 6 mois que <a href="http://blog.mageekbox.net/?post/2010/03/17/Repose-en-paix%2C-PHP-6">PHP 6 est décédé</a>.</p>
<p>J'avoue que, pour une fois, je n'ai pas pris le temps de suivre le développement de <a href="http://www.php.net">PHP</a> dans le détail sur cette dernière période, car je me suis concentré sur le développement d'Atoum ainsi que sur les interviews des <a href="http://blog.mageekbox.net/?post/2010/09/02/Et-apr%C3%A8s"><q>switchers</q></a> qui vont paraître prochainement, et que de plus, je dois organiser un certain nombre de choses en prévision d'un gros changement dans ma vie dans les mois qui viennent.</p>
<p>Malgré tout, j'ai tenu à faire ce billet, d'autant que l'actualité du développement de <a href="http://www.php.net/">PHP</a> n'est pas très trépidante actuellement et qu'en conséquence, il n'y a pas grand chose à dire.</p> <p>En effet, il y a eu 41 modifications d'effectuées sur le trunk sur la période qui vient de s'écouler, et il s'agit encore une fois pour l'essentiel de consolidations.</p>
<p>Tout d'abord, il y a eu le lot habituel de corrections de bugs et les bugs <a href="http://bugs.php.net?id=45357">#45357</a>,
<a href="http://bugs.php.net?id=52725">#52725</a>,
<a href="http://bugs.php.net?id=50590">#50590</a>,
<a href="http://bugs.php.net?id=52260">#52260</a>,
<a href="http://bugs.php.net?id=46723">#46723</a>,
<a href="http://bugs.php.net?id=50953">#50953</a>,
<a href="http://bugs.php.net?id=52498">#52498</a>,
<a href="http://bugs.php.net?id=50524">#50524</a>,
<a href="http://bugs.php.net?id=52323">#52323</a> et
<a href="http://bugs.php.net?id=52786">#52786</a> en ont fait les frais.</p>
<p>Ensuite, <a href="http://php.net/manual/fr/install.fpm.php"><abbr title="FastCGI Process Manager">FPM</abbr></a> a encore été optimisé, à la fois par les corrections de bugs effectuées ainsi que via des modifications spécifiques, afin de gagner encore en performance.</p>
<p>La version pour Windows de <a href="http://www.php.net/">PHP</a> a également subit des améliorations spécifiques, puisqu'elle supporte maintenant notamment <a href="http://en.wikipedia.org/wiki/Stat_%28Unix%29#lstat.28.29"><code>lstat</code></a> et qu'il est maintenant possible de compiler sans erreur <a href="http://fr2.php.net/manual/fr/book.mysqlnd.php"><code>mysqlnd</code></a> sur cette plate-forme, qui a lui même été amélioré.</p>
<p>Le ramasse-miettes, <abbr title="Also Known As">aka</abbr> <a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29">garbage collector</a>, a également été amélioré puisqu'un bug qui n'avait pas encore été identifié a été corrigé.</p>
<p>Le support de <a href="http://fr2.php.net/manual/fr/book.soap.php"><abbr title="Simple Object Access Protocol">SOAP</abbr></a> a également été <ironie><a href="http://svn.php.net/viewvc/php/php-src/trunk/ext/soap/php_encoding.c?r1=303034&r2=303033&pathrev=303034">amélioré</a></ironie> par <del>Dieu</del> <a href="http://fr.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a> lui-même, qui a d'ailleurs fait un commentaire assez original au sujet de sa correction :</p>
<blockquote><pre>This incorrect contraction started to get on my eyes after I saw it for the<br />87th time while struggling with an annoying SOAP service.</pre>
</blockquote>
<p>Le moteur de <a href="http://www.php.net/">PHP</a><abbr title="Also Known As">, aka</abbr> <a href="http://fr.wikipedia.org/wiki/Zend_Engine">Zend Engine</a>, a également été encore optimisé, notamment au niveau de la gestion de la mémoire.</p>
<p>L'ensemble de ces modifications a induit l'ajout, la correction ou la modification de plusieurs tests unitaires afin de prévenir toute régressions à l'avenir.</p>
<p>Il est a noté que le commentaire correspondant à la révision <a href="http://svn.php.net/viewvc?view=revision&revision=302923">302923</a> du trunk m'a fait froid dans le dos sur le moment :</p>
<blockquote><pre>PHP has changed (undefined) behaviour from 5.3.2 to 5.3.3: ->{} = , which seems to have been never an officially supported syntax and have never been a valid property name, is no longer allowed and PHP bails.</pre>
</blockquote>
<p>Il laisse en effet entendre que la syntaxe <code>->{}</code> ne sera plus supportée à l'avenir par <a href="http://www.php.net">PHP</a>.</p>
<p>Or, j'utilise personnellement cette syntaxe pour plusieurs projets, et je sais que je ne suis pas le seul.</p>
<p>Cependant, <a href="http://news.php.net/php.internals/49591">renseignement pris</a>, il ne s'agissait pas du tout de cela, puisqu'il ne fallait pas prendre la notation <code>->{}</code> au sens large, mais au sens littéral.</p>
<p>En effet, jusqu'à maintenant, le langage permettait d'écrire exactement ce qui figure dans le commentaire, à savoir -<code>>{} =</code>, ce qui n'a pas de sens et ne sera plus permis à l'avenir.</p>
<p>La syntaxe <code>->{.+} =</code> continuera donc bien à être supportée.</p>
<p>Au niveau de la liste de diffusion des contributeurs, l'activité n'a pas été énorme, et je n'ai donc pas de scoop à vous faire partager.</p>
<p>La discussion au sujet des <a href="http://wiki.php.net/rfc/annotations">annotations</a> continue tranquillement et semble <a href="http://news.php.net/php.internals/49589">constructive</a>.</p>
<p>Personnellement, je ne suis toujours pas fan de la syntaxe retenue ni de la mise en œuvre, mais apparemment, la solution technique proposée semble tenir la route.</p>
<p>Le débat autour du contrôle du type des arguments est également toujours en cours, mais cette fois dans une ambiance apaisée et des <a href="http://news.php.net/php.internals/49573">compromis</a> semblent devenu acceptables entre ceux qui veulent un contrôle strict et ceux qui réclame un contrôle correspondant à l'esprit de <a href="http://www.php.net/">PHP</a> au niveau de la gestion des types.</p>
<p>Il faut également noter une <a href="http://news.php.net/php.internals/49555">initiative intéressante</a> de <a href="http://blog.thepimp.net/">Pierre Joye</a> qui a créé un fichier dans le <a href="http://svn.php.net/viewvc/php/php-src/trunk/">trunk</a> qui décrit les modifications importantes subit par le <a href="http://fr.wikipedia.org/wiki/Zend_Engine">Zend Engine</a>.</p>
<p>Cette rétrospective est maintenant terminée, vous pouvez reprendre une activité normale.</p>
http://blog.mageekbox.net/?post/2010/09/09/Mort-de-PHP6-180-jours#comment-form
http://blog.mageekbox.net/?feed/atom/comments/184
Mort de PHP6 + 90 jours
urn:md5:9366f6505eb1580f0b0fd8cb5151afb3
2010-06-11T08:00:00+02:00
2010-06-11T08:59:46+02:00
mageekguy
PHP X
bugsGearmanLukas 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-form
http://blog.mageekbox.net/?feed/atom/comments/140