Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - wysiwyg xml editor

Fil des billets - Fil des commentaires

mardi, octobre 9 2007

New validator progress 20071009

I finished to port the javascript prototype of my new validator, into a C++ version. Performances are increased by 43% : the javascript version takes 7 seconds[1] to parse 373 schemas and to validate 529 documents (the James Clarks's tests suite) . The C++ version takes only 4 seconds. I think I can still increase this performance by doing improvements in the algorithm. But I must fix before all the 7050 memory leaks which appeared during the launch of the tests suite :-) (I think I have circular references...).

This new validator is not embedded into Etna yet. I have to do some works:

  • rewriting the blank content generator
  • rewriting the implementation of the diIValidationSchemaQuery interface. This feature is needed by the editor to query the validator in different contexts ("can this element be added as a child of the current element ?", "can text be inserted here ?", "is this attribute value valid ?" etc.)
  • implementation of our RelaxNG extensions in the new RelaxNG parser.

See the meta bug #164 for details.


[1] In a previous post, I said it took 27.7 seconds, but it was with my own test suite framework, which shows each result in a html document. I use now the test framework of Mozilla, which is launched in a command line, and which doesn't show any result, except when a test fails.

mardi, juillet 10 2007

New validator progress 20070710

My new prototype of a relaxng parser/validator in javascript is finished :-). It passes all tests !

schema parsing document validation
passed tests 373 (100%) 529 (100%)
failed tests 0 (0) 0 (-110)
total 373 529

(Previous status).

I will make other tests with my own tests suite, and I will begin to develop the C++ version.

lundi, juillet 9 2007

New validator progress 20070709

My new relaxng parser pass now all tests !

schema parsing document validation
passed tests 373 (100%) 419 (79%)
failed tests 0 (-39) 110 (-0)
total 373 529

(Previous status).

I'm going to finish the validation part and will make certainly little optimizations (for the moment, all tests take 27.7 seconds on my PC).

jeudi, juin 28 2007

New validator progress 20070628

My new RelaxNG parser is almost finished. I still have to implement the checking of string sequence restrictions. I didn't really work on the validator it self.

Here is the current status of tests.

schema parsing document validation
passed tests 334 (89%) 419 (79%)
failed tests 39 (-63) 110 (-24)
total 373 529

(Previous status).

mercredi, juin 6 2007

New validator progress 20070606

New improvements on the relaxng parser and on the validator. Here is the current status of tests.

schema parsing document validation
passed tests 271 (72%) 395 (74%)
failed tests 102 (-58) 134 (-150)
total 373 529

(Previous status).

mercredi, mai 30 2007

New validator progress 20070530

I continue to work on my new validator. Here is the current status of tests.

schema parsing document validation
passed tests 213 (57%) 245 (46%)
failed tests 160 284
total 373 529

(Previous status).

vendredi, mai 25 2007

New validator progress 20070525

I worked hard on the prototype of my new validator. The architecture of the RelaxNg parser is nearly finished, and it uses the sax parser of Mozilla. I'm happy of this new architecture because it's cleaner, I don't have to use ugly hacks to do some things since it is less complex...

Here are current results of my "UnitTest'O'Meter" showed in a little app I made to launch James Clark's test suite (little xulrunner application based on the RelaxNG Validator Extension for Etna) :-)

schema parsing document validation
passed tests 168 (45%) 138 (26%)
failed tests 205 391
total 373 529

update: sorry, there aren't 286 documents to test, but 529. I updated the table.

vendredi, mai 18 2007

Etna progress 20070518 : rewriting the validator

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.

vendredi, mars 23 2007

Etna progress 20070323

  • fixed bug 159 : Script of test suite was too long
  • closed bug 115 : no more segfaults with the trunk version, when parsing CNXML 0.5 schema
  • Worked on bug 162 : impossible to edit elements on which a default blank content is defined in the schema (regression)
  • New public repository. It contains only the source code of the current version i'm working on (future 0.4a). And there isn't any previous change : i didn't migrate the history. But of course, it will contain futur changes :-) This is a subversion repository (i'm tired of CVS). To do a checkout : svn checkout Then follow instructions of the README.txt file, to build Etna.

mardi, mars 13 2007

Etna progress 20070313

