On Wed, 17 Oct 2007, Franz Korntner wrote:

I'm not sure if this is a private reply or if it gets posted on the mailinglist.

Private -- I've forwarded your message. You probably want the "reply all" option in your mail client.

I currently don't have time to look at your patch (it'll probably be next week when I get time), but 10000 lines is most likely too big to evaluate in one go. Is there any possibility that you could break it up into more manageable chunks?
Nearly all patch snippets are independent. So you can slice it into chunks as large as you like. The smaller patchfile is an extract containing the cherries. The patch consists largely of adding typecasts and layout changes to fix the scope of inner enums. It also contains lots of explicit casts from float to int to mark loss of precision. At some places I uniformed signed/unsigned, int/long and const issues. Other stuff found I'll keep for later as not to make the patch too complicated.


Ok.

What I did bump into
- Is some const nasties with regard to tree nodes. This is because the text field are sometimes populated by const strings, sometimes 'shared strings' and sometimes free()able. This make the code very complex and breaks the const attribute. I really suggest that when the node is allocated, you allocate a couple of bytes more and copy the title field into the node itself. This relaxes management and you can drop the related code and be more const strict.

This is one for Richard. The tree stuff is mostly black magic from my perspective ;)

- The rendering coordinate system is limping on two legs (ints and floats) and it feels that it's having hidden side-effects. I also believe I found some points (in CSS) where sizes and counts are getting mixed. I am currently looking into getting these two separated. - At some places enums are being used instead of bitfields resulting in lots of warnings. - For example, in css there is the struct css_border_width, it contains css_length and the field percent. Technically is not a length, but it seems mutual-exclusive with css_length. It might seem that broadening the concept of css_length might optimize both code and storage size.

James -- have you any comments here?

No, keep the build system! What I suggest is to include the autoconf/automake templates so that they can be activated on request. The templates by themselves are harmless and do not stand in the way or interfere with the build system. I need them because of my non-standard environment.

Ok. That may be feasible. The only immediate issue I can see is that they may get out of sync.

I'm not sure I understand this. Are you saying that a standalone DOM component is a good thing or not? Note that a standalone HTML parser and core DOM implementation is likely to be smaller than a binary of libxml. Note that both the HTML parser and DOM implementation will be standalone libraries.
I meant that libxml seems suitable enough for an implied DOM model. i.e. it seems overdone to maintain a DOM tree separate of libxml. I meant using libxml for the DOM.

Right. My current plan involves a document language agnostic DOM implementation with appropriate parser backends (as separate components, if desired). The vast majority of DOM Level 3 Core is implemented (give or take implementation bugs). Note that the underlying tree representation is mostly irrelevant -- implementing the APIs is far more crucial.

If I have time to spare, I prefer to get netsurf though css compliancy testing.

Ok. That mostly integrates well with our planning -- namely adding dynamic document support to the layout engine prior to JavaScript work (the DOM is mostly orthogonal to the layout tree).


John.

Reply via email to