wiki:PlayStationWebKitPortUpdate2019

Version 3 (modified by stephan.szabo@sony.com, 12 months ago) (diff)

--

PlayStation WebKit Port Update

  • Our fourth contributors meeting
    • We used WebKit before that but now are contributing back
  • Team
    • Both in San Francisco and Tokyo
    • ~1400 patches landed (~500 since last meeting)
    • > 200 patches reviewed
    • 3 reviewers
    • 5 committers
    • 2 contributors
  • Remote Inspector
    • Socket-based implementation
      • Didn't have Apple's support or dbus
    • Multi-platform
      • Windows
      • POSIX
    • Can inspect across platforms
      • Inspect from WinCairo, GTK or Mac
      • Inspect WinCairo, GTK, or PlayStation targets
  • cURL Network Layers
    • Continued support and imporovements of the network Layer
      • Passing additional layout tests
    • HTTP/2 Support
      • WinCairo as fast as Chrome on Windows for Akamai HTTP/2 Benchmark
    • Brotli Support
    • Sony enabled Intelligent Tracking Prevention
    • Cookies handled by libPSL (Public Suffix List)
    • We plan to continue maintaining and improving this network layer
  • Sanitizers and Control Flow Integrity
    • Using CFI to harden WebKit and JSC
      • Needs clang with LTO and hidden visibility
      • Not running with JIT
      • Currently working internally
    • Running WebKit with other sanitizers
      • MSVC is going to ship with built in Asan support
      • WinCairo can build with clang-cl supports some sanitizers
      • Address Sanitizer bots?
        • Maybe based on gtk or wpe given better support for the sanitizers on Linux?
  • CMake Improvements
    • Target based
      • Remove use of all the _LIBRARIES_INCLUDE_DIR and instead have them communicated through the target
    • Mirror Apple Build
      • Each project independently
      • Copy all headers
    • General clean-up of the build
    • Upstreamed enhancements to Make for our Platform Visual Studio integration
  • JSC Improvements
    • Implemented new language features
      • Optional chaining (?.) and bullish coalescing (??)
        • Still behind runtime flag but ready anytime
      • Numeric literal separators (_)
      • Hasbang (#!)
    • Added private (JSContextPrivateRef) C++ API for unhandled promise rejections
      • Internal need for the callback
      • No objective C api at this time
    • Made various spec compliance fixes
      • Mostly concerning early errors
      • In two cases, managed to fix the spec instead!
      • ECMAScript fixes based on JSC behavior
  • WinCairo Bots
    • Migrated to new EWS
      • Addressed issues with patch on Windows
        • Cause of patches failing to apply
      • Looking into AWS
        • All builds running in docker containers
        • Hoping to address scale and stability
  • Downstream WebKit Port
    • Currently branched off of latest Safari release branch
      • Safari 608.1.48
    • Still have a large amount of patches downstream
      • Upstream focus has been on common code between WInCairo and PlayStation
      • Sometimes internally near deadlines things get thrown in, trying to improve things when upstreaming
  • WebDriver for Socket Remote Inspector
    • WebKitWebDriver Binary for GTK with our socket implementation
      • Can connect to device to control web view
    • WinCairo and Mac binary is also coming soon
      • Developers use either Windows or Mac
    • This was driven by internal QA requests
      • We are interested in WPT in longer term
  • Internal Build Infrastructure
    • BuildBot for internal WebKit Builds
      • Based on build.webkit.org config
      • Server hosted on AWS
      • Articfacts to S3
      • Tests running on device from containers
    • Docker containers for building PlayStation port
      • Built on top of Docker containers for Windows port
  • Plans for Next Year
    • Complete Upstreaming of Port
    • Improve WinCairo Build Bots and EWS
    • Turn on Public PlayStation Build Bots
    • Work towards a Single Windows Port

Q&A

  • Question on internal bot version
    • Running on 1.7 not 0.8
    • Wanted to keep python 2
    • Minor changes for version change