| | 1 | = 5-Year Plan: A Retrospective |
| | 2 | ''by Simon Fraser'' |
| | 3 | |
| | 4 | '''5 years ago, in a meeting room not so far away…''' |
| | 5 | |
| | 6 | - DOM Event Loop |
| | 7 | - Started working on it. |
| | 8 | - Now called the Event Loop |
| | 9 | - Benefits and problems are still accurate |
| | 10 | - Render Tree Refcounting |
| | 11 | - Not done this |
| | 12 | - Haven’t found a real need to do this yet |
| | 13 | - Painting: Display Lists |
| | 14 | - Have done experiments |
| | 15 | - Testing with MotionMark is a performance regression |
| | 16 | - Lost parallelism |
| | 17 | - Didn’t turn it on, may come back and revisit it |
| | 18 | - Image Decoding |
| | 19 | - Knew we had problems with this on main thread |
| | 20 | - Decoding sync on main thread |
| | 21 | - Can’t do it by default because of flashy painting |
| | 22 | - Added decoding=async on img element to turn it on |
| | 23 | - Or call API to ask for decoding on image and get a Promise |
| | 24 | - Async decoding on first load |
| | 25 | - This is done and we’re pretty happy with it |
| | 26 | - Layout State Machine |
| | 27 | - Making it harder to make mistakes interacting with RenderTree |
| | 28 | - Be on a call stack iterating on layer list for hit testing |
| | 29 | - Detect when mistakes happen and trigger assertions |
| | 30 | - Fixed a bunch of issues of mutating trees in the middle of… |
| | 31 | - Big benefit of event loop is: move all code that fires events to updateRendering steps and other well defined places |
| | 32 | - Made good progress |
| | 33 | - Compositing |
| | 34 | - Downstream was making compositing decisions by looking at whole list of drawing commands |
| | 35 | - Haven’t done it |
| | 36 | - Earlier this year I did compositing updates are incremental with dirty bits |
| | 37 | - Hackability |
| | 38 | - RenderRegions were removed which was good |
| | 39 | - Working on inline layout |
| | 40 | - Goals to simplify inline layout code |
| | 41 | - ScrollableArea and FrameVIew |
| | 42 | - Nothing really changed |
| | 43 | - State of FrameLoader et. al… still not great |
| | 44 | - Relationships between Document Frame, Dom Window and page are still pretty confusing |
| | 45 | - Selection still has specialized versions |
| | 46 | - Threading |
| | 47 | - Can we do more in threads? |
| | 48 | |
| | 49 | '''4 years ago, in the same meeting room not so far away…''' |
| | 50 | |
| | 51 | - Optimizing layout |
| | 52 | - IndexedDB optimizations |
| | 53 | - Cleaning up loading code |
| | 54 | - Page cache clean up |
| | 55 | - We’re doing it! |
| | 56 | - CSS properties status JSON and on webkit.org |
| | 57 | - Event Loop |
| | 58 | - Same stuff, making progress |
| | 59 | - Fetch API |
| | 60 | - Done |
| | 61 | - Service Worker |
| | 62 | - Done |
| | 63 | - Intersection Observer |
| | 64 | - Done |
| | 65 | - Scroll-linked Effects |
| | 66 | - Some work, but no really progress |
| | 67 | - Houdini proposal |
| | 68 | - Prototype of custom paint, but no where accessible |
| | 69 | - Page & Friends |
| | 70 | - Too many scrolling architectures |
| | 71 | - iOS WK1 is different, iOS WK2 uses UI side compositing |
| | 72 | - Code Organization |
| | 73 | - PAL library |
| | 74 | - Some of its there |
| | 75 | - Layout & Rendering |
| | 76 | - Fundamentally hasn’t changed |
| | 77 | - LFC work is still underway, beyond experimental |
| | 78 | - Rewrite of the layout code |
| | 79 | - Making good progress |
| | 80 | - Block layout 80-90% done |
| | 81 | - Now doing table layout |
| | 82 | - Inine layout work too |
| | 83 | - Remove widgets |
| | 84 | - Still have them |
| | 85 | - Need to get rid of it |
| | 86 | - Continuations |
| | 87 | - Nothing happened |
| | 88 | - Compositing |
| | 89 | - Still do compositing updates on every forced layout |
| | 90 | - Ideally only once every rendering step |
| | 91 | - Hoping to do it this year |
| | 92 | - Debuggability |
| | 93 | - Log Channels: new log channels |
| | 94 | - Use TextStream to make things log-able |
| | 95 | - I want to log a RenderStyle and only the properties different from the default |
| | 96 | - And show diff |
| | 97 | - Still have progress to be made |
| | 98 | - Next Year |
| | 99 | - Figure out where logging goes |