| 1 | = WebKit Feature Focus for 2018-2019 = |
| 2 | ''by Geoff Garen'' |
| 3 | |
| 4 | '''200 features planned''' |
| 5 | |
| 6 | == Build == |
| 7 | |
| 8 | - XCBuild |
| 9 | - CMake |
| 10 | - ccache |
| 11 | - Precompiled headers |
| 12 | |
| 13 | Focused on the build system and especially moving to unified build for 2x speed up |
| 14 | |
| 15 | All non-Apple ports have moved to CMake, Apple still working on moving to CMake for build speed up |
| 16 | |
| 17 | Interested in ccache by default |
| 18 | Precompiled headers |
| 19 | |
| 20 | == JavaScriptCore == |
| 21 | |
| 22 | - New byte code format |
| 23 | - No pointers |
| 24 | - Load bytecode out of cache |
| 25 | - The more we use process isolation the less hits in cache |
| 26 | - Node.js prototype |
| 27 | - Participation helps standardization and performance testing |
| 28 | - JetStream 2 |
| 29 | |
| 30 | == Layout == |
| 31 | |
| 32 | - Next-Generation layout |
| 33 | - Complete rewrite of the layout engine |
| 34 | - Closer to spec language |
| 35 | - A lot more efficient |
| 36 | - Parallelize-able |
| 37 | - Initial speed-up from initial design is already faster on its own |
| 38 | - Right now it draws boxes |
| 39 | - LFC |
| 40 | |
| 41 | == Web Standards == |
| 42 | |
| 43 | - Pointer Events |
| 44 | - New form controls |
| 45 | - Removing WebSQL |
| 46 | - Web Components Polish |
| 47 | - Intersection Observer (non-Apple dev, Google) |
| 48 | - WebShare API (done) |
| 49 | - Payment Request |
| 50 | - Font Color Palettes |
| 51 | - Web Animations (close to done) |
| 52 | - CSS logical properties (in-progress, going ok) |
| 53 | - Better text decorations |
| 54 | - CSS conic-gradient (done) |
| 55 | - Datalist <input type color> |
| 56 | - File upload enhancements |
| 57 | - WebAuthentication |
| 58 | - CSS @page |
| 59 | - CSS logical properties |
| 60 | - Unicode 12 |
| 61 | - Implement CSS Text Module Level 4 |
| 62 | - IndexedDB Quality |
| 63 | |
| 64 | == Service Workers == |
| 65 | |
| 66 | - Long strange trip |
| 67 | - We did a great job at delivering high quality SW |
| 68 | - Not a lot of adoption of offline mode |
| 69 | - More interest in using Service Workers to make your website fast |
| 70 | - But everyone knows it makes your site slower |
| 71 | - It launches a separate process, and that takes time |
| 72 | - Then they try to pose new standards to make SW faster |
| 73 | - We need to focus on an effort to optimize SW |
| 74 | - Merged the storage process into the network process |
| 75 | - Now only have to launch the network process |
| 76 | - First time startup is 250 ms faster |
| 77 | - Doesn’t eliminate the launch of SW itself and XPC messaging |
| 78 | - SW launch the sw in process |
| 79 | - Any other tab will have to use the same SW, no cold start penalty, but still XPC overhead |
| 80 | - If the Network is really slow, SW may make it faster |
| 81 | - Mobile specific |
| 82 | - In countries with slow cell service, mobile devices, may be a big part of browsing |
| 83 | - Should we rename NetworkProcess? |
| 84 | - Kinda… maybe? |
| 85 | - LocalStorage is in the UIProcess |
| 86 | - Payments? |
| 87 | - NetworkProcess or their own process? |
| 88 | - It’s possible it will be the generic helper process |
| 89 | - HelperProcess, DoerProcess, DoallthethingsProcess |
| 90 | |
| 91 | == WebRTC & getUserMedia == |
| 92 | |
| 93 | - Using it for tech or learning support system |
| 94 | - WebRTC h.264 simulcast (done) |
| 95 | - VP8 for WebRTC (the libwebrtc implementation) |
| 96 | - Fuller support for WebRTC 1.0 APIs |
| 97 | - May break some sites |
| 98 | - Support mDNS ICE Candidates |
| 99 | - New proposal for a standard for privately sharing your IP address |
| 100 | - VCP for WebRTC |
| 101 | - Screen capture |
| 102 | - MediaCapabilities API |
| 103 | |
| 104 | == Security & Privacy == |
| 105 | |
| 106 | - Process per origin (PSON, frames) [it’s really process per site] |
| 107 | - Process swap on navigation |
| 108 | - Isolate frame content, hasn’t been designed it yet |
| 109 | - ITP 3.0 |
| 110 | - May create web compatibility concerns |
| 111 | - New design patterns for sharing info |
| 112 | - Fingerprinting Mitigations 2.0 |
| 113 | - May create web compatibility concerns |
| 114 | - New design patterns for sharing info |
| 115 | - Safe Browsing in WKWebView |
| 116 | - Fuzz-0 for JSC |
| 117 | - Apple should take the action to Open-Source fuzzers |
| 118 | - WebKit should run DOM fuzzers |
| 119 | - Make available to WebKit Security Team |
| 120 | - Consider blocking third-party iframe redirects |
| 121 | - Attack, ad in iframe top.locaiton.href sends to App Store or other page |
| 122 | - Hard for web to protect itself from this |
| 123 | - CSP protections available, no one understands or uses them |
| 124 | - Other window or tab used to navigate to somewhere of attackers choosing (phishing page etc) |
| 125 | - Prohibit like pop-up blocking |
| 126 | - Prevent navigation hijacking |
| 127 | - Sandbox Hardening 2.0 |
| 128 | - Find and correct CSP Implementations |
| 129 | - CSP (Content Security Policy) level 3 |
| 130 | - New content blocker action: insert stub |
| 131 | |
| 132 | == Graphics & Media == |
| 133 | |
| 134 | - WebGPU |
| 135 | - Improvement over GL designs |
| 136 | - WebGL 2 |
| 137 | - Because people use it |
| 138 | - “It’s the best” - mmaxfield |
| 139 | - Modern EME |
| 140 | - Support codec and container switching in MSE |
| 141 | - AirPlay improvements |
| 142 | - Fullscreen quality |
| 143 | - Implement PiP JS API |
| 144 | - Autoplay API |
| 145 | - API to determine if autoplay will succeed |
| 146 | - If you can’t autoplay, you provide a button |
| 147 | - Spec is in flux |
| 148 | - Will discuss at TPAC |
| 149 | - HDR video |
| 150 | |
| 151 | == Performance Defense == |
| 152 | |
| 153 | “A big part of being fast is not getting slow” - Geoff Garen |
| 154 | |
| 155 | - PLT 5 |
| 156 | - Performance regression defense coordination |
| 157 | - Throttled PLT (Page Load Test for iOS) - no regression |
| 158 | - PLT (macOS) - no regression |
| 159 | - Speedometer2 - no regression |
| 160 | - PLUM - no regression |
| 161 | - Membuster - no regression |
| 162 | |
| 163 | == Performance Offense == |
| 164 | |
| 165 | - Opitimize “first meaningful paint” |
| 166 | - JS bytecode caching |
| 167 | - Match Lua memory usage on Lua JSFight |
| 168 | - A lot of system services that take advantage of JS scripting |
| 169 | - Fixed cost memory is too high |
| 170 | - Excited to set a goal to be just as good as Lua |
| 171 | - JetStream 2 - 6% faster |
| 172 | - MotionMark - 5% faster |
| 173 | - Improve page loading performance on watchOS by 20% |
| 174 | - JetStream 2 - 20% faster |
| 175 | - RAMification - 30% less memory |
| 176 | - MotionMark - 10% faster |
| 177 | - |
| 178 | |
| 179 | == Scrolling == |
| 180 | |
| 181 | - Use async scrolling in overflow |
| 182 | |
| 183 | == Web Inspector & WebDriver == |
| 184 | |
| 185 | - Handle big sites |
| 186 | - Modern architecture |
| 187 | - Medis debugging |
| 188 | - Multiple disjoint selection in grids and trees (cookies) |
| 189 | - Editing improvements in styles sidebar |
| 190 | - WebDriver for wkwebview |
| 191 | - Tab UI refresh |
| 192 | - more… |
| 193 | |
| 194 | == WebKit API == |
| 195 | |
| 196 | - UIWebView on top of WKEWebView |
| 197 | - Disable iOS WK1 WebThread |
| 198 | - Downloads |
| 199 | - More apps on Modern WebKit |
| 200 | - Enhanced editing APIs |
| 201 | - “One Network Process” |
| 202 | - Partition-aware website data API |
| 203 | |
| 204 | == Infrastructure & Testing == |
| 205 | |
| 206 | - Improved EWS |
| 207 | - webkit.org improvement 2019 |
| 208 | - Upgrade build.webkit.org to Buildbot 1.0 |
| 209 | - iOS LayoutTest Cleanup |
| 210 | - API testing technical debt reduction |