Between two customer projects, I'm working on Etna. The future version, Etna 0.4, will be based on Gecko 1.9/Xulrunner 1.9. Each day, I synchronize the source code of Etna with the Mozilla trunk. Here are some bug fixes and improvements since few months:

  • Almost all the regression bugs which appeared during the gecko 1.9 port, are fixed. This port is a hard work because
    1. The source code of Etna 0.3.1 is based on Gecko 1.7. Many things have changed between Gecko 1.7 and 1.9. Last year I produced an experimental version based on Gecko 1.8/XulRunner 1.8, but I decided to migrate to gecko 1.9, because of all big changes in the Mozilla trunk.
    2. the DOM implementation of Gecko 1.9 has improved and it respects now the DOM Level 3 specification. So I had to find and modify all code which use old behaviors of the DOM Level 2 implementation. For example, see bug 140, bug 141..
    3. the build strategy has changed in gecko 1.9 : I tried to build my components as external components, not into the new big library "libxul". But my code uses too many internal API of Gecko, and it seems that the libxul exports less and less internal API. However, I had to change many things (headers, makefile options etc..) to build my components into the libxul (and when you see that the documentation about the build system is closed to nothingness or is deprecated..).
    4. Fortunately, the source code of the mozilla editor (libeditor) have not been improved very much (just bug fixes, improvements about accessibility, or IME), so I didn't have much work on parts related to this libeditor.
  • I fixed other bugs on the RelaxNG parser, the validator and the UI :
    • bug 146 : the validation of time datatype was wrong
    • bug 155 : problem during the namespace setting on a new document
    • bug 151 : there wasn't dialog when we closed the window and the document was modified.

Now the gecko 1.9 port is almost finished, I will try to fix old bugs before doing improvements into the UI or the API. I think the 0.4 version will be only a maintenance release with few improvements and of course a better rendering engine (gecko 1.9). The 0.5 version will have new editing features and a better validator. For example, I plan to use the new sax parser API of gecko to read relaxNG schema, instead of loading a DOM : so the relaxNG parser will be faster and will use less memory. And finally, the 0.6 version will have many improvements on the user interface.

No date for all this release. I will publish a zip of my current source code.

I will try also to publish such post more often :-).

jeudi, février 8 2007

En vrac

  • Dans le cadre de l'adaptation sur Gecko 1.9 (trunk Mozilla), d'Etna, l'éditeur XML wysiwyg que je développe chez DI, je suis donc tous les jours les évolutions du futur moteur de Firefox 3. Je peux vous assurer que ça va vraiment dépoter. De nombreuses refontes internes, meilleure prise en charge des standards (CSS avec test acid2, SVG avec les filtres et pas mal d'autres améliorations, DOM etc.), meilleures précisions dans l'affichage, meilleures perfs, moins de leaks...
  • À propos de Gecko 1.9, la version 1.9a2 est sortie
  • Comme tous les ans, je prévois d'aller à fosdem, le meeting de logiciel libres. J'y vais bien sûr avec la double casquette Xulfr/Mozilla-europe, pour assister aux confs Mozilla et tenir le stand Mozilla.
  • J'ai corrigé pas mal de bug dans Jelix 1.0 beta 1. J'hésite alors à sortir Jelix 1.0 beta 1.1. Mais ça fait un peu lourd comme intitulé :-). Je me demande si je n'aurais finalement pas dû utiliser la notation 0.1, 0.2, 0.3 etc, bien que je n'aime pas trop.
  • Le week-end dernier, presque 4 mois aprés la 3.0 RC1 (manque de temps :-)), j'ai sorti la version 3.0 finale de Wikirenderer, ma classe php de transformation de texte wiki en ce-que-vous-voulez, avec quelques bugs corrigés en plus.
  • On a commencé le développement d'un dépôt/catalogue de composants (xbl, javascript, xpcom..) pour le site Y aura peut être même finalement pour chaque projet, un dépôt subversion + trac, puisqu'un gentil contributeur a fait des scripts d'administration de tous ça, dans le cadre de la forge pour Jelix (eh oui, on prévoit une forge de module pour jelix ;-) ). Je compte bien mutualiser les devs sur les deux sites.
  • Bon, mais, problème toutefois : mon enveloppe charnelle m'a bien fait comprendre, mardi, qu'elle n'avait plus 20 ans, et qu'en gros, il fallait que j'arrête absolument de coder jusqu'à pas d'heure tous les soirs. Donc dorénavant, je vais faire des vraies nuits, ce qui aura pour conséquence un ralentissement de tous mes projets persos. C'est trop injuste :-/.

Je me dis parfois qu'un jour il faudra que j'arrête d'avoir cette vie de fou. Je m'en suis rendu compte il y a quelques années, après les quelques mois passés en Polynésie. La vie en région parisienne est aliénante, complètement folle, voire débile. Je passerais bien à nouveau quelques mois sous les tropiques, à me laisser vivre, à vivre tout simplement. Encore faut-il en avoir la possibilité...