Google étend le support des applications natives dans Chrome en lui permettant de faire fonctionner du code binaire LLVM.
Google continue à pousser le support de l'exécution des applications natives dans Chrome en annonçant le prévu PNaCI ou NaCI Portable - lire comme «pinacle», au cours de la Google I/O 2013. PNaCl instaure un changement dans l'ensemble des outils : au lieu de compiler du C/C++ pour chacune des plates-formes matérielles ciblées, les développeurs doivent maintenant générer un seul code binaire LLVM qui est chargé par le client Chrome, traduit en code natif, validé et appliqué localement.
Actuellement, PNaCl est pris en charge par Chrome 29 pour les architectures x86 32 bits, x86 64 bits et ARM. Les clients seront en mesure d'exécuter des modules natifs sur n'importe quelle page Web - pas besoin de les packager dans des applications pour Chrome Web Store -, quand elle est entièrement publiée. De plus, les modules PNaCl pourront fonctionner sur les futures architectures sans recompilation. Ce qui est plus intéressant, c'est que même si seulement le C/C++ est actuellement pris en charge, les modules PNaCl peuvent être écrits théoriquement dans n'importe quels langages qui peuvent être compilés en code binaire LLVM, y compris l'ActionScript, l'Ada, le D, le Fortran, le Haskell, le bytecode Java, l'Objective-C, le Python, le Ruby, le Rust, le Scala et le C #. Cela élargit la gamme des langages et des applications natives qui peuvent être exécutés dans Chrome avec peu ou aucune adaptation.
PNaCl a été proposé en interne par une équipe de 4 ingénieurs de Google en 2010 (PDF, les auteurs ont envisagé une solution qui :
- Fournit un format ISA-neutre pour les modules NaCl compilés supportant une grande variété de plates-formes cibles sans recompilation depuis les sources ;
- Rend facile pour les développeurs de construire, de tester et de déployer des modules portables exécutables ;
- Supporte initialement les instructions x86-32, x86-64 et ARM, mais simplifie dans le future le support des autres processeurs populaires ;
- Préserve les propriétés de sécurité et de performance des clients natifs ;
PNaCl utilise encore le mécanisme de sandbox NaCl d'origine qui vise à renforcer la sécurité lors de l'exécution de code binaire traduit comme le montre le graphique suivant :
L'ensemble des outils de développement fonctionne sur Windows, Mac et Linux. Un SDK est disponible sur le site web du projet.