5-Year Plan: A Retrospective
by Simon Fraser
5 years ago, in a meeting room not so far away…
- DOM Event Loop
- Started working on it.
- Now called the Event Loop
- Benefits and problems are still accurate
- Render Tree Refcounting
- Not done this
- Haven’t found a real need to do this yet
- Painting: Display Lists
- Have done experiments
- Testing with MotionMark is a performance regression
- Lost parallelism
- Didn’t turn it on, may come back and revisit it
- Image Decoding
- Knew we had problems with this on main thread
- Decoding sync on main thread
- Can’t do it by default because of flashy painting
- Added decoding=async on img element to turn it on
- Or call API to ask for decoding on image and get a Promise
- Async decoding on first load
- This is done and we’re pretty happy with it
- Layout State Machine
- Making it harder to make mistakes interacting with RenderTree
- Be on a call stack iterating on layer list for hit testing
- Detect when mistakes happen and trigger assertions
- Fixed a bunch of issues of mutating trees in the middle of…
- Big benefit of event loop is: move all code that fires events to updateRendering steps and other well defined places
- Made good progress
- Compositing
- Downstream was making compositing decisions by looking at whole list of drawing commands
- Haven’t done it
- Earlier this year I did compositing updates are incremental with dirty bits
- Downstream was making compositing decisions by looking at whole list of drawing commands
- Hackability
- RenderRegions were removed which was good
- Working on inline layout
- Goals to simplify inline layout code
- ScrollableArea and FrameVIew
- Nothing really changed
- State of FrameLoader et. al… still not great
- Relationships between Document Frame, Dom Window and page are still pretty confusing
- Selection still has specialized versions
- Threading
- Can we do more in threads?
4 years ago, in the same meeting room not so far away…
- Optimizing layout
- IndexedDB optimizations
- Cleaning up loading code
- Page cache clean up
- We’re doing it!
- CSS properties status JSON and on webkit.org
- Event Loop
- Same stuff, making progress
- Fetch API
- Done
- Service Worker
- Done
- Intersection Observer
- Done
- Scroll-linked Effects
- Some work, but no really progress
- Houdini proposal
- Prototype of custom paint, but no where accessible
- Page & Friends
- Too many scrolling architectures
- iOS WK1 is different, iOS WK2 uses UI side compositing
- Code Organization
- PAL library
- Some of its there
- PAL library
- Layout & Rendering
- Fundamentally hasn’t changed
- LFC work is still underway, beyond experimental
- Rewrite of the layout code
- Making good progress
- Block layout 80-90% done
- Now doing table layout
- Inine layout work too
- Remove widgets
- Still have them
- Need to get rid of it
- Continuations
- Nothing happened
- Compositing
- Still do compositing updates on every forced layout
- Ideally only once every rendering step
- Hoping to do it this year
- Debuggability
- Log Channels: new log channels
- Use TextStream to make things log-able
- I want to log a RenderStyle and only the properties different from the default
- And show diff
- Still have progress to be made
- Next Year
- Figure out where logging goes
Last modified
5 years ago
Last modified on Nov 4, 2019, 7:26:57 AM
Note:
See TracWiki
for help on using the wiki.