Essayons d’abord de com­pren­dre de quoi l’on parle.

D’abord PHP, il s’agit d’un lan­gage infor­ma­ti­que, l’un des plus uti­li­sés actuel­le­ment en par­ti­cu­lier pour faire des sites web. C’est celui que j’uti­lise pour tra­vailler et que j’ensei­gne sou­vent.

Les lan­ga­ges infor­ma­ti­ques évo­luent. Il sont dif­fi­ci­les à déve­lop­per et cela prend du temps, d’où des ver­sions suc­ces­si­ves qui por­tent des numé­ros. Quand le chan­ge­ment est impor­tant (nou­vel­les fonc­tion­na­li­tés, réé­cri­ture du coeur du lan­gage,…) on aug­mente la ver­sion d’une unité. On passe par exem­ple de PHP 4 à PHP 5 ou de Python 2 à Python 3.

Mais il existe aussi des ver­sions qui ne dif­fè­rent que par quel­ques détails (cor­rec­tion de bugs, mises à jour de sécu­rité) ou par l’ajout de fonc­tion­na­li­tés qui ne sont pas jugées déci­si­ves. Dans ce cas, on uti­lise les chif­fres qui sui­vent le numéro de ver­sion prin­ci­pale. On passe par exem­ple de la ver­sion 3.2 à la 3.3 voire même de la 3.31 à la 3.32 (pour cer­tains lan­ga­ges ou logi­ciels les numé­ros de ver­sions sont encore plus com­plexes).

Dans le cas de PHP, il y a ce que l’on appelle des bran­ches de déve­lop­pe­ment. Quand une ver­sions sta­ble et inté­res­sante est publiée, de nom­breux uti­li­sa­teurs l’adop­tent et l’on doit leur four­nir des mises à jour qui cor­ri­gent les bugs et les failles de sécu­rité alors même que l’on tra­vaille sur d’autres ver­sions… Pour essayer de d’être clair, ll exis­tait il y a encore quel­ques jours, 3 bran­ches de déve­lop­pe­ment pour PHP.

La plus ancienne se ter­mi­nait par la ver­sion 5.2.13 héri­tière après beau­coup d’éta­pes de la 5.2 (Les der­niè­res ver­sions ne sont que des cor­rec­tions de bugs ou des failles de sécu­rité).

La seconde se ter­mi­nait par la ver­sion 5.3.2, elle est l’héri­tière de la 5.3.0 qui appor­tait des amé­lio­ra­tions signi­fi­ca­ti­ves par rap­port à la 5.2 

La troi­sième bran­che pré­pa­rait PHP 6, une ver­sion impor­tante dont l’inno­va­tion prin­ci­pale devait être l’implé­men­ta­tion d’UNI­CODE.

L’obs­ta­cle UNI­CODE

Quel­ques mots sur UNI­CODE. Depuis les débuts de l’infor­ma­ti­que, cha­que carac­tère était enre­gis­tré sous la forme d’une suite de 8 chif­fres binai­res (ce que l’on appelle un octet). On pou­vait donc coder 256 carac­tè­res ce qui était lar­ge­ment suf­fi­sant dès lors qu’on tra­vaillait avec les lan­gues lati­nes. Dès qu’on veut tra­vailler avec d’autres alpha­bets, les cho­ses se com­pli­quent. On a évi­dem­ment besoin d’un grand nom­bre d’alpha­bets dif­fé­rents : cyril­li­que, arabe, grec, tamoul,… et bien entendu nom­breux idéo­gram­mes pour le chi­nois, le japo­nais et le coréen.

Pour pou­voir coder ce très grand nom­bre de carac­tè­res, on doit coder cha­cun d’entre eux sur plu­sieurs octets et on doit le faire de la même manière sur la terre entière. C’est l’objet d’une norme qu’on appelle UNI­CODE. Con­crè­te­ment elle se tra­duit par l’uti­li­sa­tion des for­mats infor­ma­ti­que UTF-8, UTF-16 et UTF-32.

Il est tout à fait pos­si­ble d’affi­cher et de trai­ter des infor­ma­tions codées en UNI­CODE avec PHP. ce qui était en cours avec PHP 6, c’était la réé­cri­ture de l’ensem­ble du lan­gage pour qu’il soit com­pa­ti­ble avec l’UNI­CODE. Pen­sez par exem­ple à la com­plexité de la réé­cri­ture de tou­tes les fonc­tions, et elles sont par­ti­cu­liè­re­ment nom­breu­ses en PHP, qui mani­pu­lent des chaî­nes de carac­tè­res.

Ce tra­vail qui était en cours depuis plu­sieurs mois, vient d’être inter­rompu. Les déve­lop­peurs qui tra­vaillent sur PHP ont estimé qu’ils ne pou­vait par­ve­nir à un bon résul­tat en pour­sui­vant le tra­vail tel qu’il était entre­pris.

Ce n’est pas une catas­tro­phe mais c’est un évé­ne­ment assez rare.

Que va-t-il se pas­ser main­te­nant ? Je ne crois pas que cet évé­ne­ment tou­chera de manière signi­fi­ca­tive le déve­lop­pe­ment de notre lan­gage favori compte tenu de la rela­tive matu­rité qu’il a déjà atteinte même si l’implé­men­ta­tion d’UNI­CODE est impor­tante. Le groupe des déve­lop­peurs va réflé­chir à de nou­vel­les maniè­res d’atta­quer la dif­fi­culté UNI­CODE. Il est très vrai­sem­bla­ble que des solu­tions seront trou­vées mais cela pren­dra du temps. Sans doute d’autres amé­lio­ra­tions signi­fi­ca­ti­ves ver­ront-elles le jour avant la com­pa­ti­bi­lité UNI­CODE,

Je vous tien­drai au cou­rant sur ce blog des sui­tes de cette affaire.