Évidemment, au départ, ils ont cherché à faire ce qui avait déjà été tenté avec PHP 6, à savoir faire supporter Unicode par le Zend Engine, mais cette fois-ci en y intégrant une gestion des caractères basé sur UTF-8 et non UTF-16 comme dans le cas de feu PHP 6.

En effet, le fait que l'UTF-16 ait été utilisé dans PHP 6 a entrainé une forte dégradation des performance du langage et une augmentation de la consommation mémoire très significative.

De plus, cela a fortement compliqué le code, qui est devenu difficile à la fois à comprendre et à maintenir, car il était de la responsabilité du développeur de manipuler correctement les chaînes de caractères.

C'est d'ailleurs pour cette raison qu'il a fallu analyser, vérifier et modifier la totalité du code source de PHP lors de la conception de PHP 6, d'ou un temps de développement extrêmement long.

En utilisant UTF-8 au lieu de UTF-16, les développeurs de chez Zend ont donc pensé qu'ils pourraient profiter des avantages d'Unicode basé sur UTF-16 sans en avoir les inconvénients.

L'encodage UTF-8 présente en effet de nombreux avantages par rapport à l'UTF-16, à commencer par un besoin en mémoire significativement moins important et une compatibilité avec l'US-ASCII.

De plus, il est fortement compatible avec la plupart des encodages non Unicode relatifs au langue latine, comme le bien connu ISO 8859-1 supporté depuis toujours par PHP.

Mais malgré tout leurs efforts, les développeurs de Zend n'ont malheureusement pas réussi à faire mieux que les développeurs de PHP 6, ou du moins, le résultat de leur travail n'a pas été à la hauteur de leurs attentes.

En effet, le véritable problème n'était pas tant l'encodage retenu pour représenter les chaîne de caractères au format Unicode que le Zend Engine en lui-même, car ce dernier n'a tout simplement pas été conçu pour pouvoir intégrer facilement et surtout efficacement une telle fonctionnalité.

Suite à ce constat et bien aidé par le fait que les développeurs de PHP 5.4 ne cherchait pas à faire en sorte que ce dernier supporte Unicode, Zend a alors pris, il y a un peu moins d'un an, une décision radicale : puisque le Zend Engine n'est pas capable, de part sa conception, de supporter Unicode, alors, il faut utiliser une autre machine virtuelle capable de le supporter pour propulser PHP !

Pendant un temps, les développeurs de Zend ont envisagé d'utiliser Parrot, la machine virtuelle qui est utilisée entre autre par Perl 6, aka Rakudo, car elle avait l'avantage de déjà disposer d'un support partiel de PHP.

Cependant, ils ont fini par décidé d'utiliser la Java Virtual Machine aka JVM, notamment après avoir pris connaissance des travaux de la jeune société française Clever Cloud.

Le co-fondateur de cette start-up, Kevin Decherf, travaillait en effet à l'époque depuis de nombreux mois sur une solution permettant l'exécution de code PHP via la JVM.

Basée sur une branche autonome de Quercus, une implémentation en Java de PHP 5, la solution de Clever Cloud avait l'avantage, aux yeux de Zend, d'avoir à la fois déjà démontré sa fiabilité et de surtout d'être capable d'intégrer le support d'Unicode à court terme.

En outre, elle allait permettre à Zend d'enfin pouvoir venir concurrencer Java sur son propre territoire, à l'heure ou les principaux frameworks PHP disponibles sur le marché font massivement appel à des concepts et à des philosophies de développement issus du monde Java.

Enfin, suite au rachat de MySQL et de Sun par la société Oracle, l'utilisation de la JVM par PHP permettrait de présenter le couple PHP/MySQL sous la bannière de cette dernière, ce qui représenterait un avantage commercial significatif et déterminant pour pousser à l'adoption de PHP à la place de Java.

En partenariat avec Clever Cloud, Zend a donc fait en sorte que PHP soit supporté par la JVM tout en intégrant le support d'Unicode, et après un peu plus de 6 mois de travail,le projet bianca, puisque c'est son nom, était finalisé sous la forme d'un moteur PHP basé sur la JVM parfaitement à même de remplacer le Zend Engine.

Et les performances de ce nouveaux moteur se sont révélées époustouflantes, puisque d'après les tests effectués par Clever Cloud, PHP propulsé par bianca est en moyenne 20% plus performant que Java à contexte équivalent, alors que les deux langages utilisent la même machine virtuelle.

Le Zend Engine a quand à lui des performances très en retrait, d'environs 30% en moyenne, et sur certaines opérations très spécifiques telles que celles mettant en œuvre des nombres en virgule flottante, il peut être jusqu'à 70% plus lent

C'est d'ailleurs ses performances très supérieures à celle du Zend Engine qui ont poussé Clever Cloud à nommer leur moteur bianca, puisqu'il s'agit du nom d'une souris d'un célèbre dessin animé et que comme chacun le sait, les élephpants ont très peur des souris.

Zend dispose donc aujourd'hui de l'arme absolue sous la forme d'une version de PHP ultra-performante intégrant le support d'Unicode et dont le code vient d'être rendu public via github.

Reste à savoir ce qu'en penseront les communautés gravitant autour de PHP, à commencer par ses utilisateurs et ses développeurs, car Zend a travaillé jusqu'ici dans le plus grand secret et ce n'est que aujourd'hui que Clever Cloud a annoncé l'existence de bianca, plusieurs mois après le début de son développement.

D'ailleurs, on peut remarquer que le nom de Zend ne figure absolument pas dans le communiqué officiel de Clever Cloud, et sans une indiscrétion de son fondateur Quentin Adam (désolé Quentin, le scoop était trop énorme pour ne pas que j'en parle), je pense que le lien entre Clever Cloud et Zend aurait été gardé secret pendant encore longtemps.