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