3 ms·
Let's build a browser engine, part 7: Intro to Painting
- bhhaskin 12y agoThank you for making these. It is a neat way to see what goes on behind the scenes.
- mbrubeck 12y agoYou're welcome! :D
- amelius 12y agoNice work. Very well explained. However, the main difficulty of building a browser engine is (IMHO) the fact that it should update the display incrementally whenever a change in the DOM-tree or the CSS occurs. That is, an update should cause a minimal (or close-to-minimal) number of (paint) operations to be performed. I'm looking forward to the discussion of this topic :)
- mbrubeck 12y agoI doubt that I'll manage to implement incremental layout or display-list invalidation in robinson. If you're curious about how it works other browsers, though, check out http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/#Global_and_incremental_layout http://www.html5rocks.com/en/tutorials/internals/howbrowsers...
- bjz_ 12y agoPerhaps you could add a footnote at the end regarding this?
- mbrubeck 12y agoI think I'll discuss some "advanced topics" like this in a separate post near the end of the series.
- amelius 12y agoEven if you don't implement it, it could be nice if you discussed it in abstract terms. That is describe the architecture, rather than write a complete implementation. IMHO, architecture is more important than implementation, especially when explaining things.
- bjz_ 12y agoThis is currently implemented in Servo, but it is not a trivial problem. It was only added in the past several months, if I recall correctly (pcwalton will have to clarify). This is but a demonstration engine for educational purposes - kind of like Featherweight Java.
- mbrubeck 12y agoFor reference, here the starting point of the Servo implementation: https://github.com/servo/servo/pull/3590 https://github.com/servo/servo/pull/3590