J'ai donné la présentation ce matin à l'atelier RESoLVE, après une présentation de Michael Petullo, dans laquelle il a expliqué comment son équipe a simplifié la construction d'un nouvel OS, Ethos, dans l'objectif d'explorer l'espace de design de l'API d'un OS pour faciliter la construction d'applications sécuritaires par design. Leur démarche est analogue à la mienne au sens ou leur design réutilise autant que possible des outils existants pour implémenter les services majeurs de l'OS pour focuser leur efforts sur le design de l'API, alors que je réutilise autant que possible les éléments existants du langage pour implémenter les fonctionalités que nous ne sommes pas intéressé à instrumenter.
L'atelier compte une dizaine de participants dont 2 organisateurs, le reste étant des présentateurs et une ou deux personnes ne présentant pas. Malheureusement VEE (Virtual Execution Environment) semble avoir attiré tous les autres participants à la conférence de la journée alors notre audience est limitée.
Pour ma présentation, j'ai mis l'emphase sur le contexte d'application du système (i.e. l'instrumentation dynamique pour la sécurité, la compréhension de programmes, le design d'optimizations, etc.) et une vision de haut-niveau de l'architecture du système et j'ai complètement omis l'explication des optimizations réalisées. Cela fut un bon choix car plusieurs personnes dans l'audience viennent du monde de l'OS et ont peu d'expérience avec JavaScript. Les gens ont vraiment apprécié le diagramme d'architecture explicitant l'interaction entre les composants à différentes couches du système et ont confirmé que cette représentation semble "nouvelle". J'ai également eu des questions de base sur le modèle d'exécution des VMs pour JavaScript (Utilisation de Bytecode?, usage de JIT, etc.), sur la définition de métacircularité et sur la façon dont l'évaluation en performance a été réalisée. Cependant, personne n'a critiqué les résultats actuels au sens d'invalider l'utilité du système car il serait trop lent. Alex Garthwaite, maintenant à CloudPhysics après avoir travaillé chez VMWare, m'a demandé si on avait essayé de rouler Photon par dessus lui-même pour déterminer son propre comportement en performance ;-). J'ai partagé l'idée de Paul Khuong de faire une analyse asymptotique de performance sur un nombre arbitrairement grand de MetaVM stackée les unes par dessus les autres et j'ai eu quelques sourires. Après Paul et un gars à ma présentation chez Mozilla c'est la troisième personne qui suggère l'idée!. Je lui ai dit qu'on a fait quelquechose d'équivalent avec le nouveau système de Bruno. J'ai l'impression que d'instrumenter Photon avec lui-même ferait un cas d'utilisation vraiment intéressant et convaincant pour l'article de OOPSLA, spécialement si on obtenait de l'information utile pour comprendre son comportement en performance. En passant, je pense que le sandboxing de Photon lui permet de s'appliquer à lui-même alors que le prototype de Bruno ne pourrait probablement s'instrumenter lui-même, à ce que j'en comprends.
Le plus enthousiaste à la présentation fut Antony Hosking de Purdue University, un des deux organisateurs de l'atelier. Il m'a dit qu'il allait définitivement prendre le temps de lire en détails l'article soumis pour comprendre le détail de l'implémentation et des optimisations réalisées. Son intérêt provient de son effort actuel, pendant sa sabbatique, pour implémenter un framework de création de VM qui résout les problèmes principaux derrière l'implémentation de VMs, soit la gestion mémoire, le scheduling de thread, la génération de code, la gestion de dépendances à l'exécution (et un 5e que je ne me rappelle pas). À terme, l'objectif est de battre CPython (et PyPy!) en performance et de montrer que Java peut être implémenté efficacement. Pour l'instant il ne pense pas implémenter JavaScript étant donné que l'effort industriel placé dans son optimisation rend plus difficile l'obtention de résultats de performance comparablement intéressants. Il ne semblait pas fermé à l'idée de le faire éventuellement mais sa réaction première était négative. Il était particulièrement intéressé à connaître les fonctionnalités dont j'aurais besoin de la part de la VM hôte sous-jacente pour optimiser les opérations de la MetaVM. Je lui ai partagé les efforts de Maxime dans la création d'une nouvelle VM JIT traçante pour JavaScript et l'opportunité qu'on aurait à travailler ensemble (Maxime et moi) pour faire le design des couches de façon à ce qu'elles interagissent de manière positive.
Il était intéressé à ton travail, Maxime, alors je vais vous mettre en contact dans un email séparé.
Après avoir appris que je commençais mon PhD il a confirmé que le problème de recherche que j'ai mentionné, soit "Comment réifier les éléments opaques de la sémantique de JavaScript pour permettre l'instrumentation dynamique à haut-niveau tout en minimisant son coût en performance?" semble prometteur et excitant. On a passé une partie du dîner à discuter de ses efforts actuels (non-reliés à mon projet) dans la formalisation d'un GC concurrent temps réel avec aucune pause pour les mutateurs (de ce que j'en ai compris). L'objectif est d'avoir à la fois une définition de l'algorithme qui se raffine à du C efficace et qui est également tractable pour être traduite à une logique formelle à partie de laquelle des preuves vont pouvoir être faites. La grosse limitation actuelle au niveau des formalismes existants est l'impossibilité d'exprimer la composition parallèle des opérations, reliée au comportement des caches modernes.
Son principal collaborateur actuel est Steve Blackburn, que je suspecte avoir été un des reviewers de mon article de OOPSLA l'an dernier. C'était d'ailleurs l'un des meilleurs reviews en terme de qualité. Il était assis à la même table que moi au dîner mais je n'ai pas eu l'occasion de lui parler encore.
Antony te connaît Marc, mais je n'ai pas trop compris dans quel contexte vous vous êtes connus. Ses explications furent brèves et je n'ai pas tenté de le faire répéter.
Je viens d'entendre que son article le plus cité est celui à propos de Remembered Sets dans un contexte de GC. Benjamin je t'invite à Googler son nom pour voir si ça devrait apparaître dans ta section related work de mémoire de maîtrise.
Ça va être ça pour aujourd'hui, je vous tiens au courant du reste de la conférence plus tard!
Erick
Afficher les réponses par date