wiki:WebKitFeatureFocus2018-2019

Version 1 (modified by Jon Davis, 3 years ago) (diff)

Notes from the 2018 WebKit Contributors Meeting

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