| 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 |