Etna progress 20070518 : rewriting the validator
Par Laurentj le vendredi, mai 18 2007, 14:59 - Projets - Lien permanent
Since it is impossible to fix some few bugs in the current RelaxNg validator in Etna, I decided to rewrite it and use an other algorithm. The future algorithm might ask more resources but it will be more robustness and could valid in all cases (in theory :-) ). I began the development of a prototype in javascript. For the moment it passes 15% of tests of James Clark's tests suite, but first results are encouraging. At the end of this development, I will develop a version entirely in C++.
By the same time, as I explained in a previous post, I rewrite the RelaxNG parser and use now the sax parser component which exists in Gecko since 1.8.1 version.
Commentaires
Can you add a link to the test suite ? I'm feeling too lazy to google for it.
Two urls :
Pourquoi le besoin de passer au C++ ensuite ? La compilation JIT du JavaScript ne permet-elle pas une performance suffisante ?
Il n'y a pas de compilation JIT dans le moteur Javascript de Mozilla. Il n'y a même pas encore d'execution de bytecode (le projet Tamarin n'est pas encore operationnel et ne le sera que pour Mozilla 2).
J'ai besoin de faire de la validation temps réèl dans l'éditeur. Cela demande de trés bonnes performances. Le prototype javascript n'existe que pour valider les concepts du nouvel algo rapidement. Donc C++ pour le validateur. Et puis en C++ je peux accéder à toutes les API de Gecko qui ne sont pas accessible en JS, donc optimiser certaines parties.
Pour le parser relaxng, il est vrai que le choix est plus discutable. Mais cela m'obligerai à un mic mac JS/C++ entre les données du validateur et le parser. Je ne suis pas fan.