Google Blink (nouvelle fourchette WebKit): Signification de "Déplacer DOM en Javascript"?

12

Du blink blog :

Enfin, nous aimerions explorer des idées encore plus vastes, telles que le déplacement de l'intégralité du modèle d'objet de document (DOM) en JavaScript.

Qu'est-ce que ça veut dire? Cela signifie-t-il que le DOM de WebKit n'est actuellement pas codé en JavaScript mais dans une autre langue? Cela signifie-t-il qu'ils souhaitent exposer davantage d'accesseurs publics au DOM? Ou quoi?

BSalita
la source

Réponses:

14

La façon dont je le lis, il y a deux options. Mais avant de nous pencher sur cette question, vous devez comprendre comment fonctionne l'ancien modèle.

Dans la plupart, sinon toutes les implémentations des moteurs de rendu HTML, le DOM est implémenté en C ou C ++ et le moteur JavaScript est un module complémentaire qui a des liaisons exportées vers le DOM. Cela a du sens, si vous regardez comment HTML et JavaScript ont évolué. Mais beaucoup de temps est perdu pour marshaler les appels de JavaScript vers C / C ++ et inversement.

La première option est que le DOM devient plus étroitement lié au moteur JavaScript. Fondamentalement, les objets DOM deviennent des objets JavaScript de base, comme Array. Cela ne fait pas grand-chose, sauf pour réduire le marshaling, car le DOM utilise les types de données natifs du moteur JavaScript. Le DOM est alors toujours implémenté en C ou C ++.

La deuxième option et probablement ce qu'ils signifient, est que le DOM réel est implémenté en JavaScript. L'inconvénient est que l'accès au DOM est entièrement interprété, mais à la hausse, il supprime tout marshaling. C'est probablement un gain net, car le DOM est principalement composé de données de toute façon.

Là encore, je ne peux pas vous donner de réponse définitive - je ne travaille pas pour Google et donc je n'ai pas beaucoup d'informations.

rioki
la source
1
Je ne pense pas qu'il y ait de surcharge dans la liaison de types spéciaux par rapport aux types "natifs" des moteurs JavaScript car ce moteur est écrit en C ++ et tous les types sont implémentés en utilisant le même mécanisme. Ce qui peut être enregistré en utilisant les types JavaScript natifs est un code car beaucoup de code doit être dupliqué pour les types natifs et les types DOM.
Jan Hudec
D'après ce que je sais (de la liste de diffusion es-discuter, par exemple), c'est définitivement cette dernière. Il y a un souhait d'avoir DOM écrit en JS, non seulement à cause du coût de marshaling (qui est là), mais aussi pour supprimer autant d'objets "exotiques", "non natifs", "spéciaux" de l'espace de langue que possible. DOM est un grand PITA pour les concepteurs de langues, car il est spécial.
herby
Il existe un document de conception sur ce sujet récemment docs.google.com/document/d/…
subbul