PROJET AUTOBLOG


Le Geek Café

Archivé

source: Le Geek Café

⇐ retour index

Linux dans un navigateur web

mardi 17 mai 2011 à 20:38
C'est une nouvelle prouesse que vient de réaliser Fabrice Bellard, le célèbre hacker français. En faisant tourner un émulateur pour processeur Intel x86 dans un navigateur, il a en effet réussi à charger et à démarrer le noyau du système d'exploitation Linux, ainsi qu'un shell fonctionnel et un environnement minimaliste.

Un émulateur Intel dans le navigateur



Cet émulateur, entièrement écrit en JavaScript, nécessite un navigateur web récent, tel Chrome 11 ou Firefox 4. Afin d'assurer les meilleures performances possibles, il repose en effet sur l'utilisation des . Cette fonctionnalité de JavaScript, encore nouvelle et peu connue, donne la possibilité au programmeur d'utiliser des tableaux plus performants que ceux que l'on trouve habituellement dans le langage, mais sur lesquels une contrainte de type forte est rajoutée : le contenu est obligatoirement un entier de taille fixée.

Fabrice Bellard a utilisé ce type de tableaux pour simuler le CPU et la mémoire d'un processeur de type x86 (la famille de processeurs des PC). S'inspirant de ses propres travaux sur le logiciel QEMU (dont il est le principal auteur), et poussant encore plus loin les travaux d'optimisation, il a été capable d'obtenir un émulateur suffisamment performant pour faire tourner le noyau du système Linux. Par dessus celui-ci, plusieurs programmes sont disponibles et fonctionnels : le célèbre éditeur emacs (dans sa version Qemacs, également écrite par Bellard), et le compilateur tcc (qui est lui aussi une création du hacker).

Hommage à Fabrice Bellard !



Ce travail est donc un véritable aboutissement pour Fabrice Bellard. Extrêmement productif et ingénieux, ce programmeur est en effet l'auteur de beaucoup de programmes très élaborés, et le détenteur d'au moins autant de records.

Par exemple, il est également connu pour avoir battu en l'an 2000 le record du plus long nombre premier calculé (avec un programme C de seulement 438 caractères de long), et pour avoir battu en 2009 le record du calcul du plus grand nombre de décimales du nombre π - sur son ordinateur portable (alors que ce genre de record est habituellement obtenu grâce à de coûteux supercalculateurs). JSLinux est donc un nouveau record, qui témoigne encore une fois de son soucis du détail, et de sa grande maîtrise du fonctionnement des ordinateurs.

Le futur de JavaScript



Mais au-delà de ce record personnel, JSLinux est une nouvelle preuve du grand changement qui s'est fait, ces dernières, dans nos navigateurs. Ceux-ci, toujours plus performants et complexes, cherchent désormais à supporter des programmes très complexes, et nécessitant beaucoup de performances (comme des lecteurs vidéo, des jeux vidéos en 3D (avec WebGL) ou, désormais, des émulateurs et systèmes d'exploitation). Beaucoup de travail a du être accompli pour en arriver là : outre les tableaux bas-niveaux précédemment évoqués, les nombreux moteurs haute-performances JavaScript tels v8 de Google ou SpiderMonkey de Firefox sont, plus que jamais, au centre de l'attention.

Ces moteurs bénéficient d'un gros travail de recherche qui a été fait sur l'optimisation des performances de JavaScript. De nombreuses techniques modernes sont appliquées, par exemple la compilation « JIT » (pour « Just In Time », une compilation juste avant l'exécution qui optimise au maximum les parties les plus utilisées du code, en les spécialisant notamment). Cependant, pour beaucoup de gens, il faut aller encore plus loin, en se débarrassant des contraintes habituelles de JavaScript, et en proposant plutôt d'exécuter un « bytecode » soigneusement conçu et normalisé — un peu sur le même principe de fonctionnement que la technologie Java.