| 1 | == Apple WebKit Goals for 2021 == |
| 2 | ''by Maciej Stachowiak'' |
| 3 | |
| 4 | We like to organize our thinking into themes |
| 5 | |
| 6 | - Performance |
| 7 | - Privacy |
| 8 | - Security |
| 9 | - User Experience |
| 10 | - Web Compatibility |
| 11 | - Platform Integration |
| 12 | |
| 13 | For performance, we look at a number of benchmarks (both public and internal) with a zero regression policy |
| 14 | |
| 15 | Ideas for improving performance are a lightweight optimization level for JS, faster scrolling on top sites, fixes for hangs when dealing with touch events, a WebGL backend on top of Metal |
| 16 | |
| 17 | Some privacy initiatives are app-bound domains (allow apps to limit the set of domains they talk to), private click measurement with an added fraud prevention capability, storage access API interoperability |
| 18 | |
| 19 | Some security initiatives with sandboxing are creating a GPU process for media, canvas, WebGL, and (eventually) all rendering (removes lots of capabilities from the web process sandbox), bring the macOS sandbox closer in parity to the iOS sandbox, further remove more system services from the sandbox |
| 20 | |
| 21 | Some other security initiatives are complete GC IsoSubspaces (ensures that objects with different types are never allocated in the same space), JIT Cage (verify/validate JIT code), verifying and fuzzing (both JSC, WebCore, and IPC) |
| 22 | |
| 23 | Some user experience improvements include iPad pointer improvements (e.g. scroll events when using a magic mouse/trackpad), fix all flashes of white |
| 24 | |
| 25 | Some web compatibility goals include testing what we call the "top 1000" sites as well as a focus on education sites |
| 26 | |
| 27 | CSS improvements include logical properties/values, CSS subgrid, scrolling features catchup (adding missing features or updating older implementation), individual transform properties |
| 28 | |
| 29 | JavaScript improvements include private class fields, Intl catchup, BigInt performance improvements and spec completion, RegExp parity, modules in web workers, top-level await |
| 30 | |
| 31 | WebAssembly goals include implementing streaming and threads |
| 32 | |
| 33 | Graphics goals include finishing and shipping WebGL2, creating a way to embed 3D models (under active standards discussion), thinking about proposing a scene graph API (describe geometry/materials of 3D scene for it to be rendered) |
| 34 | |
| 35 | Animation goals include filling in more features for Web Animations API, including animation of discrete properties |
| 36 | |
| 37 | Media API goals include implementing audio worklets, improving web audio compliance (ideally to eventually remove the webkit prefixed variants), WebRTC media capture |
| 38 | |
| 39 | Media format enhancements include new codec support like VP9 and Opus |
| 40 | |
| 41 | Web API goals include web speech API, improved WebSocket compatibility, improved IndexedDB quality, date inputs on macOS, web share level 2 API |
| 42 | |
| 43 | Developer tools goals include font inspection/tooling, inspected page overlay for CSS grid/flex, improved JavaScript framework debugging support |
| 44 | |
| 45 | Modernization goals include WKWebView completeness compared to legacy web views, adding a way to create web views with SwiftUI, mac catalyst web view parity, more content blocker capabilities |
| 46 | |
| 47 | Parity goals include WebAuthn for all WKWebViews, getUserMedia for all WKWebViews, improved JavaScriptCore public API performance |
| 48 | |
| 49 | Architecture goals include adopting LFC (Layout Formatting Context) for all inlines (block will come later) |
| 50 | |
| 51 | Policy goals include using inclusive terminology in code, more ways to prevent regressions (e.g. requiring EWS, requiring commit queue, etc.), more bug screening in bugzilla |
| 52 | |
| 53 | Testing goals include getting all tests running in modern WebKit (WK2), automatically syncing WPT, improve API tests (e.g. make the test runner actually be an app on iOS), EWS improvements, analyzing (and improving) runtime of regression tests |
| 54 | |
| 55 | Tools/services goals include finishing python3 migration, updating to Buildbot 2.0, adding CMake on Apple ports, migrating to GitHub (possibly a multi-year project) |
| 56 | |
| 57 | === Questions & Comments === |
| 58 | |
| 59 | ''basuke:'' what is it that you mentioned about the GigaCage? |
| 60 | |
| 61 | ''othermaciej:'' JITCage is more about restricting what kind of instructions can be written to the JIT region such that you cant jump out of it to unexpected places, almost like sandboxing the list of instructions |
| 62 | |
| 63 | ''pnormand:'' (question about codecs) |
| 64 | |
| 65 | (mentioned thinking carefully about battery life and whether hardware acceleration is possible, as well as interest in AV1) |
| 66 | |
| 67 | ''Noam Rosenthal:'' is it possible to make conversations about shipping features more transparent and easier to follow? |
| 68 | |
| 69 | ''othermaciej:'' Can be challenging because considerations about technologies can be complicated and standards themselves can be complicated. we're thinking about different ways of doing this, such as more visible things in Slack (hober: there's a presentation later about this). |
| 70 | |
| 71 | ''kbr:'' possible to make it easier for opensource to work on iOS simulator? |
| 72 | |
| 73 | ''othermaciej:'' Don't know of any specific plan, but please let us know of any specific issues related to the opensource iOS simulator build |