mercredi 13 novembre 2013

[Chrome] PNaCl enfin activé par défaut

Chrome 31 pour Windows, Mac et Linux débarque dans le quasi-anonymat et pourtant il embarque une nouvelle technologie révolutionnaire. Et je pèse mes mots!

31 secondes, montre en main. Trop fort Google!
Cette nouvelle version du canal stable active PNaCl (Portable Native Client), une technologie qui devrait permettre d'enclencher la deuxième vitesse pour les Chrome Apps.

Simple comme une page web.
Sans rentrer dans les détails techniques, on peut imaginer dans un futur plus ou moins proche voir Quick Office fonctionner dans le navigateur Chrome ou encore pouvoir acheter Call of Duty Ghosts sur le Chrome Web Store.


Si vous avez un PC bien puissant qui chauffe, avec des tuyaux de refroidissement bleu fluo, alors vous pouvez acheter le jeu français "From Dust" et le faire tourner directement dans Chrome. Comment cette prouesse technologique est-elle possible? C'est grâce à Native Client.

Du code C/C++ dans un navigateur.
Grosso modo, cette technologie permet de développer des modules ayant accès aux fonctions natives du CPU/GPU de l'ordinateur. Comme ces fonctions parlent directement dans la langue maternelle de la machine, celle-ci comprend vachement plus vite. Bref, cela permet de faire des hybrid apps aussi performantes que des applications iOS, Windows, etc...

Bastion sur iTunes, mais aussi sur Chrome
En fait, Native Client est activé depuis Chrome 14 (en septembre 2011). Très vite, des jeux plutôt cools sont apparus sur le Chrome Web Store: Bastion, Mini Ninjas, Air Mech, Tomb Raider... Et puis plus rien! Le problème, c'est qu'une fois l'hybrid app codé en Native Client, le compilateur fournit un exécutable qui ne tourne que sur une famille de processeurs, par exemple les x86. Pour produire un autre binaire à destination des architectures ARM, il faut adapter le code et le recompiler pour qu'il soit optimisé pour le HP Chromebook 11 par exemple.

Google a du passer par là pour Google+Photos.
Donc, 80% du code est réutilisable, mais 20% reste à adapter/optimiser pour chacune des architectures cibles. Parfois, ces 20% se traduisent par des mois et des mois de boulot, et s'ils n'aboutissent pas, l'application peut se révéler finalement inutilisable. Pendant ce temps là, la concurrence a terminé son programme sur Android et iOS. C'est ballot pour la plateforme Chrome ayant comme principal bénéfice la portabilité.

Le but, c'est quand même que ça marche un peu partout, sans avoir à réécrire du code.
Nous en venons donc enfin à PNaCl, qui est une évolution majeure de Native Client. En compilant le code C/C++ via PNaCl, on obtient un exécutable écrit non pas en langage natif (x86-32 bits, x86-64 bits, ARM...) mais en bitcode.  C'est ensuite la LLVM (Low Level Virtual Machine) installée sur la machine cible qui se charge de traduire ce bitcode en langage natif. Dans l'histoire, vu qu'on a rajouté un intermédiaire (le traducteur), on perd un peu en vitesse d’exécution, mais il parait qu'on reste proche des 80% de performances (par rapport à un binaire natif).

Mettez un dragon dans votre Chrome!!
Ceux qui n'ont pas lâché en lisant le précédent paragraphe sont donc prêts pour la vidéo ci-dessous. Si vous avez trop sommeil et que l'informatique vous emmerde profondément, vous pouvez aller reluquer la [Babe] d'hier avant d'aller vous coucher.