WebKit Feature Focus for 2018-2019
by Geoff Garen
200 features planned
Build
- XCBuild
- CMake
- ccache
- Precompiled headers
Focused on the build system and especially moving to unified build for 2x speed up
All non-Apple ports have moved to CMake, Apple still working on moving to CMake for build speed up
Interested in ccache by default Precompiled headers
JavaScriptCore
- New byte code format
- No pointers
- Load bytecode out of cache
- The more we use process isolation the less hits in cache
- Node.js prototype
- Participation helps standardization and performance testing
- JetStream 2
Layout
- Next-Generation layout
- Complete rewrite of the layout engine
- Closer to spec language
- A lot more efficient
- Parallelize-able
- Initial speed-up from initial design is already faster on its own
- Right now it draws boxes
- LFC
Web Standards
- Pointer Events
- New form controls
- Removing WebSQL
- Web Components Polish
- Intersection Observer (non-Apple dev, Google)
- WebShare API (done)
- Payment Request
- Font Color Palettes
- Web Animations (close to done)
- CSS logical properties (in-progress, going ok)
- Better text decorations
- CSS conic-gradient (done)
- Datalist <input type color>
- File upload enhancements
- WebAuthentication
- CSS @page
- CSS logical properties
- Unicode 12
- Implement CSS Text Module Level 4
- IndexedDB Quality
Service Workers
- Long strange trip
- We did a great job at delivering high quality SW
- Not a lot of adoption of offline mode
- More interest in using Service Workers to make your website fast
- But everyone knows it makes your site slower
- It launches a separate process, and that takes time
- Then they try to pose new standards to make SW faster
- We need to focus on an effort to optimize SW
- Merged the storage process into the network process
- Now only have to launch the network process
- First time startup is 250 ms faster
- Doesn’t eliminate the launch of SW itself and XPC messaging
- SW launch the sw in process
- Any other tab will have to use the same SW, no cold start penalty, but still XPC overhead
- If the Network is really slow, SW may make it faster
- Mobile specific
- In countries with slow cell service, mobile devices, may be a big part of browsing
- Should we rename NetworkProcess?
- Kinda… maybe?
- LocalStorage is in the UIProcess
- Payments?
- NetworkProcess or their own process?
- It’s possible it will be the generic helper process
- HelperProcess, DoerProcess, DoallthethingsProcess
WebRTC & getUserMedia
- Using it for tech or learning support system
- WebRTC h.264 simulcast (done)
- VP8 for WebRTC (the libwebrtc implementation)
- Fuller support for WebRTC 1.0 APIs
- May break some sites
- Support mDNS ICE Candidates
- New proposal for a standard for privately sharing your IP address
- VCP for WebRTC
- Screen capture
- MediaCapabilities API
Security & Privacy
- Process per origin (PSON, frames) [it’s really process per site]
- Process swap on navigation
- Isolate frame content, hasn’t been designed it yet
- ITP 3.0
- May create web compatibility concerns
- New design patterns for sharing info
- Fingerprinting Mitigations 2.0
- May create web compatibility concerns
- New design patterns for sharing info
- Safe Browsing in WKWebView
- Fuzz-0 for JSC
- Apple should take the action to Open-Source fuzzers
- WebKit should run DOM fuzzers
- Make available to WebKit Security Team
- Consider blocking third-party iframe redirects
- Attack, ad in iframe top.locaiton.href sends to App Store or other page
- Hard for web to protect itself from this
- CSP protections available, no one understands or uses them
- Other window or tab used to navigate to somewhere of attackers choosing (phishing page etc)
- Prohibit like pop-up blocking
- Attack, ad in iframe top.locaiton.href sends to App Store or other page
- Prevent navigation hijacking
- Sandbox Hardening 2.0
- Find and correct CSP Implementations
- CSP (Content Security Policy) level 3
- New content blocker action: insert stub
Graphics & Media
- WebGPU
- Improvement over GL designs
- WebGL 2
- Because people use it
- “It’s the best” - mmaxfield
- Modern EME
- Support codec and container switching in MSE
- AirPlay improvements
- Fullscreen quality
- Implement PiP JS API
- Autoplay API
- API to determine if autoplay will succeed
- If you can’t autoplay, you provide a button
- Spec is in flux
- Will discuss at TPAC
- HDR video
Performance Defense
“A big part of being fast is not getting slow” - Geoff Garen
- PLT 5
- Performance regression defense coordination
- Throttled PLT (Page Load Test for iOS) - no regression
- PLT (macOS) - no regression
- Speedometer2 - no regression
- PLUM - no regression
- Membuster - no regression
Performance Offense
- Opitimize “first meaningful paint”
- JS bytecode caching
- Match Lua memory usage on Lua JSFight
- A lot of system services that take advantage of JS scripting
- Fixed cost memory is too high
- Excited to set a goal to be just as good as Lua
- JetStream 2 - 6% faster
- MotionMark - 5% faster
- Improve page loading performance on watchOS by 20%
- JetStream 2 - 20% faster
- RAMification - 30% less memory
- MotionMark - 10% faster
Scrolling
- Use async scrolling in overflow
Web Inspector & WebDriver
- Handle big sites
- Modern architecture
- Medis debugging
- Multiple disjoint selection in grids and trees (cookies)
- Editing improvements in styles sidebar
- WebDriver for wkwebview
- Tab UI refresh
- more…
WebKit API
- UIWebView on top of WKEWebView
- Disable iOS WK1 WebThread
- Downloads
- More apps on Modern WebKit
- Enhanced editing APIs
- “One Network Process”
- Partition-aware website data API
Infrastructure & Testing
- Improved EWS
- webkit.org improvement 2019
- Upgrade build.webkit.org to Buildbot 1.0
- iOS LayoutTest Cleanup
- API testing technical debt reduction
Last modified
6 years ago
Last modified on Oct 12, 2018, 3:23:27 PM
Note:
See TracWiki
for help on using the wiki.